所有的流程都可以檢視org.springframework.web.servlet.dispatcherservlet
源**。
initmultipartresolver
(context)
;initlocaleresolver
(context)
;initthemeresolver
(context)
;(context)
;inithandleradapters
(context)
;inithandlerexceptionresolvers
(context)
;initrequesttoviewnametranslator
(context)
;initviewresolvers
(context)
;initflashmapmanager
(context)
;
元件的預設值在dispatcherservlet.properties檔案中:
遍歷初始化好的list
的supports(handler)
方法,找到handler對應的handleradapter
。
如果是get或head請求,呼叫handleradapter
的getlastermodified()
方法,如果是最後修改時間沒有變,則直接返回。
依次正序遍歷handlerexecutionchain
中的interceptors
的prehandler()
方法, 如果其中有乙個返回false
,則從當前執行的interceptor開始往前分別執行aftercompletion()
方法
由具體的handleradapter
實現handler的具體操作,返回乙個modelandview
:
如果這時觸發了非同步機制(asyncmanager.isconcurrenthandlingstarted()
),則處理到此為止。
如果返回的modelandview
的view欄位沒有設定,則通過viewnametranslator
返回乙個預設的view名稱。
以上處理中,如果有modelandviewdefiningexception
異常,則設定modelandview為異常指定的modelandview;如果是其他異常,則遍歷list
的resolveexception()
方法,返回指定的modelandview。
呼叫modelandview
中view的render
方法,設定view資訊。
通過handlerexecutionchain
的triggeraftercompletion()
方法,依次倒序遍歷handlerexecutionchain
中的interceptors
的aftercompletion()
方法。
SpringMVC執行流程
執行流程 第一步 發起請求到前端控制器 dispatcherservlet 可以根據xml配置 註解進行查詢 第四步 前端控制器呼叫處理器介面卡去執行handler 第五步 處理器介面卡去執行handler 第六步 handler執行完成給介面卡返回modelandview 第七步 處理器介面卡向前...
Spring MVC執行流程
1 使用者發起請求,請求到dispatcherservlet前端控制器 dispatcherservlet 排程 負責 request 和response 負責呼叫處理器對映器查詢 handler 負責呼叫處理器介面卡執行 handler 有了前端控制器降低了各各元件之間的耦合性,系統擴充套件性提高...
SpringMVC執行流程
首先明確,執行流程中涉及到了哪些元件 前端控制器 dispatcherservlet 相當於乙個訊號中心,任何交流都需要經過他,再分配給其他元件 處理器介面卡 handleradapter 相當於手,當找到了對應的控制器,根據控制器選擇對應的介面卡,然後用這個介面卡去執行確定了的控制器 處理器 co...