SpringMVC
- 一,SpringMVC簡介
- 二,SpringMVC的作業原理圖
- 執行流程
- 三,SpringMVC核心組件
- 前端控制器DispatcherServlet
- 處理器映射器HandlerMapping
- 處理器配接器HandlerAdapter
- 處理器Handler
- 視圖決議器ViewResolver
一,SpringMVC簡介
MVC:是一種架構模式,將業務邏輯和頁面展示分離,使程式分層、分工合作,既相互獨立,又協同合作,
MVC是模型(Model)、視圖(View)、控制器(Controller)的簡寫,是一種軟體設計規范,
Model(模型):資料模型,提供要展示的資料,因此包含資料和行為,可以認為是領域模型或 JavaBean組件,不過現在一般都分離開來:Value Object(資料Dao) 和 服務層(行為Service),也就是模型提供了模型資料查詢和模型資料的狀態更新等功能,包括資料和業務,
View(視圖):負責進行模型的展示,將邏輯視圖決議成物理視圖并渲染,
Controller(控制器):接收用戶請求,委托給模型進行處理,處理完畢后把回傳的模型資料回傳給視圖,由視圖負責展示,起調度作用,
二,SpringMVC的作業原理圖

執行流程
1、 用戶發送http請求至前端控制器DispatcherServlet,中途會有過濾器Filter進行資料過濾,DispatcherServlet執行doService方法經過資料灌入后呼叫doDispatch方法,得到請求資源識別符號(URI)
用戶發起http請求后,Filter過濾器會攔截客戶的HttpServletRequest,主要用于對HttpServletRequest進行預處理,根據需要檢查HttpServletRequest權限 ,也可以修改HttpServletRequest 頭和資料或記錄日志等操作,
2、 DispatcherServlet收到請求后呼叫HandlerMapping處理器映射器,HandlerMapping找到具體的Handler處理器(可以根據xml配置、注解進行查找),生成處理器物件及HandlerInterceptor處理器攔截器(如果有則生成)一并回傳給DispatcherServlet,
DispatcherServlet會去遍歷所有的處理器映射器,尋找一個可以處理該HTTP請求的Handler,匹配成功的HandlerMapping會向DispatcherServlet回傳一個HandlerExecutionChain型別的處理器執行鏈,里面封裝了一個Handler和一堆HandlerInterceptor處理器攔截器,之后會呼叫getHandlerAdapter方法,遍歷所有注入的處理器配接器HandlerAdapter,依次使用HandlerAdapter中的supports方法尋找適合這個handler的配接器子類,
3,將封裝好的HandlerExecutionChain型別的handler處理器執行鏈和適合這個handler的配接器回傳給DispatcherServlet,
4,通過獲取到適合的配接器子類后執行HandlerAdapter中的 handler方法,方法呼叫對應的bean,執行該bean對應的Controller類,
DispatcherServlet將控制權交給處HandlerAdapter,處理器配接器將HTTP請求HttpServletRequest和HTTP回應HttpServletResponse傳遞給Handler(或者說控制器Controller),Controller呼叫Service業務層對資料邏輯進行處理(交給Mybatis框架),控制器完成請求處理后,回傳帶有資料模型和邏輯視圖的ModelAndView物件傳給HandlerAdapter,最終由處理器配接器回傳給DispatcherServlet,
5, 最終將執行結果封裝成ModelAndView物件回傳給DispatcherServlet,
6, DispatcherServlet將ModelAndView傳給ViewReslover視圖決議器,并根據View進行渲染視圖(即將模型資料填充至視圖中)
SpringMVC中處理視圖最終要的兩個介面就是ViewResolver和View ViewResolver的作用是將邏輯視圖決議成物理視圖
View的主要作用是呼叫其render()方法將物理視圖進行渲染,
根據回傳的ModelAndView,通過配置中定義的ViewResolver決議(必須是已經注冊到Spring容器中的)結合Model和View,來渲染視圖
7,將處理過后的ModelAndView視圖交給DispatcherServlet,并由DispatcherServlet回應給客戶端(展示畫面),
可以通過Filter對HttpServletResponse 進行后處理,
三,SpringMVC核心組件
前端控制器DispatcherServlet
接收請求,回應結果,相當于轉發器,中央處理器,有了dispatcherServlet減少了其它組件之間的耦合度,用戶請求到達前端控制器,它就相當于mvc模式中的c,dispatcherServlet是整個流程控制的中心,由它呼叫其它組件處理用戶的請求,dispatcherServlet的存在降低了組件之間的耦合性,
處理器映射器HandlerMapping
根據請求的url查找Handler,HandlerMapping負責根據用戶請求找到Handler即處理器,springmvc提供了不同的映射器實作不同的映射方式,例如:組態檔方式,實作介面方式,注解方式等,
處理器配接器HandlerAdapter
按照特定規則(HandlerAdapter要求的規則)去執行Handler通過HandlerAdapter對處理器進行執行,這是配接器模式的應用,撰寫Handler時按照HandlerAdapter的要求去做,這樣配接器才可以去正確執行Handler通過擴展配接器可以對更多型別的處理器進行執行,
處理器Handler
Handler 是繼DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler對具體的用戶請求進行處理,
由于Handler涉及到具體的用戶業務請求,所以一般情況需要工程師根據業務需求開發Handler,
視圖決議器ViewResolver
進行視圖決議,根據邏輯視圖名決議成真正的視圖(view)
ViewResolver負責將處理結果生成View視圖,ViewResolver首先根據邏輯視圖名決議成物理視圖名即具體的頁面地址,再生成View視圖物件,最后對View進行渲染將處理結果通過頁面展示給用戶, springmvc框架提供了很多的View視圖型別,包括:jstlView、freemarkerView、pdfView等,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/267067.html
標籤:其他
