30
㈜㈜㈜㈜㈜ Spring MVC ( 엔엔엔엔엔엔 엔엔엔엔엔엔엔엔 엔엔엔엔 엔엔엔엔엔 )

Spring MVC

  • Upload
    ymtech

  • View
    690

  • Download
    4

Embed Size (px)

DESCRIPTION

Spring MVC : 엔터프라이즈 어플리케이션에서 필요로 하는 기능을 제공하는 프레임워크

Citation preview

Page 1: Spring MVC

㈜유미테크

Spring MVC( 엔터프라이즈 어플리케이션에서 제공하는

프레임워크 )

Page 2: Spring MVC

㈜유미테크2 ㈜유미테크 SiteMesh

목차 1. Spring Framework 소개2. 개발 환경과 Spring Project 생성3. Spring beans & context 소개 (DispatcherServlet)4. Spring MVC 소개 5. 핸들러매핑6. 컨트롤러7. 핸들러 인터셉터8. ViewResolver9. View10.예외처리

Page 3: Spring MVC

㈜유미테크3 ㈜유미테크 SiteMesh

1. Spring Framework 소개

1. Spring Framework 란 ?엔터프라이즈 어플리케이션에서 필요로 하는 기능을 제공하는 프레임워크

2. Spring Framework 특징1. IoC (Inversion of Control) 2. DI (Dependency Injection3. AOP (Aspect Oriented Programming)4. 경량 컨테이너

Page 4: Spring MVC

㈜유미테크4 ㈜유미테크 SiteMesh

3. Spring Framework 기본 구성

SpringAOP

SpringAOP

Spring ORMSpring ORM

Spring ContextSpring Context

Spring WebSpring Web

Spring DAOSpring DAO

Spring Web MVCSpring

Web MVC

Spring CoreSpring Core

1. Spring Framework 소개

Page 5: Spring MVC

㈜유미테크5 ㈜유미테크 SiteMesh

2. 개발 환경과 Spring Project 생성1. eclipse 2. Spring Tool Suite : juno -> /Collaboration/m2e

plug-in 설치

Page 6: Spring MVC

㈜유미테크6 ㈜유미테크 SiteMesh

2. 개발 환경과 Spring Project 생성

Page 7: Spring MVC

㈜유미테크7 ㈜유미테크 SiteMesh

2. 개발 환경과 Spring Project 생성

Page 8: Spring MVC

㈜유미테크8 ㈜유미테크 SiteMesh

3. Spring beans & context 소개1.web.xml

ApplicationContext 설정

DispatcherServlet 설정

Page 9: Spring MVC

㈜유미테크9 ㈜유미테크 SiteMesh

3. Spring beans & context 소개

2. DispatcherServlet 의 기본 DI 전략• HanlderMapping

- 요청정보를 기준으로 어떤 컨트롤러를 사용할 것인지를 결정하는 로직을 담당한다- Default : BeanNameHandlerMapping, DafaultAnnotationHandlerMapping

• HandlerAdapter- HandlerMapping 으로 선택한 컨트롤러를 DispatcherServlet 이 호출할때 사용하는 어댑터이다 .

- Default : HttpRequestHandlerAdapter, SimpleControllerHandlerAdapter,AnnotationMethodHandlerAdapter

• HandlerExceptionResolver- 컨트롤러의 작업 중에 발생한 예외를 어떻게 처리할지 결정한다 .- Default : AnnotationMethodHandlerExceptionResolver,

ResponseStatusExceptionResolver, DafaultHandlerExceptionResolver

Page 10: Spring MVC

㈜유미테크10 ㈜유미테크 SiteMesh

3. Spring beans & context 소개

2. DispatcherServlet 의 기본 DI 전략• ViewResolver

- 컨트롤러가 리턴한 뷰 이름을 참고해서 적절한 뷰 오브젝트를 찾아준다 .- Default : InternalResourceViewResolver

• RequestToViewNameTranslator- 컨트롤러에서 뷰 이름이나 뷰 오브젝트를 제공해주지 않았을 경우 뷰 이름을 생성해준다 .- Default : DefaultRequestToViewNameTranslator

• LocaleResolver- locale 정보를 결정해준다 .- Default : AcceptHeaderLocalResolver

• ThemeResolver- 테마를 가지고 사이트를 구성할 경우 테마 정보를 결정해 준다 .

Page 11: Spring MVC

㈜유미테크11 ㈜유미테크 SiteMesh

3. Spring beans & context 소개

3. bean 생성1. xml 설정 파일로 bean 생성

2. annotation 을 이용한 bean 생성• Stereotype annotation :

@Component, @Controller, @Service, @Repository..

• 빈 이름을 특정 이름으로 설정

• 클래스의 이름 (homeController) 을 빈 이름으로 사용

Page 12: Spring MVC

㈜유미테크12 ㈜유미테크 SiteMesh

3. Spring beans & context 소개

• annotation 을 이용한 bean 생성- 설정 파일 : servlet-context.xml

- 해당 패키지에서 어노테이션이 적용된 클래스를 검색하여 빈으로 자동 등록 .- 스캔 대상 클래스 범위 지정

<context:include-filter type=“” expression=“”/> <context:exclude-filter type=“” expression=“”/>

annotation : 클래스에 지정한 어노테이션이 적용 되었는지의 여부(expression ( 예 ) org.springframework.stereotype.Controller )

assignable : 클래스가 지정한 타입으로 할당 가능한지의 여부regex : 클래스 이름이 정규 표현식에 매칭되는지의 여부aspectj : 클래스 이름이 AspectJ 의 표현식에 매칭되는지의 여부

Page 13: Spring MVC

㈜유미테크13 ㈜유미테크 SiteMesh

4. bean Scope• singleton : 객체를 한번만 생성 • prototype

: 필요한 매 순간 새로운 객체를 생성• request

: 하나의 웹 요청 안에서 생성 , 해당 요청이 끝날 때 제거• session

: HTTP session 과 같은 존재 범위를 갖는 객체 생성• Global session

설정 방법- 설정 파일에서 bean 등록하는 경우

- annotation 으로 bean 등록하는 경우

3. Spring beans & context 소개

Page 14: Spring MVC

㈜유미테크14 ㈜유미테크 SiteMesh

4. Spring MVC 소개1. 스프링 MVC의 처리 흐름 .

ClientDispatcher

Servlet

HandlerMapping

Controller

ViewResolverView

ModelAndView

1. 처리요청(URL)

2. 요청 URL

과 매핑되는

Contro

ller 검색

3. 처리요청

4. ModelAndView 지원5. Controller의 실행결과를

보여줄 View 검색

6. 응답 출

Page 15: Spring MVC

㈜유미테크15 ㈜유미테크 SiteMesh

5. 핸들러 매핑

ClientDispatcher

Servlet

HandlerMapping

Controller

ViewResolverView

ModelAndView

1. 처리요청(URL)

2. 요청 URL 과 매핑되는

Controller 검색

3. 처리요청

4. ModelAndView 지원5. Controller 의 실행결과를

보여줄 View 검색

6. 응답

출력

Page 16: Spring MVC

㈜유미테크16 ㈜유미테크 SiteMesh

5. 핸들러 매핑• BeanNameUrlHandlerMapping

: bean 의 name 속성에 있는 URL 을 HTTP 요청의 URL 과 비교해서 일치하는 bean 을 찾아준다 .

• ControllerBeanNameHandlerMapping: bean 의 id 나 name 을 이용해서 매핑한다 .

• ControllerClassNameHandlerMapping: 클래스 이름을 URL 에 매핑한다 .

Page 17: Spring MVC

㈜유미테크17 ㈜유미테크 SiteMesh

• SimpleUrlHandlerMapping : URL 과 컨트롤러의 매핑정보를 한 곳에 모아 놓을 수 있는 핸들러 매핑

• DefaultAnnotationHandlerMapping: @RequestMapping 어노테이션을 이용한 매핑

5. 핸들러 매핑

Page 18: Spring MVC

㈜유미테크18 ㈜유미테크 SiteMesh

ClientDispatcher

Servlet

HandlerMapping

Controller

ViewResolverView

ModelAndView

1. 처리요청(URL)

2. 요청 URL 과 매핑되는

Controller 검색

3. 처리요청

4. ModelAndView 지원5. Controller 의 실행결과를

보여줄 View 검색

6. 응답

출력

6. 컨트롤러

Page 19: Spring MVC

㈜유미테크19 ㈜유미테크 SiteMesh

6. 컨트롤러1. 컨트롤러의 종류와 핸들러 어댑터

• Servlet 과 SimpleServletHandlerAdapter- javax.servlet.Servlet 을 구현한 Servlet Class 를 Spring MVC 의 Controller 로 사용 .

• HttpRequestHandler 와 HttpRequestHandlerAdapter

• Controller 와 SimpleControllerHandlerAdapter

Page 20: Spring MVC

㈜유미테크20 ㈜유미테크 SiteMesh

• AnnotationMethodHandlerAdapter: Controller 의 타입이 정해져 있지 않다 .

6. 컨트롤러

Page 21: Spring MVC

㈜유미테크21 ㈜유미테크 SiteMesh

2. @Controller 를 적용한 경우의 파라미터 종류@PathVariable : @RequestMapping 의 URL 에 { } 로 들어가는 패스변수를 받는다 .

@RequestParam : HTTP 요청 파라미터를 메소드 파라미터에 넣어 준다

Map, Model, ModelMap

6. 컨트롤러

Page 22: Spring MVC

㈜유미테크22 ㈜유미테크 SiteMesh

• String- 뷰 이름으로 사용된다 .

• Void- RequestToViewNameResolver 를 통해 자동 생성되는 뷰 이름이 사용된다 .

3. @Controller 를 적용한 경우의 리턴 타입 종류

6. 컨트롤러

Page 23: Spring MVC

㈜유미테크23 ㈜유미테크 SiteMesh

• ModelAndView- 컨트롤러가 리턴해야하는 정보를 담고 있는 가장 대표적인 타입 .

• @ResponseBody- 리턴되는 값이 View 를 통해 출력되지 않고 HTTP Response Body에 직접 쓰여진다 .

6. 컨트롤러

Page 24: Spring MVC

㈜유미테크24 ㈜유미테크 SiteMesh

7. 핸들러 인터셉터• HandlerInterceptor interface

• HandlerInterceptor 등록

Page 25: Spring MVC

㈜유미테크25 ㈜유미테크 SiteMesh

ClientDispatcher

Servlet

HandlerMapping

Controller

ViewResolverView

ModelAndView

1. 처리요청(URL)

2. 요청 URL 과 매핑되는

Controller 검색

3. 처리요청

4. ModelAndView 지원5. Controller 의 실행결과를

보여줄 View 검색

6. 응답

출력

8. ViewResolver

Page 26: Spring MVC

㈜유미테크26 ㈜유미테크 SiteMesh

8. ViewResolver• InternalResourceViewResolver

: default, 주로 JSP 를 뷰로 사용하고자 할 때 쓰인다

• ResourceBundleViewResolver: 클래스 패스의 views.properties 파일을 사용한다 .- views.properties

- servlet-context.xml

- Controller

Page 27: Spring MVC

㈜유미테크27 ㈜유미테크 SiteMesh

• XmlViewResolver: ResourceBundleViewResolver 와 유사 . 프로퍼티 파일 대신 XML 의 빈 설정파일을 이용해 뷰를 등록

• BeanNameViewResolver: 뷰 이름과 동일한 빈 이름을 가진 빈을 찾아서 뷰로 사용

8. ViewResolver

Page 28: Spring MVC

㈜유미테크28 ㈜유미테크 SiteMesh

ClientDispatcher

Servlet

HandlerMapping

Controller

ViewResolverView

ModelAndView

1. 처리요청(URL)

2. 요청 URL 과 매핑되는

Controller 검색

3. 처리요청

4. ModelAndView 지원5. Controller 의 실행결과를

보여줄 View 검색

6. 응답

출력

9. View

Page 29: Spring MVC

㈜유미테크29 ㈜유미테크 SiteMesh

9. View• InternalResourceView

: RequestDispatcher 의 forward() 를 이용하는 뷰

• RedirectView: HttpServletResponse 의 sendRedirect() 를 호출해주는 기능을 가진 뷰

Page 30: Spring MVC

㈜유미테크30 ㈜유미테크 SiteMesh

10. 예외 처리 (HandlerExceptionResolver)• HandlerExceptionResovler Interface

• AnnotationMethodHandlerExceptionResolver: @ExceptionHandler 어노테이션이 붙은 메소드를 찾는다 .

• SimpleMappingExceptionResolver: 예외를 처리할 뷰를 지정할 수 있게 해준다

• DefaultHandlerExceptionResolver