donaricano-btn

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
블로그 이미지

리딩리드

,