Spring?MVC的完整執(zhí)行流程和常用組件詳解
1.Spring MVC執(zhí)行流程
Spring MVC的完整執(zhí)行流程如下:
- 客戶端發(fā)送請(qǐng)求給DispatcherServlet前端控制器
- DispatcherServlet根據(jù)請(qǐng)求調(diào)用HandlerMapping處理器映射器
- HandlerMapping解析請(qǐng)求對(duì)應(yīng)的Handler,返回一個(gè)執(zhí)行鏈
- DispatcherServlet將執(zhí)行鏈返回的Handler信息發(fā)給HandlerAdapter處理器適配器
- HandlerAdapter會(huì)調(diào)用對(duì)應(yīng)的Handler處理器(即Controller)
- Handler執(zhí)行完成后,會(huì)返回一個(gè)ModelAndView對(duì)象給HandlerAdapter
- HandlerAdapter將接收到的ModelAndView對(duì)象返回給DispatcherServlet
- DispatcherServlet根據(jù)ModelAndView對(duì)象選擇合適的ViewResolver視圖解析器
- ViewResolver根據(jù)邏輯View返回實(shí)際的view給DispatcherServlet
- DispatcherServlet對(duì)View進(jìn)行渲染
- 將視圖渲染結(jié)果返回給瀏覽器(客戶端)
2.Spring MVC常用組件
2.1 DispatcherServlet
前端控制器。?戶請(qǐng)求到達(dá)前端控制器,它就相當(dāng)于MVC模式中的C,DispatcherServlet是整個(gè)流程控制的中?,由它調(diào)?其它組件處理?戶的請(qǐng)求,DispatcherServlet的存在降低了組件之間的耦合性,系統(tǒng)擴(kuò)展性提?。
<!-- SpringMVC的前端控制器--> <servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--初始化時(shí)加載配置文件--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-config.xml</param-value> </init-param> <!--表示容器在啟動(dòng)時(shí)立即加載Servlet--> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping>
2.2 HandlerMapping
HandlerMapping,處理器映射器。根據(jù)?戶的請(qǐng)求地址來(lái)找到對(duì)應(yīng)的Handler即控制器,spring mvc提供了不同的映射器實(shí)現(xiàn)不同的映射?式,分別有:
- xml配置?式
- 實(shí)現(xiàn)接??式
- 注解?式
2.3 HandlAdapter
HandlAdapter,處理器適配器。按照特定的規(guī)則去執(zhí)行Handler,通過(guò)HandlerAdapter執(zhí)行處理器。
2.4 Handler
Handler,處理器。Handler 是DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler對(duì)具體的?戶請(qǐng)求進(jìn)?處理。由于Handler涉及到具體的?戶業(yè)務(wù)請(qǐng)求,所以?般情況需要程序員根據(jù)業(yè)務(wù)需求開(kāi)發(fā)Handler。也就是我們常說(shuō)的控制器類和方法。
//標(biāo)識(shí)此類為控制器類 @Controller public class JspController { @RequestMapping("/index") public String firstController(){ //返回視圖名稱 return "success"; } }
2.5 ViewResolver
ViewResolver,視圖解析器。ViewResolver負(fù)責(zé)將處理結(jié)果?成View視圖,ViewResolver?先根據(jù)邏輯視圖名解析成物理視圖名即具體的頁(yè)?地址,再?成View視圖對(duì)象,最后對(duì)View進(jìn)?渲染將處理結(jié)果通過(guò)頁(yè)?展?給?戶。
<!--默認(rèn)的內(nèi)置視圖解析器--> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!--視圖前綴--> <property name="prefix" value="/WEB-INF/jsp/"/> <!--視圖后綴--> <property name="suffix" value=".jsp"/> </bean>
總結(jié)
到此這篇關(guān)于Spring MVC完整執(zhí)行流程和常用組件詳解的文章就介紹到這了,更多相關(guān)Spring MVC執(zhí)行流程和組件內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
SpringCloud?Gateway詳細(xì)分析實(shí)現(xiàn)負(fù)載均衡與熔斷和限流
這篇文章主要介紹了SpringCloud?Gateway實(shí)現(xiàn)路由轉(zhuǎn)發(fā),負(fù)載均衡,熔斷和限流,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07springboot中RestTemplate配置HttpClient連接池詳解
這篇文章主要介紹了springboot中RestTemplate配置HttpClient連接池詳解,這些Http連接工具,使用起來(lái)都比較復(fù)雜,如果項(xiàng)目中使用的是Spring框架,可以使用Spring自帶的RestTemplate來(lái)進(jìn)行Http連接請(qǐng)求,需要的朋友可以參考下2023-11-11SpringBoot后端接收數(shù)組對(duì)象的實(shí)現(xiàn)
這篇文章主要介紹了SpringBoot后端接收數(shù)組對(duì)象的實(shí)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-11-11springmvc+spring+mybatis實(shí)現(xiàn)用戶登錄功能(上)
這篇文章主要為大家詳細(xì)介紹了springmvc+spring+mybatis實(shí)現(xiàn)用戶登錄功能,比較基礎(chǔ)的學(xué)習(xí)教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07SpringBoot開(kāi)發(fā)之整合Mybatis詳解
這篇文章主要介紹了SpringBoot開(kāi)發(fā)之整合Mybatis詳解,MyBatis是一個(gè)半自動(dòng)的ORM框架,它允許我們通過(guò)編寫SQL語(yǔ)句來(lái)操作數(shù)據(jù)庫(kù),使用MyBatis,我們可以通過(guò)定義映射文件(XML文件)或使用注解的方式將Java對(duì)象與數(shù)據(jù)庫(kù)表進(jìn)行映射,需要的朋友可以參考下2023-09-09SpringMVC請(qǐng)求、響應(yīng)和攔截器的使用實(shí)例詳解
攔截器(Interceptor) 它是一個(gè)Spring組件,并由Spring容器管理,并不依賴Tomcat等容器,是可以單獨(dú)使用的,這篇文章給大家介紹SpringMVC請(qǐng)求、響應(yīng)和攔截器的使用,感興趣的朋友一起看看吧2024-03-03