SpringMVC是Spring的一部分,提供了前臺展示相關內容,SpringMVC的底層需要用到Servlet;
MVC是一種設計模式:
- M(model):數據,bean、dao;
- V(View):頁面,JSP;
- C(Controller):根據請求不同,獲取不同的model,返回不同的view;
用戶請求數據到返回的大體流程:
SpringMVC運行的原理:
SpringMVC的具體執行流程:
- 用戶發起請求,由前端控制器(DispatcherServlet)接收;
- 前端控制器請求處理器映射器(HandlerMapping)查詢Handler(通過註解或者配置實現);
- 處理器映射器向前端控制器返回處理器執行鏈對象(HandlerExecutionChain);
- 由前端控制器請求適配器執行Handler;
- 由處理器執行Handler;
- 處理器向處理器適配器返回ModelAndView對象,ModelAndView是SpringMVC底層提供的一個對象,返回包括一個Model數據和View視圖邏輯名;
- 處理器適配器向前端控制器返回ModelAndView對象;
- 由前端控制器請求視圖解析器ViewResolver解析視圖;
- 由視圖解析器向前端控制器返回View對象;
- 由前端控制器執行渲染視圖;
- 前端控制器向用戶返回結果;
組件說明:
一、前端控制器 DispatcherServlet
作爲SpringMVC的入口函數,接收用戶的請求,響應結果,相當於轉發器、中央處理器,是整個流程控制的核心,由它調用其他組件完成用戶請求,它的存在降低了組件之間的耦合度;
二、處理器映射器 HandlerMapping
根據用戶請求的URL,查找Handler,即處理器(Controller),Spring提供了不同的處理器映射器實現不同映射方式;
三、處理器適配器 HandlerAdapter
按照特定的規則取執行Handler;
四、處理器 Handler
按照處理器適配器的規則實現,其才能找到處理器,才能真正執行Handler;這個涉及到具體的業務請求,需要開發人員手動實現;
五、視圖解析器 ViewResolver
進行視圖解析,根據視圖邏輯名解析成物理視圖名即具體頁面地址,再生成view的對象,最後對View對象進行渲染處理;
六、視圖 View
View是一個接口,實現類支持不同的View類型(JSP、PDF),SpringMVC提供了很多View視圖類型,包括jstView(JSP相關)、FreemakerView、PDFView等,這個需要開發人員自己實現;
注意:處理器 Handler、視圖 View這兩個需要開發人員手動實現;