SpringMVC原理
1、原文地址
http://blog.csdn.net/jianyuerensheng/article/details/51258942(特別感謝作者提供好文章)2、SpringMVC概述
Spring MVC是Spring提供的一個強大而靈活的web框架。借助於註解,Spring MVC提供了幾乎是POJO的開發模式,使得控制器的開發和測試更加簡單。這些控制器一般不直接處理請求,而是將其委托給Spring上下文中的其他bean,通過Spring的依賴註入功能,這些bean被註入到控制器中。
Spring MVC主要由DispatcherServlet、處理器映射、處理器(控制器)、視圖解析器、視圖組成。他的兩個核心是兩個核心:
處理器映射:選擇使用哪個控制器來處理請求
視圖解析器:選擇結果應該如何渲染
通過以上兩點,Spring MVC保證了如何選擇控制處理請求和如何選擇視圖展現輸出之間的松耦合。
3、SpringMVC運行原理
(1) Http請求:客戶端請求提交到DispatcherServlet。
(2) 尋找處理器:由DispatcherServlet控制器查詢一個或多個HandlerMapping,找到處理請求的Controller。
(3) 調用處理器:DispatcherServlet將請求提交到Controller。
(4)(5)調用業務處理和返回結果
(6)(7)處理視圖映射並返回模型: DispatcherServlet查詢一個或多個ViewResoler視圖解析器,找到ModelAndView指定的視圖。
(8) Http響應:視圖負責將結果顯示到客戶端。
4、SpringMVC接口解釋
(1)DispatcherServlet接口:
Spring提供的前端控制器,所有的請求都有經過它來統一分發。在DispatcherServlet將請求分發給Spring Controller之前,需要借助於Spring提供的HandlerMapping定位到具體的Controller。
(2)HandlerMapping接口
能夠完成客戶請求到Controller映射。
(3)Controller接口:
需要為並發用戶處理上述請求,因此實現Controller接口時,必須保證線程安全並且可重用。
Controller將處理用戶請求,這和Struts Action扮演的角色是一致的。一旦Controller處理完用戶請求,則返回ModelAndView對象給DispatcherServlet前端控制器,ModelAndView中包含了模型(Model)和視圖(View)。
從宏觀角度考慮,DispatcherServlet是整個Web應用的控制器;從微觀考慮,Controller是單個Http請求處理過程中的控制器,而ModelAndView是Http請求過程中返回的模型(Model)和視圖(View)。
(4)ViewResolver接口:
Spring提供的視圖解析器(ViewResolver)在Web應用中查找View對象,從而將相應結果渲染給客戶。
5、DispatcherServlet
是整個Spring MVC的核心。它負責接收HTTP請求組織協調Spring MVC的各個組成部分。其主要工作有以下三項:
(1)截獲符合特定格式的URL請求。
(2)初始化DispatcherServlet上下文對應WebApplicationContext,並將其與業務層、持久化層的WebApplicationContext建立關聯。
(3)初始化Spring MVC的各個組成組件,並裝配到DispatcherServlet中。
SpringMVC原理