Spring?MVC的完整執(zhí)行流程和常用組件詳解
1.Spring MVC執(zhí)行流程

Spring MVC的完整執(zhí)行流程如下:
- 客戶端發(fā)送請求給DispatcherServlet前端控制器
- DispatcherServlet根據(jù)請求調(diào)用HandlerMapping處理器映射器
- HandlerMapping解析請求對應(yīng)的Handler,返回一個執(zhí)行鏈
- DispatcherServlet將執(zhí)行鏈返回的Handler信息發(fā)給HandlerAdapter處理器適配器
- HandlerAdapter會調(diào)用對應(yīng)的Handler處理器(即Controller)
- Handler執(zhí)行完成后,會返回一個ModelAndView對象給HandlerAdapter
- HandlerAdapter將接收到的ModelAndView對象返回給DispatcherServlet
- DispatcherServlet根據(jù)ModelAndView對象選擇合適的ViewResolver視圖解析器
- ViewResolver根據(jù)邏輯View返回實際的view給DispatcherServlet
- DispatcherServlet對View進行渲染
- 將視圖渲染結(jié)果返回給瀏覽器(客戶端)
2.Spring MVC常用組件
2.1 DispatcherServlet
前端控制器。?戶請求到達前端控制器,它就相當(dāng)于MVC模式中的C,DispatcherServlet是整個流程控制的中?,由它調(diào)?其它組件處理?戶的請求,DispatcherServlet的存在降低了組件之間的耦合性,系統(tǒng)擴展性提?。
<!-- SpringMVC的前端控制器-->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--初始化時加載配置文件-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-config.xml</param-value>
</init-param>
<!--表示容器在啟動時立即加載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ù)?戶的請求地址來找到對應(yīng)的Handler即控制器,spring mvc提供了不同的映射器實現(xiàn)不同的映射?式,分別有:
- xml配置?式
- 實現(xiàn)接??式
- 注解?式
2.3 HandlAdapter
HandlAdapter,處理器適配器。按照特定的規(guī)則去執(zhí)行Handler,通過HandlerAdapter執(zhí)行處理器。
2.4 Handler
Handler,處理器。Handler 是DispatcherServlet前端控制器的后端控制器,在DispatcherServlet的控制下Handler對具體的?戶請求進?處理。由于Handler涉及到具體的?戶業(yè)務(wù)請求,所以?般情況需要程序員根據(jù)業(yè)務(wù)需求開發(fā)Handler。也就是我們常說的控制器類和方法。
//標(biāo)識此類為控制器類
@Controller
public class JspController {
@RequestMapping("/index")
public String firstController(){
//返回視圖名稱
return "success";
}
}
2.5 ViewResolver
ViewResolver,視圖解析器。ViewResolver負責(zé)將處理結(jié)果?成View視圖,ViewResolver?先根據(jù)邏輯視圖名解析成物理視圖名即具體的頁?地址,再?成View視圖對象,最后對View進?渲染將處理結(jié)果通過頁?展?給?戶。
<!--默認(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決java.lang.NullPointerException報錯以及分析出現(xiàn)的幾種原因
這篇文章介紹了解決java.lang.NullPointerException報錯的方法,以及分析出現(xiàn)的幾種原因。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12
Spring WebFlux實現(xiàn)參數(shù)校驗的示例代碼
請求參數(shù)校驗,在實際的應(yīng)用中很常見,網(wǎng)上的文章大部分提供的使用注解的方式做參數(shù)校驗。本文主要介紹 Spring Webflux Function Endpoint 使用 Spring Validation 來校驗請求的參數(shù)。感興趣的可以了解一下2021-08-08
SpringBoot中實現(xiàn)Druid前端監(jiān)控界面自動登錄功能
這篇文章主要介紹了SpringBoot中實現(xiàn)Druid前端監(jiān)控界面自動登錄功能,需要的朋友可以參考下2024-08-08

