Spring MVC流程前端
一、用戶發送請求至前端控制器 DispatcherServlet數據結構
二、DispatcherServlet 收到請求調用 HandlerMapping 處理器映射器app
三、HandlerMapping 處理器映射器找到具體的處理器(Controller)(xml配置、註解查找),生成處理器對象及處理器攔截器(若是有)一併返回給DispatcherServlet。函數
四、DispatcherServlet 調用 HandlerAdapter 處理適配器。spa
五、HandlerAdapter 通過適配調用具體的處理器(controller)。xml
六、Controller 執行完成返回 ModelAndView。對象
七、HadnlerAdapter 將 Controller 的執行結果 ModelAndView 返回給DispatcherServlet。blog
八、DispatcherServlet 將 ModelAndView 傳給 ViewReslover 視圖解析器。io
九、ViewReslover 解析後返回具體View。配置
十、DispatcherServlet 根據View 進行渲染視圖(將模型數據填充到視圖中)
十一、DispatcherServlet響應用戶。
組件說明:
DispatcherServlet:做爲前端控制器,整個流程控制的中心,控制、調度其餘組件。並最終將響應結果返回給用戶。
HandlerMapping:負責找到控制器。
HandlerAdapter:負責找到要具體的控制器函數。(飯後一個ModelAndView對象,包含模型數據、邏輯視圖名)。
ViewResolver:把邏輯視圖名解析爲具體的View,經過這種策略模式,很容易更換其餘視圖技術。
View:View會根據傳進來的Model模型數據進行渲染。此處的Model其實是一個Map數據結構,所以很容易支持其餘視圖技術。
即:
第一步:用戶發起請求到前端控制器(DispatcherServlet)
第二步:前端控制器請求處理器映射器(HandlerMappering)去查找處理器(Handle):經過xml配置或者註解進行查找
第三步:找到之後處理器映射器(HandlerMappering)像前端控制器返回執行鏈(HandlerExecutionChain)
第四步:前端控制器(DispatcherServlet)調用處理器適配器(HandlerAdapter)去執行處理器(Handler)
第五步:處理器適配器去執行Handler
第六步:Handler執行完給處理器適配器返回ModelAndView
第七步:處理器適配器向前端控制器返回ModelAndView
第八步:前端控制器請求視圖解析器(ViewResolver)去進行視圖解析
第九步:視圖解析器像前端控制器返回View
第十步:前端控制器對視圖進行渲染
第十一步:前端控制器向用戶響應結果