淺談SpringMVC執行過程

經過深刻分析Spring源碼,咱們知道Spring框架包括大體六大模塊, 如Web模塊,數據庫訪問技術模塊,面向切面模塊,基礎設施模塊,核心容器模塊和模塊,前端

其中,在Spring框架的Web模塊中,又包含不少前端技術,如SpringMVC,Spring WebSocket,Spring WebPortlet等,在本篇文章中,咱們主要分析SpringMVC模塊,web

在分析SpringMVC技術時,本篇文章將經過解讀SpringMVC源碼,並經過編譯器斷點調試追蹤,研究Spring核心類的UML圖,來深刻剖析SpringMVC的執行過程。數據庫

一 Spring核心模塊服務器

下圖爲Spring核心模塊,其中SpringMVC模塊位於Spring框架的Web模塊部分架構

 

若是想學習Java工程化、高性能及分佈式、深刻淺出。微服務、Spring,MyBatis,Netty源碼分析的朋友能夠加個人Java高級交流:854630135,羣裏有阿里大牛直播講解技術,以及Java大型互聯網技術的視頻免費分享給你們。app

二 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

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

不懂得問題均可以在本羣提出來 以後還會有直播平臺和講師直接交流噢

相關文章
相關標籤/搜索