淺談SpringMVC執行過程
通過深入分析Spring原始碼,我們知道Spring框架包括大致六大模組, 如Web模組,資料庫訪問技術模組,面向切面模組,基礎設施模組,核心容器模組和模組,
其中,在Spring框架的Web模組中,又包含很多前端技術,如SpringMVC,Spring WebSocket,Spring WebPortlet等,在本篇文章中,我們主要分析SpringMVC模組,
在分析SpringMVC技術時,本篇文章將通過解讀SpringMVC原始碼,並通過編譯器斷點除錯追蹤,研究Spring核心類的UML圖,來深入剖析SpringMVC的執行過程。
一 Spring核心模組
下圖為Spring核心模組,其中SpringMVC模組位於Spring框架的Web模組部分
二 SpringMVC執行原理
下圖為SpringMVC的一個較完整的流程圖,實線表示SpringMVC框架提供的技術,不需要開發者實現,虛線表示需要開發者實現。
簡要分析執行流程:
1.DispatcherServlet表示前置控制器,是整個SpringMVC的控制中心。使用者發出請求,DispatcherServlet接收請求並攔截請求,
我們假設請求的url為:
http://localhost:9999/SpringMVC/input-product
如上url拆分成三部分:
(1)http://localhost:9999 伺服器域名
(2)SpringMVC部署在伺服器(http://localhost:9999)上的web站點
(3)input-product表示控制器
通過分析,如上url表示為:請求位於伺服器localhost:9999上的SpringMVC站點的input-product控制器
2.HandlerMapping為處理器對映。DispatcherServlet呼叫HandlerMapping,HandlerMapping根據請求url查詢Handler
3.HandlerExecution表示具體的Handler,其主要作用是根據url查詢控制器,如上url被查詢控制器為:input-product
4.HandlerExecution將解析後的資訊傳遞給DispatcherServlet,如解析控制器對映等
5.HandlerAdapter表示處理器介面卡,其按照特定的規則去執行Handler
6.Handler讓具體的Controller執行
7.Controller將具體的執行資訊返回給HandlerAdapter,如ModelAndView
8.HandlerAdapter將檢視邏輯名或模型傳遞給DispatcherServlet
9.DispatcherServlet呼叫檢視解析器(ViewResolver)來解析HandlerAdapter傳遞的邏輯檢視名
10.檢視解析器將解析的邏輯檢視名傳給DispatcherServlet
11.DispatcherServlet根據檢視解析器解析的檢視結果,呼叫具體的檢視
12.最終檢視呈現給使用者。
三 SpringMVC核心元件
(一)DispatcherServlet
DispatcherServlet就是所謂的SpringMVC前端控制器,作為整個SpringMVC的控制中心,,其相關UML如下所示:
(二)HandlerMapping
HandlerMapping主要用來解析請求url,解析出控制器,從而對映控制器,其相關類有16個。
如下為HandlerMapping的UML圖
(三)HandlerAdapter
HandlerAdapter主要是排程Controller來處理業務邏輯等,想相關類有6個。
如下為HandlerAdapter的UML:
(四)ViewResolver
ViewResolver介面主要作用是解析DispatcherServlet傳遞的邏輯檢視名,並將解析結果傳回給DispatcherServlet。實現該介面的相關類或介面共有19個。
如下為ViewResolver主要的UML:
四 版權區
- 轉載部落格,必須註明部落格出處
- 博主網址:http://www.cnblogs.com/wangjiming/
- 如您有新想法,歡迎提出,郵箱:[email protected]
- 專業.NET之家技術QQ群:490539956
- 專業化Java之家QQ群:924412846
- 有問必答QQ群:2098469527
- 一對一技術輔導QQ:2098469527