공부 61

리다이렉트, 인터셉트

컨트롤러에서 뷰를 분기하는 방법과 컨트롤러 실행 전/후에 특정 작업을 가능하게 하는 방법에 대해서 학습한다. #리다이렉트 (지금의 페이지에서 특정 페이지로 전환하는 기능) 예를들어 클라이언트가 회원정보 수정 요청을하고 회원인증을 거쳐 회원정보 수정 페이지로 유도되야하는데 회원인증이 안되어있다면 메인 페이지(특정 페이지)로 유도하는 기능이다. #인터셉트 리다이렉트가 빈번하게 발생할 경우 굉장히 번거롭기때문에 아예 컨트롤러가 시작 전후로 인터셉트하여 먼저 검증한다. DispatcherServlet이후 HandlerInterceptor(인터페이스)가 가로첸다 HandlerInterceptor는 3개의 메소드로 구현될수있고 preHandle(), postHandle(), afterCompletion() 이 있다..

세션, 쿠키

세션과 쿠키는 클라이언트와 연결을 유지하는 방법이다 세션과 쿠키를 이용하여 클라이언트와 서버가 연결을 유지할 수 있다. # Connectionless Protocol 웹 서비스는 HTTP프로토콜을 기반으로 하는데, HTTP프로토콜은 클라이언트와 서버의 관계를 유지 하지 않는 특징이 있다. (사람과 사람이 통신할때 서로 이해할 수 있는 언어, 공용된 언어를 사용해 전세계 모든 사람과 대화 할수 있다라고 하면, 컴퓨터와 컴퓨터도 서로 이해 할 수 있는 언어, 공용된 언어를 사용 해야 한다는 것인데 이 것을 바로 프로토콜 이라고 한다) 클라이언트가 서버에 무언가를 요청하면 순간적으로 클라이언트와 서버가 연결이되어진다 연결된 순간에 요청한 무언가를 응답해주고 바로 연결을 해제한다. (이렇게 하는 이유는 서버에 ..

Controller 객체 구현 2.

# @ModelAttribute @ModelAttribute를 이용하면 커멘드 객체의 이름을 변경할 수 있고, 이렇게 변경된 이름은 뷰에서 커멘드 객체를 참조할 때 사용된다. 모델 어트리뷰터가 적용된 메서드는 어떤 메서드가 호출되어도 같이 나온다. 예)servertime(시간을 표기하여준다)을 가지고 모델 어트리뷰트를 적용해준다면 다른 메소드와 함께 시간이 표기된다 # 커맨드 객체 프로퍼티 데이터 타입 커맨드 객체에 들어오는 데이터는 원하는 데이터를 지정해주면 스프링 MVC프레임 워크가 알아서 적당히 데이터를 맞춰준다고 한다. 예를 들어 배열이 아닌것을 배열로 받고싶다 할때에 배열로 만들어두면 알아서 데이터를 맞춰 배열로 들어오게 해준다. # Model & ModelAndView 컨트롤러에서 뷰에 데이터..

Controller의 여러가지 기능들

스프링은 설정만 제대로 해준다면 기능구현은 그렇게 어렵지 않기때문에 처음 설정을 잘 해주도록 하자. # 다시 기억하기 1. 자바파일 밑에 컨트롤러,dao,서비스 객체 2. webapp의 resources/html파일에 웹 컴포넌트 파일 3. spring밑에는 spring설정파일 4. Views 밑에는 JSP 컴포넌트 파일 @RequestMapping RequestMapping 메핑 HTML페이지에서 여러 정보들을 받고 버튼을 누르는 순간 action에 있는 url을 찾아서 가는데 method="post" 방식으로 서버에 날아간다 HandlerMapping 빈이 알맞는 Controller을 찾고 HandlerAdapter가 알맞는 메서드를 찾아서 실행시켜준다. #value ,method → 보내는곳 @Re..

Service & Dao 객체 구현

