本文是對 SpringMVC 工作流程的總結,自己一定要可以用語言描述。
名詞解釋:
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等。
對於本文感興趣的小伙伴們可以觀看此https://www.bilibili.com/video/av30641870/,一個技術大牛手寫SpringMVC框架的視頻