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