SpringMVC是隸屬於Spring Web中的一部分, 屬於表現層的框架.
其使用了MVC架構模式的思想, 將Web層進行職責解耦, 使用請求-響應模型簡化Web開發
SpringMVC通過中央調度器DispatcherServlet,來調用MVC的三大件:Controller、Model、View。
保證MVC的每一個組件只與DispatcherServlet耦合, 彼此之間獨立運行, 降低程序的耦合性。
具體執行邏輯如下:
- 瀏覽器提交請求到中央調度器.
- 中央調度器將請求轉給處理器映射器.
- 處理器映射器根據請求, 找到請求對應的處理器, 並將其封裝為處理器執行鏈返回給中央調度器.
- 中央調度器根據處理器執行鏈中的處理器, 找到能夠執行該處理器的適配器.
- 適配器調用執行處理器.
- 處理器將處理結果以及要跳轉的視圖封裝到一個對象ModelAndView中, 並將其返回給處理器適配器.
- 適配器將結果返回給中央調度器.
- 中央調度器調用視圖解析器, 將ModelAndView中的視圖名封裝為視圖對象.
- 視圖解析器將封裝了的視圖對象返回給中央處理器.
- 中央調度器調用視圖對象, 讓其渲染, 即進行數據填充, 形成響應對象.
- 中央調度器響應瀏覽器.
DispatcherServlet
中央調度器, 它用來調用諸如處理器映射器, 適配器, 視圖解析器等組件處理用戶請求.
中央調度器的存在降低了組件之間的耦合.
HandlerMapping
處理器映射器, 負責根據用戶請求找到對應的Handler, 即處理器, 並將處理器封裝為處理器執行鏈返回給中央調度器.
HandleAdaptor
適配器模式, 可以擴展適配器來對更多類型的處理器進行執行, 中央調度器根據不同的處理器自動選擇適配器, 以執行處理器.
Handler
處理器, 即后端控制器. 在DispatcherServlet控制下Handler調用Service層對具體用戶請求進行處理.
Handler一般涉及的是用戶具體的業務請求, 充當MVC中的Controller.
ViewResolver
視圖解析器, 負責將處理結果生成View視圖, ViewResolver首先將邏輯視圖名解析為物理視圖名(具體頁面地址).
再生成View視圖(html/json/xml), 返回給中央處理器, 由中央處理器將結果通過頁面形式展現給用戶.
SpringMVC中提供了多種View視圖類型, 例如: JstlView, RedirectView等等.