一文讀懂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等。