Your SlideShare is downloading. ×
Spring MVC
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Spring MVC

549
views

Published on

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

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

Published in: Software

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
549
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
17
Comments
0
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide
  • JEE가 제공하는 다수의 기능을 지원하고 있기 때문에 JEE를 대체하는 프레임워크로 자리잡고있습니다.
    IOC : 기존엔 개발자들이 New연산자, 인터페이스 호출 등의 방식으로 객체의 인스턴스를 생성함으로써 인스턴스 생성 방법에 대한 제어권을 가지고있었는데 IOC란 이 제어를 개발자가아닌 컨테이너에게 반환한다는 개념. 인스턴스의 생명주기를 개발자가 아닌 컨테이너가 관리한다.
    DI : 스프링은 설정 파일이나 어노테이션을 통해 객체간의 의존관계를 설정할 수 있다. 따라서 객체들간의 느슨한 결합을 유지하고 직접 의존하고 있는 객체를 굳이 생성하거나 검색할 필요성이 없어진다.
    AOP : 문제를 바라보는 관점을 기준으로 프로그래밍하는 기법. 문제를 해결하기 위한 핵심 사항과 전체에 적용되는 공통 사항을 기준으로 프로그래밍 함으로써 공통모듈을 여러 코드에 쉽게 적용할 수 있도록합니다.
    경량 컨테이너 : 스프링은 객체를 담고있는 컨테이너로써 자바 객체의 생성과 소멸과 같은 라이프사이클을 관리.
  • Spring 프레임워크는 위 그림에서 볼 수 있는 것과 같이 7개의 큰 부분으로 구성되어 있다.
    Spring Core
    는 Spring 프레임워크의 바탕이 되는 IoC(또는 DI) 기능을 지원하는 영역을 담당하고 있다. BeanFactory를 기반으로 Bean 클래스들을 제어할 수 있는 기능을 지원한다.
    Spring Context
    는 Spring Core 바로 위에 있으면서 Spring Core에서 지원하는 기능외에 추가적인 기능들과 개발을 좀 더 쉽게 할 수 있도록 지원하고 있습니다
    Spring DAO
    는 JDBC 기반의 DAO개발을 좀 더 쉽고, 일관된 방법으로 개발하는 것이 가능하도록 지원하고 있다..
    Spring ORM
    ORM : 관계형 데이터 베이스 테이블과 객체 사이의 Mapping을 처리해주는것. 쉽게, SQL 작성없이 간단한 매핑설정으로 DB테이블 데이터를 JAVA 객체로 전달받을 수 있는 것.
    은 Object Relation Mapping 프레임워크인 Hibernate, Ibatis 등과의 결합을 지원하기 위한 기능이다. Spring ORM을 이용할 경우 Hibernate, IBatis, 프레임워크와 쉽게 통합하는 것이 가능하다.
    Spring AOP
    는 Spring 프레임워크에 Aspect Oriented Programming을 지원하는 기능이다.
    Spring Web
    은 Web Application 개발에 필요한 Web Application Context와 Multipart Request등의 기능을 지원하고 struts와 같은 프레임워크의 통합을 지원하는 부분을 담당한다.
    Spring Web MVC는 Spring 프레임워크에서 Model-View-Controller를 지원하기 위한 기능이다. Struts가 담당했던 기능들을 Spring Web MVC를 이용하여 대체하는 것이 가능하다.
  • DispatcherServlet은 클라이언트의 요청을 받아 Controller를 검색하고 Controller의 처리 결과인 ModelAndView를 전달받아 View를 출력해주는 역할.
    기본적으로 /WEB-INF/ 디렉토리에 서블릿이름-servlet.xml 파일을 설정파일로 사용한다. 설정파일을 한 개 이상 사용하고 싶거나 특정 이름으로 설정해주고 싶은 경우 <init-param>태그로 contextConfigLocation을 설정해 준다. 설정 파일은 콤마, 공백문자, 줄바꿈, 탭, 세미콜론 중 하나로 구분한다. <servlet-mapping> : 클라이언트의 요청에 따라 <servlet-name> 이름의 서블릿을 호출하라는 의미.
    웹 컨테이너 시작 시 ContextLoaderListener 실행된다
    ApplicationContext 설정 : 서로 다른 DispatcherServlet이 공통 빈을 필요로 할 경우, ContextLoderListener를 사용하여 공통으로 사용될 빈을 설정. ContextLoderListener를 listener로 등록하고 contextConfigLocation의 컨텍스트 파라미터를 이용하여 공통으로 사용될 빈 정보를 담고 있는 설정 파일 목록을 지정.
    ContextLoderListener는 contextConfigLocation 컨텍스트 파라미터를 명시하지 않으면 /WEB-INF/applicationContext.xml을 설정파일로 사용하고 웹 어플리케이션이 시작할 때 자동으로 루트 어플리케이션 컨텍스트를 만들고 초기화해준다.
    ContextLoderListener가 생성하는 WebApplicationContext는 루트 컨텍스트이고 DispatcherServlet이 생성하는 WebApplicationContext는 루트 컨텍스트를 부모로 사용하는 자식 컨텍스트이다. 자식은 루트가 제공하는 빈을 사용할 수 있기 때문에 각각의 DispatcherServlet이 공통으로 사용하는 빈을 ContextLoderListener를 이용하여 설정.
  • 클래스에 스테레오 타입 어노테이션을 붙이면 해당 클래스가 컴포넌트 스캔의 대상이된다.
    Component : 기본 스트레오 타입.
    Controller : MVC에서 컨트롤러에 사용
    Service : 서비스 계층의 클래스에서 사용, 주로 Business Object에서 사용
    Repository : Data Access Object 에서 사용됨.
  • <context:component-scan/>은 자바 클래스 패키지를 스캐닝하여 스프링 어노테이션에 따라 적합하게 빈 정의와 관계를 설정하는 태그.
    기본적으로 base-package라는 속성에 명시된 패키지를 포함한 하위 패키지의 자바 클래스들을 스캐닝 하여 스테레오 타입 어노테이션이 적용된 클래스들을 검색하여 빈으로 자동 등록한다. 따라서 XML 설정 파일에 다양한 빈 정보를 추가하지 않아도 된다. Base-package 에 포함된 자바 클래스를 스캐닝하는데 있어서 필터링을 추가할 수 있다.
    Annotation : expression에 지정된 어노테이션이 클래스에 적용 되었는지 여부에 따라 포함/미포함
    Assignable : expression에 지정된 타입으로 클래스가 할당 가능한지의 여부
    Exclude-filter 타입으로 regex이 설정되어 있으므로 expression에 지정되어있는 정규식 표현식에 매칭되는 경우 스캔대상에서 제외.
  • Bean은 정의 할때 scope를 지정해 줄 수있다. 5가지의 scope를 제공한다.
  • Client의 요청이 DispatcherServlet에 전달.
    HandlerMapping에 클라이언트 요청을 처리할 컨트롤러 객체를 구함.
    Controller에 처리요청.
    Controller를 요청을 처리하고 처리 결과 정보를 담은 ModelAndView를 리턴. ViewResolver로부터 응답 실행 결과를 보여줄 뷰 객체를 구함. 뷰는 클라이언트에 전송할 응답을 생성.
  • HTTP 요청정보를 통해 이를 처리할 컨트롤러를 찾아주는 기능.
    BeanNameUrl : 디폴트.
  • DispatcherServlet은 이러한 HandlerMapping을 통해 컨트롤러를 찾아옵니다. 다음은 컨트롤러에 대해
  • Spring MVC가 지원하는 컨트롤러의 종류는 4가지이고 각 컨트롤러를 DispatcherServlet에 연결해 주는 어탭터가 하나씩 있어야 하므로 핸들러 어댑터도 4개이다. SimpleServletHandlerAdapter 를 제외한 3개의 핸들러 어댑터는 DispatcherServlet 에 디폴트 전략으로 설정되어 있다.
  • 핸들러 인터셉터는 DispatcherServlet 이 컨트롤러를 호출하기 전과 후에 요청과 응답을 참조하거나 가공할 수 있는 일종의 필터다. 서블릿 필터와 유사한 개념.
    핸들러 매핑은 DispatcherServlet 으로 부터 매핑 작업을 요청받으면 그 결과로 핸들러 실행 체인(HandlerExecutionChain) 을 돌려준다. 이 핸들러 실행 체인은 하나 이상의 핸들러 인터셉터를 거쳐서 컨트롤러가 실행될 수 있도록 구성되어 있다.
    핸들러 인터셉터를 전혀 등록해주지 않았다면 바로 컨트롤러가 실행된다. 반면에 하나 이상의 핸들러 인터셉터를 지정했다면 순서에 따라 인터셉터를 거친 후에 컨트롤러가 호출된다.
  • 핸들러 매핑이 URL로부터 컨트롤러를 찾아주는 것처럼 뷰이름으로부터 사용할 뷰 오브젝트를 찾아준다. ViewResolver 인터페이스를 구현해서 만들어진다.
  • 컨트롤러의 작업 중에 발생한 예외를 어떻게 처리할 지 결정한다.
    HandlerExceptionResolver가 등록된 경우 Exception이 발생하면 DispatcherServlet은 해당 Exception을 처리할 수 있는지 확인한다. 만약 Exception응ㄹㅇ 처리해주는 리졸버가 있으면 exception은 리졸버가 처리한다.
    resolveException() 메소드의 리턴타입은 ModelAndView이다. 예외에 따라서 사용할 뷰와 그안에 들어갈 내용을 담은 모델을 돌려주도록 되어있다.
    AnnotationMathodHandler :
  • Transcript

    • 1. ㈜유미테크 Spring MVC ( 엔터프라이즈 어플리케이션에서 제공하는 프레임워크 )
    • 2. ㈜유미테크2㈜유미테크 SiteMesh 목차 1. Spring Framework 소개 2. 개발 환경과 Spring Project 생성 3. Spring beans & context 소개 (DispatcherServlet) 4. Spring MVC 소개 5. 핸들러매핑 6. 컨트롤러 7. 핸들러 인터셉터 8. ViewResolver 9. View 10.예외처리
    • 3. ㈜유미테크3㈜유미테크 SiteMesh 1. Spring Framework 소개 1. Spring Framework 란 ? 엔터프라이즈 어플리케이션에서 필요로 하는 기능을 제공하는 프레임 워크 2. Spring Framework 특징 1. IoC (Inversion of Control) 2. DI (Dependency Injection 3. AOP (Aspect Oriented Programming) 4. 경량 컨테이너
    • 4. ㈜유미테크4㈜유미테크 SiteMesh 3. Spring Framework 기본 구성 Spring AOP Spring AOP Spring ORMSpring ORM Spring ContextSpring Context Spring WebSpring Web Spring DAOSpring DAO Spring Web MVC Spring Web MVC Spring CoreSpring Core 1. Spring Framework 소개
    • 5. ㈜유미테크5㈜유미테크 SiteMesh 2. 개발 환경과 Spring Project 생성 1. eclipse 2. Spring Tool Suite : juno -> /Collaboration/m2e plug-in 설치
    • 6. ㈜유미테크6㈜유미테크 SiteMesh 2. 개발 환경과 Spring Project 생성
    • 7. ㈜유미테크7㈜유미테크 SiteMesh 2. 개발 환경과 Spring Project 생성
    • 8. ㈜유미테크8㈜유미테크 SiteMesh 3. Spring beans & context 소개 1.web.xml ApplicationContext 설정 DispatcherServlet 설정
    • 9. ㈜유미테크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
    • 10. ㈜유미테크10㈜유미테크 SiteMesh 3. Spring beans & context 소개 2. DispatcherServlet 의 기본 DI 전략 • ViewResolver - 컨트롤러가 리턴한 뷰 이름을 참고해서 적절한 뷰 오브젝트를 찾아준다 . - Default : InternalResourceViewResolver • RequestToViewNameTranslator - 컨트롤러에서 뷰 이름이나 뷰 오브젝트를 제공해주지 않았을 경 우 뷰 이름을 생성해준다 . - Default : DefaultRequestToViewNameTranslator • LocaleResolver - locale 정보를 결정해준다 . - Default : AcceptHeaderLocalResolver • ThemeResolver - 테마를 가지고 사이트를 구성할 경우 테마 정보를 결정해 준다 .
    • 11. ㈜유미테크11㈜유미테크 SiteMesh 3. Spring beans & context 소개 3. bean 생성 1. xml 설정 파일로 bean 생성 2. annotation 을 이용한 bean 생성 • Stereotype annotation : @Component, @Controller, @Service, @Repository.. • 빈 이름을 특정 이름으로 설정 • 클래스의 이름 (homeController) 을 빈 이름으로 사용
    • 12. ㈜유미테크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 의 표현식에 매칭되는지의 여부
    • 13. ㈜유미테크13㈜유미테크 SiteMesh 4. bean Scope • singleton : 객체를 한번만 생성 • prototype : 필요한 매 순간 새로운 객체를 생성 • request : 하나의 웹 요청 안에서 생성 , 해당 요청이 끝날 때 제거 • session : HTTP session 과 같은 존재 범위를 갖는 객체 생성 • Global session 설정 방법 - 설정 파일에서 bean 등록하는 경우 - annotation 으로 bean 등록하는 경우 3. Spring beans & context 소개
    • 14. ㈜유미테크14㈜유미테크 SiteMesh 4. Spring MVC 소개 1. 스프링 MVC 의 처리 흐름 . Client Dispatcher Servlet Handler Mapping Controller ViewResolver View ModelAndView 1. 처리요청 (URL) 2. 요청 URL 과 매핑되는 Controller 검색 3. 처리요청 4. ModelAndView 지원 5. Controller 의 실행결과를 보여줄 View 검색 6.응 답 출 력
    • 15. ㈜유미테크15㈜유미테크 SiteMesh 5. 핸들러 매핑 Client Dispatcher Servlet Handler Mapping Controller ViewResolver View ModelAndView 1. 처리요청 (URL) 2. 요청 URL 과 매핑되는 Controller 검색 3. 처리요청 4. ModelAndView 지원 5. Controller 의 실행결과를 보여줄 View 검색 6.응 답 출 력
    • 16. ㈜유미테크16㈜유미테크 SiteMesh 5. 핸들러 매핑 • BeanNameUrlHandlerMapping : bean 의 name 속성에 있는 URL 을 HTTP 요청의 URL 과 비교해서 일치하는 bean 을 찾아준다 . • ControllerBeanNameHandlerMapping : bean 의 id 나 name 을 이용해서 매핑한다 . • ControllerClassNameHandlerMapping : 클래스 이름을 URL 에 매핑한다 .
    • 17. ㈜유미테크17㈜유미테크 SiteMesh • SimpleUrlHandlerMapping : URL 과 컨트롤러의 매핑정보를 한 곳에 모아 놓을 수 있는 핸들러 매핑 • DefaultAnnotationHandlerMapping : @RequestMapping 어노테이션을 이용한 매핑 5. 핸들러 매핑
    • 18. ㈜유미테크18㈜유미테크 SiteMesh Client Dispatcher Servlet Handler Mapping Controller ViewResolver View ModelAndView 1. 처리요청 (URL) 2. 요청 URL 과 매핑되는 Controller 검색 3. 처리요청 4. ModelAndView 지원 5. Controller 의 실행결과를 보여줄 View 검색 6.응 답 출 력 6. 컨트롤러
    • 19. ㈜유미테크19㈜유미테크 SiteMesh 6. 컨트롤러 1. 컨트롤러의 종류와 핸들러 어댑터 • Servlet 과 SimpleServletHandlerAdapter - javax.servlet.Servlet 을 구현한 Servlet Class 를 Spring MVC 의 Controller 로 사용 . • HttpRequestHandler 와 HttpRequestHandlerAdapter • Controller 와 SimpleControllerHandlerAdapter
    • 20. ㈜유미테크20㈜유미테크 SiteMesh • AnnotationMethodHandlerAdapter : Controller 의 타입이 정해져 있지 않다 . 6. 컨트롤러
    • 21. ㈜유미테크21㈜유미테크 SiteMesh 2. @Controller 를 적용한 경우의 파라미터 종류 @PathVariable : @RequestMapping 의 URL 에 { } 로 들어가는 패스 변수를 받는다 . @RequestParam : HTTP 요청 파라미터를 메소드 파라미터에 넣어 준 다 Map, Model, ModelMap 6. 컨트롤러
    • 22. ㈜유미테크22㈜유미테크 SiteMesh • String - 뷰 이름으로 사용된다 . • Void - RequestToViewNameResolver 를 통해 자동 생성되는 뷰 이름이 사용된다 . 3. @Controller 를 적용한 경우의 리턴 타입 종류 6. 컨트롤러
    • 23. ㈜유미테크23㈜유미테크 SiteMesh • ModelAndView - 컨트롤러가 리턴해야하는 정보를 담고 있는 가장 대표적인 타입 . • @ResponseBody - 리턴되는 값이 View 를 통해 출력되지 않고 HTTP Response Body 에 직접 쓰여진다 . 6. 컨트롤러
    • 24. ㈜유미테크24㈜유미테크 SiteMesh 7. 핸들러 인터셉터 • HandlerInterceptor interface • HandlerInterceptor 등록
    • 25. ㈜유미테크25㈜유미테크 SiteMesh Client Dispatcher Servlet Handler Mapping Controller ViewResolver View ModelAndView 1. 처리요청 (URL) 2. 요청 URL 과 매핑되는 Controller 검색 3. 처리요청 4. ModelAndView 지원 5. Controller 의 실행결과를 보여줄 View 검색 6.응 답 출 력 8. ViewResolver
    • 26. ㈜유미테크26㈜유미테크 SiteMesh 8. ViewResolver • InternalResourceViewResolver : default, 주로 JSP 를 뷰로 사용하고자 할 때 쓰인다 • ResourceBundleViewResolver : 클래스 패스의 views.properties 파일을 사용한다 . - views.properties - servlet-context.xml - Controller
    • 27. ㈜유미테크27㈜유미테크 SiteMesh • XmlViewResolver : ResourceBundleViewResolver 와 유사 . 프로퍼티 파일 대신 XML 의 빈 설 정파일을 이용해 뷰를 등록 • BeanNameViewResolver : 뷰 이름과 동일한 빈 이름을 가진 빈을 찾아서 뷰로 사용 8. ViewResolver
    • 28. ㈜유미테크28㈜유미테크 SiteMesh Client Dispatcher Servlet Handler Mapping Controller ViewResolver View ModelAndView 1. 처리요청 (URL) 2. 요청 URL 과 매핑되는 Controller 검색 3. 처리요청 4. ModelAndView 지원 5. Controller 의 실행결과를 보여줄 View 검색 6.응 답 출 력 9. View
    • 29. ㈜유미테크29㈜유미테크 SiteMesh 9. View • InternalResourceView : RequestDispatcher 의 forward() 를 이용하는 뷰 • RedirectView : HttpServletResponse 의 sendRedirect() 를 호출해주는 기능을 가진 뷰
    • 30. ㈜유미테크30㈜유미테크 SiteMesh 10. 예외 처리 (HandlerExceptionResolver) • HandlerExceptionResovler Interface • AnnotationMethodHandlerExceptionResolver : @ExceptionHandler 어노테이션이 붙은 메소드를 찾는다 . • SimpleMappingExceptionResolver : 예외를 처리할 뷰를 지정할 수 있게 해준다 • DefaultHandlerExceptionResolver