SpringMVC和SpringBoot如何配置DispatcherServlet。同時(shí)springmvc的整個(gè)10步流程。

一、SpringMVC配置DispatcherServlet

1.1 SpringMVC基于XML配置DispacherServlet

    <servlet-name>springMVC</servlet-name>    
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    
    <init-param>    
        <param-name>contextConfigLocation</param-name>    
        <param-value>classpath*:/springMVC.xml</param-value>    
    </init-param>    
    <load-on-startup>1</load-on-startup>    
</servlet>    
<servlet-mapping>    
    <servlet-name>springMVC</servlet-name>    
    <url-pattern>/</url-pattern>    
</servlet-mapping>  

在Web.xml里配置DispatcherServlet:

  • <load-on-startup>1</load-on-startup>是啟動(dòng)順序,讓這個(gè)Servlet隨Servletp容器一起啟動(dòng)。
  • init-param 配置springMVC的配置文件讀取路徑
  • servlet-mapping 對(duì)所有請(qǐng)求路徑響應(yīng)DisPacherServlet。

1.2 SpringMVC基于配置類配置DisPacherServlet

package config;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class SpittrWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
    
    
//將DispatchServlet映射到"/"
    @Override
    protected String[] getServletMappings() {
        return new String[]{"/"};
    }


//指定配置類
    @Override
    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{WebConfig.class};
    }
    @Override
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{RootConfig.class};
    }
    

}

首先需要知道擴(kuò)展AbstractAnnotationConfigDispatcherServletInitializer的任意類都會(huì)自動(dòng)地配置DispatcherServlet和Spring應(yīng)用上下文。

繼承這個(gè)類需要重寫3個(gè)方法:

  1. getServletMappings 配置dispacherServlet映射到的路徑。
  2. getServletConfigClasses() ,指定當(dāng)DispatcherServlet加載應(yīng)用上下文時(shí),使用在WebConfig配置類(使用java配置)中的定義的關(guān)于web組件的bean,如控制器、視圖解析器以及處理器映射bean。
  3. getRootConfigClasses()指定了創(chuàng)建ContextLoaderListener應(yīng)用上下文bean的配置類。這些bean通常是驅(qū)動(dòng)應(yīng)用后端的中間層和數(shù)據(jù)層組件。

二、SpringBoot配置

2.1 配置類中配置

@Bean  
    public ServletRegistrationBean dispatcherRegistration(DispatcherServlet dispatcherServlet) {  
        return new ServletRegistrationBean(dispatcherServlet,"/api/*");  
    }  

2.2 SpringBoot配置文件中配置
可以在application.properties加入配置,如:

server.servlet-path=/api/*

三、SpringMVC執(zhí)行流程

SpringMVC執(zhí)行流程.png
  1. 用戶請(qǐng)求DispathcerServlet。
  2. DispatcherServlet接受到請(qǐng)求,將根據(jù)請(qǐng)求信息交給處理器映射器。
  3. 處理器映射器(HandlerMapping)根據(jù)用戶的url請(qǐng)求查找匹配該url的Handler,并返回一個(gè)執(zhí)行鏈。
  4. DispacherServlet再根據(jù)執(zhí)行鏈請(qǐng)求處理器適配器(HandlerAdapter)。
  5. 處理器適配器調(diào)用相應(yīng)的handle進(jìn)行處理。
  6. 對(duì)應(yīng)的handler處理完成后返回ModelAndVIew給處理器適配器。
  7. 處理器適配器將接受的ModelAndView返回給DispatcherServlet。
  8. DispatcherServlet請(qǐng)求視圖解析器來(lái)解析視圖。
  9. 視圖解析器處理完后返回View對(duì)象給DispacherServlet。
  10. 最后前端控制器對(duì)View進(jìn)行視圖渲染(即將模型數(shù)據(jù)填充至視圖中)。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本文是我自己在秋招復(fù)習(xí)時(shí)的讀書(shū)筆記,整理的知識(shí)點(diǎn),也是為了防止忘記,尊重勞動(dòng)成果,轉(zhuǎn)載注明出處哦!如果你也喜歡,那...
    波波波先森閱讀 12,454評(píng)論 6 86
  • 16. Web MVC 框架 16.1 Spring Web MVC 框架介紹 Spring Web 模型-視圖-...
    此魚(yú)不得水閱讀 1,159評(píng)論 0 4
  • SpringMVC介紹 Spring web mvc 和Struts2都屬于表現(xiàn)層的框架,它是Spring框架的一...
    day_Sunny閱讀 900評(píng)論 0 0
  • 對(duì)于java中的思考的方向,1必須要看前端的頁(yè)面,對(duì)于前端的頁(yè)面基本的邏輯,如果能理解最好,不理解也要知道幾點(diǎn)。 ...
    神尤魯?shù)婪?/span>閱讀 901評(píng)論 0 0
  • 梳子代表相思,很想念很掛念對(duì)方;梳子還寓意把心結(jié)打開(kāi),讓煩惱一掃而過(guò);古人在盛夏時(shí)節(jié),會(huì)用玉梳梳發(fā),鎮(zhèn)暑,養(yǎng)心。在...
    起風(fēng)了3155閱讀 814評(píng)論 4 11

友情鏈接更多精彩內(nèi)容