PresentationLayer_1
1. 스프링 MVC
1_1. MVC설계
- 클래스 별로 약한 결합으로 되어있다
- 모델-뷰-컨트롤러뿐만 아니라 스프링 MVC가 제공하는 기능은 독립적이고 약한 결합니다
1_2. 애노테이션 도입
- 스프링 1.0에서는 컨트롤러 클래스를 만들때 컨트롤러 인터페이스를 만들어야 했다
- 지금은 컨트롤러 클래스에 @Controller 애노테이션만 선언 하면된다
- URL과 실행할 메소드의 메핑도 @RequestMapping 이면 된다
1_3. 스프링 MVC와 REST
1) REST
- Representational State Transfer, 웹 어플리케이션을 구현하는 방법의 하나
- 웹상의 정보를 하나하나 리소스로 파악하고 그 식별자로서 URI를 할당해 고유하게 특정할 수 있게 한다
Example
- foo.bar.baz 도메인으로 복수의 사용자 정보를 관리
- 사용자 정보에 uri로 http://foo.bar.baz/user/{사용자id}를 할당해 각 사용자를 특정하게 관리
REST의 특징은 리소스 접근 방식이다
- REST로 리소스 접근시 HTTP프로토콜로 정의된 HTTP 메소드를 충실하게 사용한다
Example
- 아이디가 1인 사용자는 GET메소드로 접근
- 아이디가 2인 사용자는 POST로 접근
REST 웹 어플리케이션을 구축에 필요한 MVC 프레임워크는 기능
a. URL을 자유롭게 결정할 수 있다
b. HTTP 메소드에 따라 실행할 처리를 전환할 수 있다
c. URL일부를 쉽게 추출해 사용할 수 있다
- 스프링MVC는 REST의 사고의 강하게 영향 받았다
1_4. 스프링 MVC의 요소
1) 동작 개요
역할
a. DispatcherServlet
- 프론트 컨트롤러를 담당
- 모든 HTTP 요청을 받아 들여 그 밖의 오브젝트 사이의 흐름 제어
b. HandlerMapping
- 클라이언트 요청을 바탕으로 어느 컨트롤러를 실행 할지 결정
- 애노테이션 이용시 mvc:annotation-driven 태그를 설정하여 RequestMappingHandlerMapping 클래스가 적용됨
c. Model
- 컨트롤러에서 뷰로 넘겨줄 오브젝트를 저장하기 위한 오브젝트
- HttpServletRequest와 HttpSession처럼 String키와 오브젝트를 연결하여 오브젝트 유지
d. View
- 뷰에 화면표시 처리 의뢰
e. Business
- 비즈니스 처리
f. Controller
- 클라이언트 요청에 맞는 프레젠테이션 층의 애플리케이션 처리
g. 뷰
- 화면표시
흐름
a. 요청받기
- DispatcherServlet은 브라우저로부터 요청을 받는다
b. 컨트롤러 오브젝트 얻기와 메소드 실행
- DispatcherServlet은 요청된 url을 핸들러매핑 오브젝트에 넘기고 호출 대상의 컨트롤러 오브젝트를 얻어 url에 해당하는 메소드 실행
c. 비즈니스로직처리와 그 결과를 뷰에 넘기기 위해 Model 오브젝트에 저장
- 컨트롤러 오브젝트는 비즈니스 로직 처리를 실행하고, 결과를 바탕으로 뷰에 전달할 오브젝트를 Model 오브젝트에 저장한다, 끝으로 컨트롤러 오브젝트는 처리 결과에 맞는 View이름을 반환한다
d. View오브젝트 얻기
- DispatcherServlet은 컨트롤러에서 반환된 View 이름을 뷰 리졸버에 전달 해서 View 오브젝트를 얻는다
e. 뷰 호출 및 화면 표시 의뢰
- View 오브젝트는 해당하는 뷰를 호출해서 화면 표시 의뢰
f. 화면 표시 처리 실행
- 뷰는 Model 오브젝트에서 화면 표시에 필요한 오브젝트를 가져와 화면 표시 처리 실행
컨트롤러의 개요와 Model 오브젝트
- Model 은 스프링 MVC의 Model 오브젝트이다
- Model 오브젝트는 서블릿 API에서 말하는 HttpServletRequest나 HttpSession과 같다
View와 뷰리졸버
- 스프링MVC에서는 View인터페이스를 구현한 View 오브젝트가 애플리케이션 개발자가 작성한 뷰를 호출해서 화면에 표시함
- JSTL이라면 JstlView 클래스의 오브젝트, Velocity라면 VelocityView클래스 오브젝트가 담당
- 컨트롤러와 뷰 사이의 독립성을 유지하기 위해 뷰 리졸버 오브젝트를 사이에 둔다
- 컨트롤러는 뷰가 어떤 뷰 기술을 쓰든 신경쓸 필요가 없다
UrlBasedViewResolver 와 뷰 경로
- 뷰 리졸버에서 가장 자주 사용되는 것이 UrlBasedViewResolver이다
- 설정
접두사 : /WEB-INF/views/
접미사: .jsp
'Back-End > SpringFrame_1' 카테고리의 다른 글
[Spring] @RequestMapping 애노테이션 속성 (0) | 2016.08.22 |
---|---|
[Spring] PresentationLayer_Function of Spring (0) | 2016.08.16 |
[Spring] BusinessLayer_2 (0) | 2016.08.07 |
[Spring]BusinessLayer_1 (0) | 2016.08.01 |
[Spring] DataAccessLayer_2 (0) | 2016.07.31 |