一文讀懂SpringMVC工作流程

本文是對 SpringMVC 工作流程的總結,這是前段時間蘇寧Java工程師在線筆試的簡答題,自己一定要可以用語言描述SpringMVC的工作流程。

SpringMVC工作流程.png

名詞解釋:

DispatcherServlet:前端控制器,是 SpringMVC 工作流程的中心,負責調用其他組件,在系統啓動時就加載該類。

Handler:後端處理器,對用戶具體請求進行處理,也就是我們編寫的 Controller 類。

HandlerMapping:處理器映射器,根據用戶訪問的 URL 映射到對應的後端處理器 Handler,根據不同的映射處理器可實現不同的映射,比如 xml 配置(現在不常用)、註解配置(最常用)。

HandlerExecutionChain:後端處理器 Handler 相關對象,包括 Handler 對象和對應的攔截器對象,以 HandlerExecutionChain 對象包含了這些相關的對象。

ModelAndView:邏輯視圖,包括數據模型和視圖名。

HandlerAdapter:處理器適配器,調用後端處理器中的方法,返回邏輯視圖 ModelAndView 對象。

ViewResolver:視圖解析器,將 ModelAndView 邏輯視圖解析爲具體的視圖(如 JSP,PDF等)。

工作流程:

1、當用戶向服務器發送請求時,會被 DispatcherServlet 攔截。

2、DispatherServlet 解析用戶訪問的 URL,並調用處理器映射器 HandlerMapping。

3、 處理器映射器 HandlerMapping 映射到對應的後端處理器 Handler(注意這裏只是找到了對應的 Controller 類,並沒有執行其中的方法),Handler 對象以及 Handler 對象相關的攔截器對象會被封裝到 HandlerExecutionChain 對象中返回給 DispatcherServlet。

4、DispatcherServlet 根據後端處理器 Handler 對象來調用適合的處理器適配器。

5、HandlerAdapter 調用 Handler 對象執行 Handler 中的方法,在 Handler 的方法中,可以做一些額外的工作,如消息轉換(如 JSON、XML 和 Java 對象的互轉)、數據轉換(如 String 和 Integer、Double的互轉)、數據格式化(如日期)、數據校驗(後端校驗),最終返回 ModelAndView 對象給 DispatcherServlet,該對象包含視圖名和數據模型。

6、DispatcherServlet 根據 ModelAndView 對象來調用適合的視圖解析器 ViewResolver。

7、ViewResolver 解析 Model 和 View 返回具體的 view 給 DispatcherServlet。

8、DispatcherServlet 對 view 進行渲染,返回具體的視圖給客戶端顯示,如 JSP,JSON、XML、PDF等。

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