news 2026/10/1 8:14:22

SSM整合HTML:解决CSS/JS静态资源被过滤问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SSM整合HTML:解决CSS/JS静态资源被过滤问题

SSM 整合 HTML:解决 CSS/JS 静态资源被过滤问题(最常见原因 + 完整解决方案)

在 SSM(Spring + SpringMVC + MyBatis)项目中,前端静态资源(css、js、images、fonts 等)经常出现404或被拦截的情况,主要原因几乎都是SpringMVC 的 DispatcherServlet 把静态资源请求也拦截了。

下面按最常见场景 → 问题原因 → 解决方案的顺序,给你最实用、最完整的处理方式(2025-2026 主流做法)。

问题现象(你很可能遇到的几种情况)

  1. 页面引入的 css/js 路径正确,但浏览器显示 404

    <linkrel="stylesheet"href="/static/css/style.css"><scriptsrc="/static/js/jquery.min.js"></script>

    控制台报错:Failed to load resource: the server responded with a status of 404

  2. 使用${pageContext.request.contextPath}后仍然 404

  3. 部分路径能访问(如/index.html),但/static/**下的全部 404

核心原因

SpringMVC 的前端控制器<url-pattern>/</url-pattern>会拦截所有请求,包括静态资源请求。
而 SpringMVC 默认不处理静态资源,导致这些请求被当作普通请求处理,找不到 Controller 就返回 404。

解决方案(按推荐优先级排序)

方案1:使用<mvc:resources>标签(最常用、最推荐)

在spring-mvc.xml(或 Java Config)中添加静态资源映射。

XML 配置方式(SpringMVC 传统项目)

<!-- spring-mvc.xml --><!-- 静态资源映射 --><mvc:resourcesmapping="/static/**"location="/static/"cache-period="31536000"/><!-- 或者更清晰的写法:分开映射 --><mvc:resourcesmapping="/css/**"location="/static/css/"/><mvc:resourcesmapping="/js/**"location="/static/js/"/><mvc:resourcesmapping="/images/**"location="/static/images/"/><mvc:resourcesmapping="/fonts/**"location="/static/fonts/"/><!-- 重要:不要忘记这一行 --><mvc:annotation-driven/>

说明:

  • mapping:浏览器访问的路径前缀
  • location:项目中实际存放的目录(相对于 webapp 或 resources/static)
  • 推荐统一放在/static/下,路径清晰

HTML 中引用方式(推荐相对路径或 contextPath)

<!-- 方式1:推荐 --><linkrel="stylesheet"href="${pageContext.request.contextPath}/static/css/style.css"><!-- 方式2:项目根路径(开发阶段常用) --><linkrel="stylesheet"href="/static/css/style.css">
方案2:使用 Java 配置(SpringMVC 纯注解项目)
@Configuration@EnableWebMvc@ComponentScan("com.yourcompany.controller")publicclassWebMvcConfigimplementsWebMvcConfigurer{@OverridepublicvoidaddResourceHandlers(ResourceHandlerRegistryregistry){registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/").setCachePeriod(31536000);// 一年缓存// 也可以分开写,更清晰registry.addResourceHandler("/css/**").addResourceLocations("classpath:/static/css/");registry.addResourceHandler("/js/**").addResourceLocations("classpath:/static/js/");}}

注意:如果你的静态资源放在src/main/webapp/static/下,则写:

.addResourceLocations("/static/")
方案3:使用 Spring Boot(如果你的项目是 Spring Boot)

Spring Boot 默认已经开启了静态资源映射,几乎不需要额外配置。

默认规则(Boot 2.x / 3.x 都适用):

  • /static/、/public/、/resources/、/META-INF/resources/目录下的文件
  • 访问路径:/css/style.css→ 自动映射到以上目录

项目结构示例(Spring Boot 推荐):

src/main/resources/ └─ static/ ├─ css/ ├─ js/ ├─ images/ └─ fonts/

HTML 引用:

<linkrel="stylesheet"href="/css/style.css"><scriptsrc="/js/app.js"></script>

如果 Boot 里还是 404,检查是否:

  • 关闭了 WebMvc 自动配置(@EnableWebMvc 会禁用默认静态资源)
  • 路径写错了(Boot 不需要加 /static/ 前缀)
方案4:临时应急(不推荐长期使用)

在 web.xml 中把 DispatcherServlet 的 url-pattern 改成*.do或/action/*,让它不拦截静态资源。

<servlet-mapping><servlet-name>dispatcher</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping>

缺点:路径风格不统一,项目后期维护麻烦。

快速排查 Checklist(遇到 404 就按顺序查)

  1. 确认静态资源真的在正确目录下(/static/css/style.css 是否存在)
  2. 浏览器 F12 → Network 看请求路径是否正确
  3. 确认 spring-mvc.xml 中有<mvc:resources ... />或 Java Config
  4. 确认有<mvc:annotation-driven />(或@EnableWebMvc)
  5. 检查是否用了@EnableWebMvc(会导致 Boot 默认静态资源失效)
  6. 确认项目部署后,tomcat/web 容器能访问到静态文件(可直接输入 http://localhost:8080/static/css/style.css 测试)
  7. 最后:重启服务器、清空浏览器缓存

推荐的项目目录结构(SSM 经典)

webapp/ ├─ WEB-INF/ │ ├─ web.xml │ ├─ spring-mvc.xml │ └─ applicationContext.xml ├─ static/ │ ├─ css/ │ ├─ js/ │ ├─ images/ │ └─ fonts/ ├─ WEB-INF/views/ │ └─ index.jsp └─ index.jsp

总结:最简有效配置口诀

SSM 传统项目:
在 spring-mvc.xml 里加一行

<mvc:resourcesmapping="/static/**"location="/static/"/>

Spring Boot 项目:
把静态资源放在src/main/resources/static/下,直接用/css/xx.css访问

HTML 中引用:
始终推荐用${pageContext.request.contextPath}/static/css/xx.css

这样做,99% 的 SSM 项目静态资源 404 问题都能解决。

如果你的项目仍然不行,请告诉我:

  • 你用的是纯 SSM 还是 Spring Boot?
  • 静态资源具体放在哪个目录?
  • 浏览器请求的完整 URL 是多少?
  • spring-mvc.xml 里有没有<mvc:resources>?

把这些信息贴出来,我可以帮你秒定位问题。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/30 14:07:15

java+vue基于springboot的智慧医疗管理系统

目录智慧医疗管理系统摘要开发技术路线结论源码lw获取/同行可拿货,招校园代理 &#xff1a;文章底部获取博主联系方式&#xff01;智慧医疗管理系统摘要 智慧医疗管理系统基于SpringBoot和Vue技术栈开发&#xff0c;整合现代医疗信息化需求&#xff0c;实现高效、安全的医疗数…

作者头像 李华
网站建设 2026/9/30 14:07:16

基于STM32F103的自动监测系统嵌入式端软件基础平台的设计与实现

基于STM32F103的自动监测系统嵌入式端软件基础平台的设计与实现 第一章 设计背景与核心目标 自动监测系统在工业巡检、环境监测、设备运维等场景中应用广泛&#xff0c;其嵌入式端软件作为系统核心&#xff0c;直接决定数据采集精度、运行稳定性与功能扩展性。传统嵌入式软件多…

作者头像 李华
网站建设 2026/9/27 23:46:10

1小时吃透YOLOv9核心创新|机器人场景轻量化适配指南

1小时吃透YOLOv9核心创新&#xff5c;机器人场景轻量化适配指南 大家好&#xff01;今天是我「YOLOv9机器人视觉实战」学习计划的第一天。按照计划&#xff0c;我用1小时精读了YOLOv9论文的核心创新部分&#xff0c;跳过了基础CNN讲解&#xff0c;重点聚焦ELANv4骨干网络、C2f…

作者头像 李华
网站建设 2026/9/28 16:49:48

Grafana高危漏洞CVE-2025-4123:从路径遍历到账户沦陷的攻击链

“How CVE-2025–4123 Turned Grafana Into a Hacker’s Playground” 由作者 Aman Sharma 撰写 阅读时间 3 分钟 发布于 2025年7月19日 61 次收听/分享 起初只是一个路径遍历漏洞&#xff0c;却最终导致了XSS、SSRF和账户的完全沦陷。 自由链接 | 朋友链接 放大查看完整图片 …

作者头像 李华