회원 로그인하는 기능을 구현해보자 사용자요청 → 프론트 컨트롤러 → 컨트롤러 → 서비스 → DAO → Database ↓ 뷰 서비스와 Dao객체를 알아보자! 1. 프로젝트 만들기 레거시 프로젝트에 들어가 spring mvc project를 생성해준다. 2.한글처리 web.xml 파일에 들어가서 맨밑에 넣어준다( 위에 붙여넣어주면 된다) CharacterEncodingFilter org.springframework.web.filter.CharacterEncodingFilter encoding UTF-8 forceEncoding true CharacterEncodingFilter /* 3. 서비스 객체 구현 방법 1 : new 연산자를 이용한 service객체 생성 및 참조 MemberService serv..

스프링 MVC웹 서비스 2

1. java파일 : java파일들이 위치한다. 주로 패키지로 묶어서 관리한다. 웹 애플리 케이션에서 사용되는 Controller, Service, DAO객체들이 위치한다. 2. webapp : 웹과 관련된 파일들(스프링 설정파일, JSP파일, HTML파일 등..)이 위치한다. 3. resources : JSP파일을 제외한 html, css, js파일등이 위치한다. 4. spring폴더 : 스프링 컨테이너를 생성하기 위한 스프링 설정파일이 위치한다. 5. views 폴더 : View로 사용될 JSP파일이 위치한다. 6. pom.xml파일 : 메인 레파지토리에서 프로젝트에 필요한 라이브러리를 내려받 기 위한 메이븐 설정 파일 # web.xml 웹 어플리케이션에서 최초 사용자의 요청이 발생하면 가장먼저 Di..

스프링 MVC웹 서비스

# 아파치 다운로드 1. 아파치 톰켓 8.5버전을 다운로드한다 2. 이클립스와 연동하기위해 이클립스EE로 들어간다 3. window탭에 Show View 에 Other을 클릭후 server를 누르고 자기가 다운로드 받은 버전의 아파치를 누르고 next후에 브라우저에서 내가 아파치를 다운받은 경로를 지정해준후 피니쉬를 누른다 4. 서버에 약간에 설정이 필요한데 서버탭에서 다운받은 아파치를 더블클릭해준다 위의 사진과 같이 설정하면되는데 port name에 http가 8080이 디폴트값인데 이걸 8090으로 바꾸는 이유는 나중에 사용할 오라클이 오라클 내부적으로 http프로토콜에 포트번호가 8080이기때문에 두 프로그램이 부딪힐수 있어서 미리 방지하기 위해 바꿔주는 것이다. 그리고 서버탭에서 플레이(ctr +..

웹 프로그래밍 설계 모델

스프링 MVC 프레임워크 기반의 웹 프로그래밍 구조에 대한 학습 M : Model V : View C : Controller #웹 프로그래밍을 구축하기 위한 설계 모델 Model 1 클라이언트가 서버에 무언가를 요청했을때에 WAS(웹 어플리케이션 서버)에서 처리를 하고 데이터베이스에서 무언가에 대한 정보를 받아오고 다시 WAS에서 받아 UI처리 작업을 한 후에 다시 클라이언트에게 보내준다. 이 모든것을 나누지않고 하나의 파일로 처리하는것을 Moder 1 방식이라 한다 장점 : 하나의 파일 안에다 모든것을 짬뽕해서 넣기 때문에 개발속도가 빠르다 단점 : 유지보수가 힘들고 복잡도가 높아진다(알아보기가 힘들다) Model 2 클라이언트가 서버에 무언가를 요청했을때에 WAS에 Controller가 요청을 받아 ..

어노테이션을 이용한 스프링 설정 2.

Java 파일을 분리하여 관리하는 법을 알아보자 (기능별로 class를 나누어 관리하는 방법이라고 볼 수 있다) DTO, DAO, 서비스 관련 기능으로 보통 3가지 방법으로 나뉘어진다고 한다. MemberConfig1에는 dto MemberConfig2에는 dao MemberConfig3에는 서비스 관련 기능 으로 나누어 뒀다. 이때에 MemberConfig3에서 MemberConfig2에 메서드를 참조해야 하는데 사용할 수 있는 방법은 @Autowired(의존객체 자동 주입)를 사용할 수 있다 이제 이 클래스들을 사용하려면 스프링 컨테이너에 3개를 다 넣어야 하는데 이런 형식으로 넣어주면 된다. 위의 방법이 마음에 들지 않는다면 @Import({MemberConfig2.class, MemberConfi..

어노테이션을 이용한 스프링 설정방법 1.

스프링 설정파일 제작을 JAVA파일로 제작할 수 있는 방법에 대해서 알아보자. 1. class를 하나 만들어준다 2. @Configuration이라는 어노테이션을 사용하여주는데 클래스의 바깥쪽에 사용해준다 @Configuration public class Main{ } (스프링 컨테이너를 xml파일을 대신해 생성할 수 있어야한다는걸 명시해주는 어노테이션) 3.메소드를 만들어 사용한다 xml에서는 위와같이 빈 객체를 생성한다 그러나 java파일은 아래와 같이 메소드를 만들어야 한다. @Bean public StuderntDao studentDao(){ return new StudentDao(); } 메소드에 이름은 빈태그의 아이디 값과 같고 반환형은 객체의 데이터 타입과 같고 리턴타입은 xml태그와 동일한..

728x90