先上一張原理圖
-- 序號為執行順序,實線箭頭為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給用戶
流程大概可以分為三個部分