You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

带通配符的Servlet映射问题:web.xml中特定路径可行通配符失效

解决Spring MVC Servlet通配符映射失效问题

我之前也踩过这个坑!当指定具体文件路径时Servlet映射能正常生效,但用通配符就不行,基本都是Spring MVC的静态资源处理规则或者Servlet容器的匹配优先级在搞事情,咱们一步步来排查解决:

1. 先确认你的通配符写法是否正确

Servlet规范里的URL匹配规则有明确优先级:精确匹配 > 路径匹配(带/*) > 扩展名匹配(*.xx)。如果你的通配符写法不对,自然不会生效:

  • 如果你想匹配/resources123/下的所有子资源,正确的<url-pattern>应该是 /resources123/*(注意末尾的/*,少了它只会匹配精确的/resources123路径);
  • 如果你想匹配所有.css文件,可以写*.css,但这种写法会拦截所有路径下的css请求,不推荐针对特定资源目录使用。

2. 配置Spring MVC静态资源映射(核心解决步骤)

当DispatcherServlet通过通配符接管了某个路径的请求后,它默认会尝试去找对应的Controller方法处理,而不会自动转发到静态文件。这时候必须告诉Spring哪些请求是静态资源,直接返回文件内容:

XML配置方式(比如spring-servlet.xml)

<!-- 开启Spring MVC注解驱动,必须加,否则静态资源配置不生效 -->
<mvc:annotation-driven/>

<!-- 配置静态资源映射:匹配/resources123/**路径的请求,从/resources123/目录下找资源 -->
<mvc:resources mapping="/resources123/**" location="/resources123/"/>

JavaConfig配置方式

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
@EnableWebMvc // 开启Spring MVC注解驱动
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        // 配置静态资源映射规则
        registry.addResourceHandler("/resources123/**")
                .addResourceLocations("/resources123/");
    }
}

3. 检查是否有其他Servlet的映射冲突

如果你的Web应用里还有其他Servlet(比如容器默认的DefaultServlet,或者自定义的其他Servlet)也配置了类似的通配符映射(比如/resources123/*),Servlet容器会根据Servlet的加载顺序来决定谁处理请求,可能导致你的DispatcherServlet拿不到请求。这种情况下,要么调整其他Servlet的映射路径,要么调整DispatcherServlet的<load-on-startup>值(值越小加载优先级越高)。

4. 验证静态资源路径是否正确

最后再确认一下你的静态资源是不是真的放在Web应用的/resources123/目录下,比如在Tomcat里,这个目录应该在webapp/resources123/下。另外注意Linux服务器上路径是区分大小写的,别因为大小写不匹配导致找不到资源。

内容的提问来源于stack exchange,提问作者DD.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:32:23