스프링 MVC Handler, View 정리

1. Handler Adapter (Controller Type - HandlerAdapter)
  • Servlet - SimpleServletHandlerAdapter
  • [Default] HttpRequestHandler - HttpRequestHandlerAdapter
  • [Default] Controller(AbstractController를 상속하여 사용해라) - SimpleControllerHandlerAdapter 
  • [Default] <?> - AnnotationMethodHandlerAdapter
2. Handler Mapping
      공통설정 정보 - order, defaultHandler(매핑을 찾지 못했을 경우 호출되는 Controller)
  • [Default] BeanNameUrlHandlerMapping - Ex ) <bean name="URL Pattern" class="~Controller" />
  • ControllerBeanNameHandlerMapping - Bean name과 id로 URL 매핑, Prefix, Sufix 적용 가능
  • ControllerClassNameHandlerMapping - Public class HelloController implement Controller { ... } : /hello URL과 매핑
  • SimpleUrlHandlerMapping - properties 타입으로 url과 Controller를 쌍으로 등록
  • [Default] DefaultAnnotationHandlerMapping - @RequestMapping
3. Handler Intercepter
     서블릿 필터와 유사한 개념
     - Handler Mapping 에 등록 하여 사용
Default Handler Mapping 을 사용한다면?
<mvc:interceptors>
        <mvc:interceptor>
            <mapping path="/*"/>
            <beans:bean class="com.mungchung.sample.HandlerInterceptorTest" />
        </mvc:interceptor>
    </mvc:interceptors>




1. View (View Interface를 구현한 클래스)
  • InternalResouceView 과 그의 서브 클래스 JstlView
    • RequestDispather의 forword나 include를 사용하는 뷰 (forward(), include()는 다른 서블릿을 실행해서 그결과를 현재 서블릿의 결과로 사용하거난 추가한다.)

    • req.setAttribut("message", msssage);
      req.getRequestDispatcher("/WEB-INF/view/hello.jsp").forword(req, res);
      결국 foward을 해서 JSP를 실행 하고 이를 뷰로 가지고 있다는 말?
    • JstlView
      • 지역화 메세지 출력시 사용
  • RedirectView : new RedirectView("/main", true);  2번째 파라미터는 상대 경로 여부
  • VelocityView, FreeMakerView (Template 엔진을 이용한 뷰, 단독 동작하므로 단위 테스트시 유리)
  • MarshallingView : application/xml 타입의 XML 컨텐츠 작성할때 사용
  • AbstactExcelView, AbstractJExcelView, AbstractPdfView
  • AbstractAtomFeedView, AbstractRssFeedView : application/atom+xml, application/rss+xml 타입의 문서를 생성해 주는 뷰
  • XsltView, TilesView, AbstractJsaperReportView(리포트 작성용)
  • MappingJacksonJsonView
2. ViewResolver : 뷰 이름을 뷰 오브젝트로 변경
  •  [Default] InternalResourceViewResolver : jstl 라이브러리가 존제하면 JstlView 사용 없으면 InternalResourceView 사용
  • VelocidtViewResolver, FreeMakerViewResolver
  • ResourceBundleViewResolver,XmlViewResolver,BeanNameViewResolver : 컨트롤러마다 뷰의 종류가 달라 질 경우 사용 (대개 order를 줘서 먼저 체크하고, 다음에 다른 ViewSolver와 같이 사용)
  • ContentNegotiatingViewResolver - 뷰리졸버를 결정해주는 리졸버 , 미디어 타입 정보를 활용하여 다른 뷰 리졸버에게 뷰를 찾도록 위임한 후에 가장 적절한 뷰를 선정해서 돌려 준다.
    • 결정 방법
      • URL 확장자
      • format parameter
      • Accept 헤더 (ignoreAcceptHeader = false로 설정)
      • DefaultContentType

댓글

이 블로그의 인기 게시물

Spring Batch - JobParameters Default Value 만들기

Hsqldb Server 재기동 시 오류