DispatcherServlet匹配路径设为/配置不拦截css等资源

本文详细解析了SpringMVC配置中的dispatch-servlet如何拦截所有请求,并针对静态资源如CSS、JS、图片等的处理提出了解决方案。通过调整web.xml配置,或使用<mvc:default-servlet-handler/>及<mvc:resources/>标签,实现静态资源的有效管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题

 <servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <!--会拦截所有的请求-->
    <url-pattern>/</url-pattern> 
</servlet-mapping>
  1. 这样配置的dispatch-servlet会拦截所有请求(除了jsp会由容器默认的Servlet拦截,下面提到的),但是控制器的@RequestMapper(“url”),并没有所有都满足。
  2. 比如./xxpath/xxx.html, xxx.css等,是没有对应的控制器可以映射的。就会丢掉,对应就成了响应码就成了404。

解决方法

1.可以修改Spring MVC的拦截范围
2.Servlet容器有个默认拦截可以配置,其优先于Spring MVC的拦截

基于方法1

①修改web.xml配置文件中dispatch的的范围
比如改为REST风格的"/*.do",但是所有请求都要后缀加".do",有点麻烦,不能完全REST。以下两种mvc:…就是Spring MVC提出的很好解决方法。

②保持Spring MVC在 web.xml文件中的拦截所有的配置, 将拦截到的静态资源请求交回给default Servlet管理 【推荐】

<mvc:default-servlet-handler />

③保持Spring MVC在 web.xml文件中的拦截所有的配置,二级映射Spring MVC容器部分url
在Spring MVC配置文件中加入以下需要过滤的目录文件资源即可(可以添加多条)

<mvc:resources location="" mapping=""/> 
基于方法2

可以在web.xml文件中配置Servlet的默认拦截

<servlet-mapping>
   <servlet-name>default</servlet-name>
   <url-pattern>/js/*.js</url-pattern>
   <url-pattern>/css/*.css</url-pattern>
   <url-pattern>/testPage/*.html</url-pattern>
   <url-pattern>/image/*</url-pattern>
</servlet-mapping>

这个可以不配置对应的<servlet>…</servlet>
但是必须配在dispatch之前,即如下Spring MVC的dispatch分发请求的Servlet之前

<servlet>
   <servlet-name>dispatcher</servlet-name>
   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapper>
   <servlet-name>dispatcher</servlet-name>
   ...
</servlet-mapper>
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值