日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

springmvc框架原理分析

發(fā)布時(shí)間:2025/3/17 c/c++ 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 springmvc框架原理分析 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>

springmvc全名是spring web mvc,springmvc是spring的一個(gè)模塊,并且看名字即可知道,springmvc是一個(gè)基于mvc設(shè)計(jì)模式的前端web框架。mvc:m(model模型)、v(view視圖)、c(control控制)

SpringMVC的工作原理圖:

1、發(fā)起請(qǐng)求到前端控制器(DispatcherServlet),該控制器中就會(huì)過(guò)濾出你哪些請(qǐng)求可以訪(fǎng)問(wèn)該servlet哪些不可以,就是url-pattern的作用,并且會(huì)加載springmvc.xml配置文件

2、前端控制器會(huì)找到HandlerMapping(處理器映射器),通過(guò)HandlerMapping完成url到controller映射的組件,通俗點(diǎn)講,就是將在springmvc.xml中配置的或者注解的url與對(duì)應(yīng)的處理類(lèi)找到并進(jìn)行存儲(chǔ),實(shí)際上是用一個(gè)map集合來(lái)保存這種映射關(guān)系,map<url,handler>; 這樣,就將所有的這種映射關(guān)系都記錄保存了下來(lái)

3、通過(guò)HandlerMapping有了這些映射關(guān)系,并且找到了url對(duì)應(yīng)的處理器,HandlerMapping就會(huì)將其處理器(圖中紅色標(biāo)明的handler)返回,在其返回之前,在加上很多的攔截器,其作用后面進(jìn)行講解,這里知道在返回的處理器前會(huì)有很多的攔截器即可。

4、DispatcherServlet拿到了handler之后,找到HandlerAdapter(處理器適配器),通過(guò)它來(lái)訪(fǎng)問(wèn)處理器,并且執(zhí)行處理器。

這里會(huì)有人會(huì)有疑惑,為什么需要處理器適配器,我們都獲得了處理類(lèi)了,直接調(diào)用不就行了嗎?

不行,因?yàn)槲覀冎恢捞幚眍?lèi)在哪里,并不知道執(zhí)行處理類(lèi)中的哪個(gè)方法,其實(shí)也就是不知道處理類(lèi)是通過(guò)哪種方式創(chuàng)建出來(lái)的,實(shí)現(xiàn)HttpRequestHandler?還是注解方式,或者是其他方式,我們不知道,所以需要HandlerAdapter來(lái)幫我們確認(rèn)調(diào)用哪個(gè)方法。

5、執(zhí)行處理器

6、處理器會(huì)返回一個(gè)ModelAndView對(duì)象給HandlerAdapter

7、通過(guò)HandlerAdapter將ModelAndView對(duì)象返回給前端控制器(DispatcherServlet)

8、前端控制器請(qǐng)求視圖解析器(ViewResolver)去進(jìn)行視圖解析,根據(jù)邏輯視圖名解析成真正的視圖(jsp),其實(shí)就是將ModelAndView對(duì)象中存放視圖的名稱(chēng)進(jìn)行查找,找到對(duì)應(yīng)的頁(yè)面形成視圖對(duì)象

9、返回視圖對(duì)象到前端控制器。

10、視圖渲染,就是將ModelAndView對(duì)象中的數(shù)據(jù)放到request域中,用來(lái)讓頁(yè)面加載數(shù)據(jù)的。

11、通過(guò)第8步,通過(guò)名稱(chēng)找到了對(duì)應(yīng)的頁(yè)面,通過(guò)第10步,request域中有了所需要的數(shù)據(jù),那么就能夠進(jìn)行視圖渲染了。最后將其返回

組件說(shuō)明:

DispatcherServlet:作為前端控制器,整個(gè)流程控制的中心,控制其它組件執(zhí)行,統(tǒng)一調(diào)度,降低組件之間的耦合性,提高每個(gè)組件的擴(kuò)展性。

HandlerMapping:通過(guò)擴(kuò)展處理器映射器實(shí)現(xiàn)不同的映射方式,例如:配置文件方式,實(shí)現(xiàn)接口方式,注解方式等。?

HandlAdapter:通過(guò)擴(kuò)展處理器適配器,支持更多類(lèi)型的處理器。

ViewResolver:通過(guò)擴(kuò)展視圖解析器,支持更多類(lèi)型的視圖解析,例如:jsp、freemarker、pdf、excel等。

轉(zhuǎn)載于:https://my.oschina.net/u/3873725/blog/1934376

總結(jié)

以上是生活随笔為你收集整理的springmvc框架原理分析的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。