前言
通過深入分析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:
總結
以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對服務器之家的支持。
原文鏈接:https://www.cnblogs.com/wangjiming/p/10487832.html