先上一張原理圖
-- 序號為執行順序,實線箭頭為SpringMVC內部執行,虛線為使用者執行 --
開始理解流程
1、首先使用者發起請求,請求被DispatcherServlet攔截(在web.xml中配置)
2、攔截之後去尋找請求對應的對映器
(HandlerMapping為處理器對映。DispatcherServlet呼叫HandlerMapping,HandlerMapping根據請求url查詢Handler。)
3、HandlerExecution表示具體的Handler。
其主要作用是根據url查詢控制器並將解析後的資訊返回給DispatcherServlet,前四步完成!
4、下面是5 6 7 8的步驟
(5)HandlerAdapter表示處理器介面卡,其按照特定的規則(使用者寫的Controller)去執行Handler。
(6)Handler讓具體的Controller執行。
(7)Controller將具體的執行資訊返回給HandlerAdapter,如ModelAndView。
(8)HandlerAdapter將檢視邏輯名或模型傳遞給DispatcherServlet。
5、下面是9 10 11的步驟
(9)DispatcherServlet呼叫檢視解析器(ViewResolver)來解析HandlerAdapter傳遞的邏輯檢視名。(獲得model and view 中的資料,解析檢視名字,拼接檢視路徑)
(10)檢視解析器將解析的邏輯檢視名傳給DispatcherServlet。
(11)DispatcherServlet根據檢視解析器解析的檢視結果,呼叫具體的檢視。
6、最後一步,第12步返回View給使用者
流程大概可以分為三個部分