這篇部落格主要是文字表達,至於原始碼部分我之前的三篇部落格有詳細的原始碼分析;只不過是三個部分,整合一下即可,另外,這裡文字部分也借鑑了一篇部落格(那篇部落格我感覺文字表達的挺好的,建議學習):
我的部落格:乙個*.do 請求的執行過程
自定義檢視的執行過程
***小結 借鑑部落格:springmvc工作原理
圖1
注意:該圖的數字並不是執行步驟,而是為了說明特此標識;另外,為了便於理解springmvc的執行原理,我們姑且這樣認為:可以先判斷自己是否設定 handler 處理器,如果沒有,則往上走紅色部分,如果有,則往下從 綠色部分;即把判斷是否有處理器提到前面了。
1、前端控制器dispatcherservlet(不需要工程師開發),由框架提供
作用:接收請求,響應結果,相當於**器,**處理器。有了dispatcherservlet減少了其它元件之間的耦合度。
使用者請求到達前端控制器,它就相當於mvc模式中的c,dispatcherservlet是整個流程控制的中心,由它呼叫其它元件處理使用者的請求,dispatcherservlet的存在降低了元件之間的耦合性。
3、處理器介面卡handleradapter
作用:按照特定規則(handleradapter要求的規則)去執行handler
通過handleradapter對處理器進行執行,這是介面卡模式的應用,通過擴充套件介面卡可以對更多型別的處理器進行執行。
4、處理器handler(需要工程師開發)
注意:編寫handler時按照handleradapter的要求去做,這樣介面卡才可以去正確執行handler
handler 是繼dispatcherservlet前端控制器的後端控制器,在dispatcherservlet的控制下handler對具體的使用者請求進行處理。
由於handler涉及到具體的使用者業務請求,所以一般情況需要工程師根據業務需求開發handler。
5、視**析器view resolver(不需要工程師開發),由框架提供
作用:進行視**析,根據邏輯檢視名解析成真正的檢視(view)
view resolver負責將處理結果生成view檢視,view resolver首先根據邏輯檢視名解析成物理檢視名即具體的頁面位址,再生成view檢視物件,最後對view進行渲染將處理結果通過頁面展示給使用者。 springmvc框架提供了很多的view檢視型別,包括:jstlview、freemarkerview、pdfview等。
一般情況下需要通過頁面標籤或頁面模版技術將模型資料通過頁面展示給使用者,需要由工程師根據業務需求開發具體的頁面。
6、檢視view(需要工程師開發jsp...)
view是乙個介面,實現類支援不同的view型別(jsp、freemarker、pdf...)
圖2
二、前端控制器(dispatcherservlet)呼叫處理器介面卡(handleradapter)去執行處理器(handler),即圖1的3和圖2中b部分;
三、若配置***,則執行圖2中c部分**,對應圖1的4;詳細可以看我的部落格:***小結
四、處理器介面卡去執行handler,並將 modelandview 返回給 執行鏈物件,即圖1的5和圖2中d部分;
五、同三,即圖1的6和圖2中e部分**;
以布原始碼在我上面鏈結的部落格中有詳述,因此不再截圖。
六、進行圖2中f部分**進入 processdispatchresult 方法;進行判斷是否有異常;對應圖1的7、8;
七、若沒有發生異常則進入 render 方法解析 modelandview 得到指定檢視並執行其中的方法;對應 圖1 的 9;
八、渲染檢視並響應客戶端,若配置***,則接著執行aftercompletion方法釋放資源;對應圖1的10、11、12.
springMVC的執行原理
從乙個http請求開始 tomcat在啟動時載入解析web.xml檔案,找到springmvc的前端總控制器dispatchservlet,並通過dispatchservlet載入相關的配置檔案資訊。呼叫相應處理器中的方法,處理該請求後,返回乙個modelandview。dispatchservle...
Spring MVC的執行原理
1 使用者傳送請求 至 前端控制器 dispatcherservlet 3 前端控制器 dispatcherservlet 呼叫處理器介面卡 handleradapter 處理器介面卡經過適配呼叫具體的controller controller service dao 資料庫 controller執...
SpringMVC的執行原理
官圖 大概執行流程 使用者 前端控制器 web.xml 委託給處理器 配置檔案 呼叫業務物件 對應的控制類 controller 把資訊返回給頁面處理器 解析返回回來的資訊並返回給前端控制器 前端控制器得到資訊後根據資訊中的url執行最終的檢視展示給使用者!詳細圖 詳細執行原理 class 1使用者...