Java Spring MVC 怎么通过路径匹配规则过滤静态资源访问路径

冷漠man

冷漠man

2026-08-04

668人浏览

原创

spring mvc需配置静态资源映射以避免404,常用方式是用声明url路径与物理位置映射,或用委托容器默认servlet处理;注意路径前缀隔离、配置生效条件及spring boot默认支持。

java spring mvc 怎么通过路径匹配规则过滤静态资源访问路径

Spring MVC 默认会把所有请求(包括 .css.js、图片等静态资源)都交给 DispatcherServlet 处理,而它本身不负责返回文件内容,导致 404。要让静态资源能被正常访问,关键在于**用路径匹配规则明确告诉框架:哪些 URL 是静态资源,应跳过 Controller 处理流程**。核心方式是通过配置映射规则,把请求导向资源处理器或容器默认 Servlet。

<resources></resources> 显式声明资源路径

这是最常用、最可控的方式。在 Spring 配置文件(如 springmvc-config.xml)中添加:

  • <annotation-driven></annotation-driven> 必须存在,否则 <resources></resources> 不生效
  • mapping 是浏览器请求的 URL 路径模式,支持 Ant 风格通配符:**(多层)、*(单层)、?(单字符)
  • location 是服务器上静态资源的实际物理路径,末尾必须带 /
  • 例如:<resources mapping="/static/**" location="/WEB-INF/static/"></resources> 表示所有以 /static/ 开头的请求,都去 /WEB-INF/static/ 目录下找对应文件
  • JSP 中引用时写 <link href="/static/css/app.css">,路径与 mapping 保持一致

<default-servlet-handler></default-servlet-handler> 委托给容器处理

当不想显式定义每个资源路径时,可启用该配置,让 Spring 把无法匹配 Controller 的请求,自动转交 Tomcat 等容器的默认 Servlet(如 default)处理:

Java JDK 25
Java JDK 25

Java JDK 25 来自 OpenJDK 官方归档,版本为 JDK 25,本条下载地址已指向官方 Windows x64 zip 安装包直链,适合调试旧项目或兼容旧版 Java 运行环境。

下载
  • 只需在配置文件中加一行:<default-servlet-handler></default-servlet-handler>
  • 它内部会注册 DefaultServletHttpRequestHandler,对所有未匹配的请求做二次分发
  • 若你用的不是 Tomcat(比如 Resin 或 WebLogic),需指定 default-servlet-name 属性
  • 优点是简单,缺点是无法控制缓存头、版本化、资源压缩等高级功能

避免路径冲突的常见实践

静态资源路径和 Controller 路径容易重名(比如同时有 /login 接口和 /login.html 页面),引发优先级问题:

  • 推荐为静态资源统一加前缀,如 /res/**/assets/**,与业务路径隔离
  • 不要把静态资源放在 / 根路径下直接映射,否则可能被 Controller 覆盖
  • 若使用 Spring Boot,默认已自动配置四个标准位置:classpath:/staticclasspath:/publicclasspath:/resourcesclasspath:/META-INF/resources,无需额外配置
  • 自定义 static-locations 时,注意是覆盖而非追加——想保留默认位置,就得全部重新列出

验证是否生效的关键点

配置完别急着重启,先检查几个易错环节:

  • 确保 web.xmlDispatcherServlet<url-pattern>/</url-pattern> 确实存在(这是触发问题的前提)
  • 查看项目构建后,静态文件是否真实出现在目标目录(如 target/xxx/WEB-INF/static/
  • 浏览器开发者工具 Network 标签页里,看 CSS/JS 请求返回的是 200 还是 404,响应头是否有 Content-Type
  • 如果用了 JSP,引用路径建议统一用 ${pageContext.request.contextPath},避免硬编码上下文路径

Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南

相关专题

更多
java
java

Java是一个通用术语,用于表示Java软件及其组件,包括“Java运行时环境 (JRE)”、“Java虚拟机 (JVM)”以及“插件”。php中文网还为大家带了Java相关下载资源、相关课程以及相关文章等内容,供大家免费下载使用。

2023.06.15

3768

6

java正则表达式语法
java正则表达式语法

java正则表达式语法是一种模式匹配工具,它非常有用,可以在处理文本和字符串时快速地查找、替换、验证和提取特定的模式和数据。本专题提供java正则表达式语法的相关文章、下载和专题,供大家免费下载体验。

2023.07.05

2796

9

java自学难吗
java自学难吗

Java自学并不难。Java语言相对于其他一些编程语言而言,有着较为简洁和易读的语法,本专题为大家提供java自学难吗相关的文章,大家可以免费体验。

2023.07.31

2802

8

java配置jdk环境变量
java配置jdk环境变量

Java是一种广泛使用的高级编程语言,用于开发各种类型的应用程序。为了能够在计算机上正确运行和编译Java代码,需要正确配置Java Development Kit(JDK)环境变量。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.01

637

3

java保留两位小数
java保留两位小数

Java是一种广泛应用于编程领域的高级编程语言。在Java中,保留两位小数是指在进行数值计算或输出时,限制小数部分只有两位有效数字,并将多余的位数进行四舍五入或截取。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

2023.08.02

601

3

java基本数据类型
java基本数据类型

java基本数据类型有:1、byte;2、short;3、int;4、long;5、float;6、double;7、char;8、boolean。本专题为大家提供java基本数据类型的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

705

5

java有什么用
java有什么用

java可以开发应用程序、移动应用、Web应用、企业级应用、嵌入式系统等方面。本专题为大家提供java有什么用的相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.02

1290

5

java在线网站
java在线网站

Java在线网站是指提供Java编程学习、实践和交流平台的网络服务。近年来,随着Java语言在软件开发领域的广泛应用,越来越多的人对Java编程感兴趣,并希望能够通过在线网站来学习和提高自己的Java编程技能。php中文网给大家带来了相关的视频、教程以及文章,欢迎大家前来学习阅读和下载。

2023.08.03

18844

3

配置java环境变量
配置java环境变量

配置Java环境变量是为了让操作系统能够识别和使用Java的相关命令和功能。本专题为大家提供配置java环境变量相关文章,帮助大家解决问题。

2023.08.03

646

8

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Java JDBC数据库连接官方教程
Java JDBC数据库连接官方教程

共0课时 | 0人学习

Java 26官方文档
Java 26官方文档

共0课时 | 0人学习