一、SpringMVC運行原理圖
二、運行流程分析
1、客戶端用戶發送請求至前端控制器DispatcherServlet
。
2、 DispatcherServlet
收到請求調用HandlerMapping
處理器映射器。
3、 HandlerMapping
處理器映射器找到具體的處理器(可以根據xml配置、註解進行查找),生成處理器對象及處理器攔截器(如果有則生成)一併返回給DispatcherServlet
。
4、DispatcherServlet
調用HandlerAdapter
處理器適配器,HandlerAdapter
經過適配調用具體的處理器(Controller
,也叫後端控制器)。
5、Controller
控制器執行完成返回ModelAndView
,HandlerAdapter
將controller
執行結果ModelAndView
返回給DispatcherServlet
。
6、 DispatcherServlet
前端控制器將ModelAndView
傳給ViewReslover
視圖解析器。
7、 ViewReslover
解析後返回具體View
。
8、DispatcherServlet
根據View
進行渲染視圖(即將模型數據填充至視圖中),並返回給客戶端用戶。
三、SpringMVC 重要組件說明
1、前端控制器DispatcherServlet(不需要工程師開發),由框架提供(重要)
作用:Spring MVC 的入口函數。接收請求,響應結果,相當於轉發器,中央處理器。有了 DispatcherServlet 減少了其它組件之間的耦合度。用戶請求到達前端控制器,它就相當於mvc模式中的c,DispatcherServlet是整個流程控制的中心,由它調用其它組件處理用戶的請求,DispatcherServlet的存在降低了組件之間的耦合性。
2、處理器映射器HandlerMapping(不需要工程師開發),由框架提供
作用:根據請求的url查找Handler。HandlerMapping負責根據用戶請求找到Handler即處理器(Controller),SpringMVC提供了不同的映射器實現不同的映射方式,例如:配置文件方式,實現接口方式,註解方式等。
3、處理器適配器HandlerAdapter
作用:按照特定規則(HandlerAdapter要求的規則)去執行Handler
通過HandlerAdapter對處理器進行執行,這是適配器模式的應用,通過擴展適配器可以對更多類型的處理器進行執行。
4、處理器Handler(需要工程師開發)
注意:編寫Handler時按照HandlerAdapter的要求去做,這樣適配器纔可以去正確執行Handler
Handler 是繼DispatcherServlet前端控制器的後端控制器,在DispatcherServlet的控制下Handler對具體的用戶請求進行處理。
由於Handler涉及到具體的用戶業務請求,所以一般情況需要工程師根據業務需求開發Handler。
5、視圖解析器View resolver(不需要工程師開發),由框架提供
作用:進行視圖解析,根據邏輯視圖名解析成真正的視圖(view)
View Resolver負責將處理結果生成View視圖,View Resolver首先根據邏輯視圖名解析成物理視圖名即具體的頁面地址,再生成View視圖對象,最後對View進行渲染將處理結果通過頁面展示給用戶。 springmvc框架提供了很多的View視圖類型,包括:jstlView、freemarkerView、pdfView等。
一般情況下需要通過頁面標籤或頁面模版技術將模型數據通過頁面展示給用戶,需要由工程師根據業務需求開發具體的頁面。
6、視圖View(需要工程師開發)
View是一個接口,實現類支持不同的View類型(jsp、freemarker、pdf…)
注意:處理器Handler(也就是我們平常說的Controller控制器)以及視圖層view都是需要我們自己手動開發的。其他的一些組件比如:前端控制器DispatcherServlet、處理器映射器HandlerMapping、處理器適配器HandlerAdapter等等都是框架提供給我們的,不需要自己手動開發。
參考文獻:
http://www.imooc.com/article/256062【慕課網】
https://blog.csdn.net/qq_39470733/article/details/80980320