springmvc框架原理分析
2019獨角獸企業重金招聘Python工程師標準>>>
springmvc全名是spring web mvc,springmvc是spring的一個模塊,并且看名字即可知道,springmvc是一個基于mvc設計模式的前端web框架。mvc:m(model模型)、v(view視圖)、c(control控制)
SpringMVC的工作原理圖:
1、發起請求到前端控制器(DispatcherServlet),該控制器中就會過濾出你哪些請求可以訪問該servlet哪些不可以,就是url-pattern的作用,并且會加載springmvc.xml配置文件
2、前端控制器會找到HandlerMapping(處理器映射器),通過HandlerMapping完成url到controller映射的組件,通俗點講,就是將在springmvc.xml中配置的或者注解的url與對應的處理類找到并進行存儲,實際上是用一個map集合來保存這種映射關系,map<url,handler>; 這樣,就將所有的這種映射關系都記錄保存了下來
3、通過HandlerMapping有了這些映射關系,并且找到了url對應的處理器,HandlerMapping就會將其處理器(圖中紅色標明的handler)返回,在其返回之前,在加上很多的攔截器,其作用后面進行講解,這里知道在返回的處理器前會有很多的攔截器即可。
4、DispatcherServlet拿到了handler之后,找到HandlerAdapter(處理器適配器),通過它來訪問處理器,并且執行處理器。
這里會有人會有疑惑,為什么需要處理器適配器,我們都獲得了處理類了,直接調用不就行了嗎?
不行,因為我們只知道處理類在哪里,并不知道執行處理類中的哪個方法,其實也就是不知道處理類是通過哪種方式創建出來的,實現HttpRequestHandler?還是注解方式,或者是其他方式,我們不知道,所以需要HandlerAdapter來幫我們確認調用哪個方法。
5、執行處理器
6、處理器會返回一個ModelAndView對象給HandlerAdapter
7、通過HandlerAdapter將ModelAndView對象返回給前端控制器(DispatcherServlet)
8、前端控制器請求視圖解析器(ViewResolver)去進行視圖解析,根據邏輯視圖名解析成真正的視圖(jsp),其實就是將ModelAndView對象中存放視圖的名稱進行查找,找到對應的頁面形成視圖對象
9、返回視圖對象到前端控制器。
10、視圖渲染,就是將ModelAndView對象中的數據放到request域中,用來讓頁面加載數據的。
11、通過第8步,通過名稱找到了對應的頁面,通過第10步,request域中有了所需要的數據,那么就能夠進行視圖渲染了。最后將其返回
組件說明:
DispatcherServlet:作為前端控制器,整個流程控制的中心,控制其它組件執行,統一調度,降低組件之間的耦合性,提高每個組件的擴展性。
HandlerMapping:通過擴展處理器映射器實現不同的映射方式,例如:配置文件方式,實現接口方式,注解方式等。?
HandlAdapter:通過擴展處理器適配器,支持更多類型的處理器。
ViewResolver:通過擴展視圖解析器,支持更多類型的視圖解析,例如:jsp、freemarker、pdf、excel等。
轉載于:https://my.oschina.net/u/3873725/blog/1934376
總結
以上是生活随笔為你收集整理的springmvc框架原理分析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PostgreSQL SSL启用与CA证
- 下一篇: 前后端配合实现密码找回功能思路