Spring MVC 기본 흐름을 나맘대로 정리해봤다.
HandlerAdapter
DispatcherServlet에서 Controller를 찾을 때 어떻게 찾아야 하는지 정의
1. Servlet과 SimpleServletHandlerAdapter
2. HttpRequestHandler와 HttpRequestHandlerAdapter
3. Controller와 SimpleControllerHandlerAdapter (기본)
4. AnnotationMethodHandlerAdapter (기본) - DefaultAnnotationHandlerMapping과 같이 사용됨
HandlerMapping
URL (혹은 요청)과 맵핑된 Controller을 어떻게 찾아야하는지 정의
(http://www.mungchung.com/xe/spring/21278)
1. BeanNameUrlHandlerMapping
2. ControllerBeanNameHandlerMapping
3. ControllerClassNameHandlerMapping
4. SimpleUrlHandlerMapping
5. DefaultAnnotationHandlerMapping
ViewResolver
Controller에서 반환한 ModelAndView를 가지고 View (jsp)를 찾을때 어떻게 찾아야하는지 정의
1. XmlViewResolver (jsp 경로를 xml로 설정함)
2. ResourceBundleViewResolver (jsp경로를 properties로 설정함)
3. UrlBasedViewResolver (view경로로 jsp 찾음)
4. InternalResourceViewResolver
5. VelocityViewResolver / FreeMarkerViewResolver
HandlerAdapter / HanderMapping / ViewResolver 을 보면 몇가지 적용방법들이 있는데
처음엔 뭐가뭔지 잘 모르고 왜이리 종류가 많을까 했는데 보다보니, 결국 이 종류들은 관계(URL과 컨트롤러, 컨트롤러와 View 등)를 맵핑할때
xml 설정으로 찾을래? 아니면 properties 로 설정할래? 아님 어노테이션 설정으로 찾을래? 아님 Bean 이름으로 찾을래? 등을 의미한다.
내용추가 :: 2013.09.25
위의 MVC 기본흐름에 대한 내용이 빈약한것 같아서 filter, HandlerInterceptor 이 추가된 그림을 첨부한다.
(출처 : http://www.cnblogs.com/fangwenyu/archive/2012/10/11/2716665.html)