天天看點

SpringMVC架構解析 ——《我的Java打怪日記》

SpringMVC

Spring架構提供了建構Web應用程式的全功能MVC子產品。通過政策接口,Spring架構是高度可配置的,而且支援多種視圖技術,例如JavaServer Pages(JSP)、Velocity、Tiles、iText和POI。SpringMVC架構并不知道使用的視圖,是以不會強迫您隻使用JSP技術。SpringMVC分離了控制器、模型對象、分派器以及處理程式對象的角色,這種分離讓它們更容易進行定制。

Spring的MVC是基于Servlet功能實作的,通過實作Servlet接口的DispatcherServlet來封裝其核心功能實作,通過将請求分派給處理程式,同時帶有可配置的處理程式映射、視圖解析、本地語言、主題解析以及上載檔案支援。預設的處理程式是非常簡單的Controller接口,隻有一個方法ModelAndView handleRequest(request, response)。Spring提供了一個控制器層次結構,可以派生子類。如果應用程式需要處理使用者輸入表單,那麼可以繼承AbstractFormController。如果需要把多頁輸入處理到一個表單,那麼可以繼承AbstractWizardFormController。

對SpringMVC或者其他比較成熟的MVC架構而言,解決的問題無外乎以下幾點。

将Web頁面的請求傳給伺服器。

根據不同的請求處理不同的邏輯單元。

傳回處理結果資料并跳轉至響應的頁面。

SpringMVC執行流程:

1.使用者發送請求至前端控制器DispatcherServlet

2.DispatcherServlet收到請求調用處理器映射器HandlerMapping。

3.處理器映射器根據請求url找到具體的處理器,生成處理器執行鍊HandlerExecutionChain(包括處理器對象和處理器攔截器)一并傳回給DispatcherServlet。

4.DispatcherServlet根據處理器Handler擷取處理器擴充卡HandlerAdapter執行HandlerAdapter處理一系列的操作,如:參數封裝,資料格式轉換,資料驗證等操作

5.執行處理器Handler(Controller,也叫頁面控制器)。

6.Handler執行完成傳回ModelAndView

7.HandlerAdapter将Handler執行結果ModelAndView傳回到DispatcherServlet

8.DispatcherServlet将ModelAndView傳給ViewReslover視圖解析器

9.ViewReslover解析後傳回具體View

10.DispatcherServlet對View進行渲染視圖(即将模型資料model填充至視圖中)。

11.DispatcherServlet響應使用者。