1. 程式人生 > >淺談SpringMVC執行過程

淺談SpringMVC執行過程

開發十年,就只剩下這套架構體系了! >>>   

通過深入分析Spring原始碼,我們知道Spring框架包括大致六大模組, 如Web模組,資料庫訪問技術模組,面向切面模組,基礎設施模組,核心容器模組和模組,

其中,在Spring框架的Web模組中,又包含很多前端技術,如SpringMVC,Spring WebSocket,Spring WebPortlet等,在本篇文章中,我們主要分析SpringMVC模組,

在分析SpringMVC技術時,本篇文章將通過解讀SpringMVC原始碼,並通過編譯器斷點除錯追蹤,研究Spring核心類的UML圖,來深入剖析SpringMVC的執行過程。

一 Spring核心模組

下圖為Spring核心模組,其中SpringMVC模組位於Spring框架的Web模組部分

 

如果想學習Java工程化、高效能及分散式、深入淺出。微服務、Spring,MyBatis,Netty原始碼分析的朋友可以加我的Java高階交流:854630135,群裡有阿里大牛直播講解技術,以及Java大型網際網路技術的視訊免費分享給大家。

二 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:

 

歡迎工作一到八年的Java工程師朋友們加入Java高階交流:854630135

本群提供免費的學習指導 架構資料 以及免費的解答

不懂得問題都可以在本群提出來 之後還會有直播平臺和