SpringMvc的設計模式

目錄

 

一.組件介紹

二.Spring MVC執行流程

三.簡潔版本


一.組件介紹

DispatcherServlet:作爲前端控制器,整個流程控制的中心,控制其它組件執行,統一調度,降低組件之間的耦合性,提高每個組件的擴展性。

HandlerMapping:通過擴展處理器映射器實現不同的映射方式,例如:配置文件方式,實現接口方式,註解方式等。

HandlAdapter:通過擴展處理器適配器,支持更多類型的處理器,調用處理器傳遞參數等工作!

ViewResolver:通過擴展視圖解析器,支持更多類型的視圖解析,例如:jsp、freemarker、pdf、excel等。

二.Spring MVC執行流程

 

從接收請求到響應,Spring MVC框架的衆多組件通力配合,各司其職,有條不紊的完成分內工作!在整個框架中,DispatchserServlet處於核心的位置,它負責協調和組織不同組件以完成請求處理以及返回影響工作.和大多數Web MVC框架一樣,Spring MVC 通過一個前端的Servlet接收所有請求,並將這些工作委託給其他組件進行處理,DispatcherServlet 就是Spring MVC的前端Servlet。下面對Spring MVC處理請求的整體過程進行詳解!

  1. 整個過程始於客戶端發出的一個HTTP請求,WEB應用服務器接收到這個請求,如果匹配DispatcherServlet的映請求映射路徑(web.xml中指定),則Web容器將該請求轉交給DispatcherServlet處理。

  2. 接收到這個請求後,將根據請求的信息(包括 URL,HTTP方法,請求頭,請求參數,Cookie等)及HandlerMapping的配置找到處理請求的處理器(Handler)。可將HandlerMapping看做路由控制器,將Handler看做目標主機.值得注意的是,在Spring MVC中並沒有定義一個Handler接口,實際上,任何一個Object都可以成爲請求處理器。

  3. 當DispatcherServlet根據HandlerMapping得到對應當前請求的Handler後,通過HandlerAdapter對Handler的封裝,再以統一的適配器接口調用Handler。HandlerAdapter是Spring MVC的框架級接口,顧名思義,HandlerAdapter是一個適配器,它用統一的接口對各種Handler的方法進行調用.

  4. 處理器完成業務邏輯的處理後將返回一個ModelAndView給DispatcherServlet,ModelAndView包含了視圖邏輯名和模型數據信息。

  5. ModelAndView中包含的是"邏輯視圖名"而並非真正的視圖對象,DispatcherServlet藉由ViewResolver完成邏輯視圖名到真實視圖對象的解析工作。

  6. 當得到真實的視圖對象View後,DispatcherServlet就使用這個View對象對ModelAndView中的模型數據進行視圖渲染。

  7. 最終客戶端得到的響應信息可能是一個普通的HTML頁面,也可能是一個XML或者JSON串,甚至是一張圖片或者一個PDF文檔等不同的媒體形式。

三.簡潔版本

第一步:發起請求到前端控制器(DispatchServlet)

第二步:前端控制器DispatchServlet請求HandlerMapping查找Handler(可以根據xml配置,註解進行查找)

第三步:處理器映射器(HandlerMapping)向前端控制器DispatchServlet返回Handler

第四步:前端控制器DispatchServlet調用處理器適配器HandlerAdapter去執行Handler

第五步: Handler執行完成給處理器適配器HandlerAdapter返回ModelAndView

第六步: 處理器適配器HandlerAdapter向前端控制器返回ModelAndView

(ModelAndView 是springmvc框架的一個底層對象,包括Model和view)

第七步:前端控制器請求視圖解析器ViewResolver去進行視圖解析,根據邏輯視圖名解析成真正的視圖(如jsp、html等)

第八步:視圖解析器ViewResolver向前端控制器DispatchServlet返回view

第九步:前端控制器DispatchServlet進行視圖渲染,視圖渲染將模型數據(在ModelAndView對象中)填充到request域。

第十步:前端控制器DispatchServlet向用戶響應結果

組件:

1.前端控制器DispatchServlet(作用接收請求,響應結果,相當於轉發器、中央處理器。有了DispatchServlet,減少了其它組件之間的耦合度)

2.處理器映射器HandlerMapping(根據請求的url查找Handler)

3.處理器適配器HandlerAdapter(作用按照特定規則【HandlerAdapter要求的特定規則】去執行Handler

4.處理器Handler(注:編寫Handler要按照HandlerAdapter的要求去做,這樣適配器纔可以正確執行Handler)

4.視圖解析器viewResolver(作用進行視圖解析,根據邏輯視圖名解析成真正的視圖【view】)

5.視圖view(view 是一個接口,實現類是支持不同的view類型【jsp、freemaker、pdf】)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章