Spring MVC設計模式
基於 Servlet 的 MVC 模式的具體實現如下。
- 模型:一個或多個 JavaBean 對象,用於存儲數據(實體模型,由 JavaBean 類創建)和處理業務邏輯(業務模型,由一般的 Java 類創建)。
- 視圖:一個或多個 JSP 頁面,向控制器提交數據和爲模型提供數據顯示,JSP 頁面主要使用 HTML 標記和 JavaBean 標記來顯示數據。
- 控制器:一個或多個 Servlet 對象,根據視圖提交的請求進行控制,即將請求轉發給處理業務邏輯的
JavaBean,並將處理結果存放到實體模型 JavaBean 中
Spring MVC 工作流程
Spring MVC 框架主要由 DispatcherServlet(分發器)、處理器映射、控制器、視圖解析器、視圖組成
- 客戶端請求提交到 DispatcherServlet。
- 由 DispatcherServlet 控制器尋找一個或多個 HandlerMapping,找到處理請求的 Controller。
- DispatcherServlet 將請求提交到Controller。
- Controller 調用業務邏輯處理後返回 ModelAndView。
- DispatcherServlet尋找一個或多個 ViewResolver 視圖解析器,找到 ModelAndView 指定的視圖。
- 視圖負責將結果顯示到客戶端。
Spring MVC接口
Spring MVC 四個接口,即 DispatcherServlet、HandlerMapping、Controller 和 ViewResolver
-
Spring MVC 所有的請求都經過 DispatcherServlet 來統一分發,在 DispatcherServlet
將請求分發給 Controller 之前需要藉助 Spring MVC 提供的 HandlerMapping 定位到具體的
Controller。 -
HandlerMapping 接口負責完成客戶請求到 Controller 映射。
-
Controller 接口將處理用戶請求,這和 Java Servlet 扮演的角色是一致的。一旦 Controller 處理完用戶請求,將返回 ModelAndView 對象給 DispatcherServlet 前端控制器,ModelAndView 中包含了模型(Model)和視圖(View)。
-
從宏觀角度考慮,DispatcherServlet 是整個 Web 應用的控制器;從微觀考慮,Controller 是單個 Http 請求處理過程中的控制器,而 ModelAndView 是 Http 請求過程中返回的模型(Model)和視圖(View)。
-
ViewResolver 接口(視圖解析器)在 Web 應用中負責查找 View 對象,從而將相應結果渲染給客戶。