스프링 MVC Handler, View 정리
1. Handler Adapter (Controller Type - HandlerAdapter)
1. View (View Interface를 구현한 클래스)
- 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);- 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
댓글
댓글 쓰기