SpringMVC之DispatcherServlet配置文件应该放在哪里呢

 更新时间:2023年11月03日 09:40:06   作者:鱼哥  
这篇文章主要介绍了SpringMVC之DispatcherServlet配置文件应该放在哪里的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

DispatcherServlet配置文件应该放在哪里

DispatcherServlet是前置控制器,配置在web.xml文件中的。拦截匹配的请求,Servlet拦截匹配规则要自己定义,把拦截下来的请求,依据相应的规则分发到目标Controller来处理,是配置spring MVC的第一步。

但是,我们在搭建SpringMVC框架时,往往总是把DispatcherServlet的配置文件放错位置。

网上有的说:springDispatcherServletMVC-servlet.xml(暂且命名这么一个springDispatcherServletMVC的dispatchservlet配置文件)应该放在WEB-INF下面(与web.xml放一起);

有的说:应该直接把springDispatcherServletMVC-servlet.xml放在src文件夹下面;

有的说:在java resources下面新建一个config的resource folder,把配置文件都放在这个资源文件夹下面。那么到底哪种是正确的呢?

答案是:这个要根据web.xml中DispatcherServlet的配置声明有关系。

第一种情况

当web.xml中DispatcherServlet配置声明中,没有明确DispatcherServlet前端控制器配置文件的位置时,则系统默认DispatcherServlet前端控制器配置文件放在WEB-INF文件夹下。

例如:

项目结构示意图

web.xml部分代码如下:

    <!--信息转发器,该servlet名为mvc-dispatcher(名称可修改,但必须与mvc-dispatcher-servlert.xml的前缀名相同),用于拦截请求(url-pattern为 / ,说明拦截所有请求),并交由Spring MVC的后台控制器来处理。这一项配置是必须的-->
    <servlet>
        <servlet-name>mvc-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>mvc-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

上面代码声明了一个命名为mvc-dispatchert的前端控制器(DispatcherServlet),并且没有指定该servlet配置文件的路径,那么系统将以默认名字mvc-dispatcher-servlet.xml在默认路径/WEB-INF下寻找它,位置不正确,名字不正确,都会报错。

第二种情况

当web.xml中DispatcherServlet配置声明中,已经明确DispatcherServlet前端控制器配置文件的位置时,则必须将前端控制器的配置文件放在src下面,不能放在webcontent(webapp)下了,当然,在src的各级子文件夹中也是可以的。

一般放在java resources下面,或者在resources下新建一个config的文件夹专门用来存放配置文件,文件结构如下:

项目结构示意图

web.xml部分代码如下:

    <!--信息转发器,该servlet配置文件存放在/resources/config下,用于拦截请求(url-pattern为 / ,说明拦截所有请求),并交由Spring MVC的
    后台控制器来处理。这一项配置是必须的-->
    <servlet>
        <servlet-name>mvc-dispatcherhahaha</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:config/mvc-dispatcher-servlet.xml</param-value>
    </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>mvc-dispatcherhahaha</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

上面代码中,明确了contextConfigLocation的地址为:classpath:(即在classes文件夹下面)。

并且请注意,此处我估计将配置文件中的servlet类命名为mvc-dispatcherhahaha,就是为了与配置文件名称mvc-dispatcher-servlet.xml区分开来,因此可以看出,此处命名是任意的,只需再位置参数init-param中体现出来即可。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 解决JDK9以上的非法反射访问警告的问题

    解决JDK9以上的非法反射访问警告的问题

    文章介绍了在JDK9及以上版本中,由于模块系统限制,旧版库(如protostuff)会出现非法反射访问的警告,解决方法是使用--illegal-access参数,并通过--add-opens参数允许特定模块的非法反射访问,文章还提供了在IDEA和构建工具(Maven和Gradle)中配置这些参数的示例
    2025-11-11
  • 关于CommandLineRunner的使用详解

    关于CommandLineRunner的使用详解

    本文介绍了如何在SpringBoot项目启动时使用CommandLineRunner和ApplicationRunner接口进行数据预加载或操作,通过实现这两个接口,可以在项目启动时执行特定的任务,同时,还展示了如何使用@Order注解来控制多个实现类的加载顺序
    2024-12-12
  • Java17新特性之Switch表达式改进的使用小结

    Java17新特性之Switch表达式改进的使用小结

    Java17对​​switch​​表达式进行了进一步改进,使其更加简洁、直观,并支持更现代的编程风格,本文就来详细的介绍一下,感兴趣的可以了解一下
    2025-10-10
  • SpringBoot之跨域过滤器配置允许跨域访问方式

    SpringBoot之跨域过滤器配置允许跨域访问方式

    这篇文章主要介绍了SpringBoot之跨域过滤器配置允许跨域访问方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Mapper层继承BaseMapper<T>需要引入的pom依赖方式

    Mapper层继承BaseMapper<T>需要引入的pom依赖方式

    这篇文章主要介绍了Mapper层继承BaseMapper<T>需要引入的pom依赖方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-01-01
  • Java实现简单的表达式计算器功能示例

    Java实现简单的表达式计算器功能示例

    这篇文章主要介绍了Java实现简单的表达式计算器功能,结合实例形式分析了Java针对输入表达式的符号分解与数值运算相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • Spring Security与JWT实现微服务安全认证的方法

    Spring Security与JWT实现微服务安全认证的方法

    本文详细介绍了在Spring Cloud微服务架构中使用Spring Security和JWT实现安全认证的完整方案,通过合理的架构设计、安全的实现方式和完善的防护措施,可以构建一个安全、可靠的微服务认证系统,本文介绍的非常详细,感兴趣的朋友一起看看吧
    2026-01-01
  • Java实现读取CSV文件数据内容(含逗号处理)

    Java实现读取CSV文件数据内容(含逗号处理)

    这篇文章主要为大家详细介绍了如何使用Java实现读取CSV文件数据内容,包含了逗号处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2025-07-07
  • JVM Client和Server端有什么区别

    JVM Client和Server端有什么区别

    这篇文章主要介绍了JVM Client和Server端有什么区别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • springboot + elasticsearch 实现聚合查询的详细代码

    springboot + elasticsearch 实现聚合查询的详细代码

    文章介绍了如何在Spring Boot 2.2.6中使用Elasticsearch进行聚合查询,重点在于通过API创建索引和映射,而不是使用Spring Data Elasticsearch的自动创建功能,文章还提到在创建映射时,Elasticsearch会自动为keyword类型添加keyword属性,感兴趣的朋友一起看看吧
    2025-02-02

最新评论