首先,用戶的瀏覽器發出了一個請求,這個請求經過互聯網到達了我們的服務器。
Servlet 容器首先接待了這個請求,並將該請求委托給 DispatcherServlet 進行處理。
接着 DispatcherServlet 將該請求傳給了處理器映射組件 HandlerMapping,並獲取到適合該請求的攔截器和處理器。
在獲取到處理器后,DispatcherServlet 還不能直接調用處理器的邏輯,需要進行對處理器進行適配。
處理器適配成功后,DispatcherServlet 通過處理器適配器 HandlerAdapter 調用處理器的邏輯,並獲取返回值 ModelAndView。
之后,DispatcherServlet 需要根據 ModelAndView 解析視圖。解析視圖的工作由 ViewResolver 完成,若能解析成功,ViewResolver 會返回相應的視圖對象 View。
在獲取到具體的 View 對象后,最后一步要做的事情就是由 View 渲染視圖,並將渲染結果返回給用戶。
核心組件:
組件 |
說明 |
---|---|
DispatcherServlet |
Spring MVC 的核心組件,是請求的入口,負責協調各個組件工作 |
HandlerMapping |
內部維護了一些 <訪問路徑, 處理器> 映射,負責為請求找到合適的處理器 |
HandlerAdapter |
處理器的適配器。Spring 中的處理器的實現多變,比如用戶處理器可以實現 Controller 接口,也可以用 @RequestMapping 注解將方法作為一個處理器等,這就導致 Spring 不止到怎么調用用戶的處理器邏輯。所以這里需要一個處理器適配器,由處理器適配器去調用處理器的邏輯 |
ViewResolver |
視圖解析器的用途不難理解,用於將視圖名稱解析為視圖對象 View。 |
View |
視圖對象用於將模板渲染成 html 或其他類型的文件。比如 InternalResourceView 可將 jsp 渲染成 html。 |