1、SpringMVC 組件類有哪些?
在了解Spring MVC各組件之前,我們先來看一下Spring MVC框架結構:
從上圖我們可以看到, Spring MVC主要包括:
1. 前端控制器組件(DispatcherServlet)
2. 處理器組件(Controller)
3. 處理器映射器組件(HandlerMapping)
4. 處理器適配器組件(HandlerAdapter)
5. 攔截器組件(HandlerInterceptor)
6. 視圖解析器組件(ViewResolver)
7. 視圖組件(View)
8. 數據轉換組件(DataBinder)
9. 消息轉換器組件(HttpMessageConverter)
整個處理過程從一個HTTP請求開始:
1、可發發起HTTP請求
2、DispatcherServlet接收到請求后,根據對應配置文件中配置的處理器映射,找到對應的處理器映射項(HandlerMapping、HandlerExecutionChain),根據配置的映射規則,找到對應的處理器(Handler)和攔截器
3、調用相應處理器處理器適配器
4、轉換消息和數據,執行響應攔截器處理方法
5、調用相應處理器(Handler, 即Controller類)中的處理方法,處理該請求,處理器處理結束后會將一個ModelAndView類型的數據傳給DispatcherServlet,這其中包含了處理結果的視圖和視圖中要使用的數據
6、DispatcherServlet根據得到的ModelAndView中的視圖對象,找到一個合適的ViewResolver(視圖解析器)
7、根據視圖解析器的配置,DispatcherServlet將視圖要顯示的數據傳給對應的視圖
8、最后給瀏覽器構造一個HTTP響應。
1.1. 前端控制器組件(DispatcherServlet)
1.2. 處理器映射器組件處理器組件(Controller)
由於我們使用了@Controller注解,添加了@Controller注解注解的類就可以擔任控制器(Action)的職責。
1.3. 處理器映射器組件(HandlerMapping)
SimpleUrlHandlerMapping 通過配置文件,把一個URL映射到Controller
DefaultAnnotationHandlerMapping 通過注解,把一個URL映射到Controller類上
1.4. 處理器適配器組件(HandlerAdapter)
AnnotationMethodHandlerAdapter類,通過注解,把一個URL映射到Controller類的方法上
1.5. 攔截器組件(HandlerInterceptor)
1.6.視圖解析器組件(ViewResolver)
UrlBasedViewResolver類 通過配置文件,把一個視圖名交給到一個View來處理
InternalResourceViewResolver類,比上面的類,加入了JSTL的支持
1.7.視圖組件(View)
JstlView類
LocalResolver接口
HandlerExceptionResolver接口 –異常處理
SimpleMappingExceptionResolver實現類
ModelAndView類, 無圖
1.8. 數據轉換組件(DataBinder)
1.9. 消息轉換器組件(HttpMessageConverter)
2.SpringMVC詳細運行流程圖