SpringMVC請求流程詳解(轉)

(一)整體流程
整體流程
具體步驟:

1、 首先用戶發送請求到前端控制器,前端控制器根據請求信息(如 URL)來決定選擇哪一個頁面控制器進行處理並把請求委託給它,即以前的控制器的控制邏輯部分;圖中的 1、2 步驟;

2、 頁面控制器接收到請求後,進行功能處理,首先需要收集和綁定請求參數到一個對象,這個對象在 Spring Web MVC 中叫命令對象,並進行驗證,然後將命令對象委託給業務對象進行處理;處理完畢後返回一個 ModelAndView(模型數據和邏輯視圖名);圖中的 3、4、5 步驟;

3、 前端控制器收回控制權,然後根據返回的邏輯視圖名,選擇相應的視圖進行渲染,並把模型數據傳入以便視圖渲染;圖中的步驟 6、7;

4、 前端控制器再次收回控制權,將響應返回給用戶,圖中的步驟 8;至此整個結束。

(二)核心流程

核心流程
具體步驟:

第一步:發起請求到前端控制器(DispatcherServlet)

第二步:前端控制器請求HandlerMapping查找 Handler (可以根據xml配置、註解進行查找)

第三步:處理器映射器HandlerMapping向前端控制器返回Handler,HandlerMapping會把請求映射爲HandlerExecutionChain對象(包含一個Handler處理器(頁面控制器)對象,多個HandlerInterceptor攔截器對象),通過這種策略模式,很容易添加新的映射策略

第四步:前端控制器調用處理器適配器去執行Handler

第五步:處理器適配器HandlerAdapter將會根據適配的結果去執行Handler

第六步:Handler執行完成給適配器返回ModelAndView

第七步:處理器適配器向前端控制器返回ModelAndView (ModelAndView是springmvc框架的一個底層對象,包括 Model和view)

第八步:前端控制器請求視圖解析器去進行視圖解析 (根據邏輯視圖名解析成真正的視圖(jsp)),通過這種策略很容易更換其他視圖技術,只需要更改視圖解析器即可

第九步:視圖解析器向前端控制器返回View

第十步:前端控制器進行視圖渲染 (視圖渲染將模型數據(在ModelAndView對象中)填充到request域)

第十一步:前端控制器向用戶響應結果

(三)總結 核心開發步驟
1、 DispatcherServlet 在 web.xml 中的部署描述,從而攔截請求到 Spring Web MVC

2、 HandlerMapping 的配置,從而將請求映射到處理器

3、 HandlerAdapter 的配置,從而支持多種類型的處理器

注:處理器映射求和適配器使用紓解的話包含在了註解驅動中,不需要在單獨配置

4、 ViewResolver 的配置,從而將邏輯視圖名解析爲具體視圖技術

5、 處理器(頁面控制器)的配置,從而進行功能處理

View是一個接口,實現類支持不同的View類型(jsp、freemarker、pdf…)

轉載:springMVC請求流程詳解

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章