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)文章
解決java.lang.NullPointerException報(bào)錯(cuò)以及分析出現(xiàn)的幾種原因
這篇文章介紹了解決java.lang.NullPointerException報(bào)錯(cuò)的方法,以及分析出現(xiàn)的幾種原因。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-12-12
Springboot框架實(shí)現(xiàn)自動(dòng)裝配詳解
在使用springboot時(shí),很多配置我們都沒(méi)有做,都是springboot在幫我們完成,這很大一部分歸功于springboot自動(dòng)裝配。本文將詳細(xì)為大家講解SpringBoot的自動(dòng)裝配原理,需要的可以參考一下2022-08-08
Java springboot 整合 Nacos的實(shí)例代碼
這篇文章主要介紹了Java springboot 整合 Nacos的實(shí)例,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-04-04
Spring WebFlux實(shí)現(xiàn)參數(shù)校驗(yàn)的示例代碼
請(qǐng)求參數(shù)校驗(yàn),在實(shí)際的應(yīng)用中很常見(jiàn),網(wǎng)上的文章大部分提供的使用注解的方式做參數(shù)校驗(yàn)。本文主要介紹 Spring Webflux Function Endpoint 使用 Spring Validation 來(lái)校驗(yàn)請(qǐng)求的參數(shù)。感興趣的可以了解一下2021-08-08
SpringBoot異步與事務(wù)一起使用的問(wèn)題解決
本文主要介紹了SpringBoot異步與事務(wù)一起使用的問(wèn)題解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
SpringBoot中實(shí)現(xiàn)Druid前端監(jiān)控界面自動(dòng)登錄功能
這篇文章主要介紹了SpringBoot中實(shí)現(xiàn)Druid前端監(jiān)控界面自動(dòng)登錄功能,需要的朋友可以參考下2024-08-08
mybatis?plus實(shí)現(xiàn)分頁(yè)邏輯刪除
這篇文章主要為大家介紹了mybatis?plus實(shí)現(xiàn)分頁(yè)邏輯刪除的方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05

