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

📅 发布时间:2026/7/6 1:02:52 👁️ 浏览次数:
SSM整合HTML:解决CSS/JS静态资源被过滤问题
SSM 整合 HTML解决 CSS/JS 静态资源被过滤问题最常见原因 完整解决方案在 SSMSpring SpringMVC MyBatis项目中前端静态资源css、js、images、fonts 等经常出现404或被拦截的情况主要原因几乎都是SpringMVC 的 DispatcherServlet 把静态资源请求也拦截了。下面按最常见场景 → 问题原因 → 解决方案的顺序给你最实用、最完整的处理方式2025-2026 主流做法。问题现象你很可能遇到的几种情况页面引入的 css/js 路径正确但浏览器显示 404linkrelstylesheethref/static/css/style.cssscriptsrc/static/js/jquery.min.js/script控制台报错Failed to load resource: the server responded with a status of 404使用${pageContext.request.contextPath}后仍然 404部分路径能访问如/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-period31536000/!-- 或者更清晰的写法分开映射 --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推荐 --linkrelstylesheethref${pageContext.request.contextPath}/static/css/style.css!-- 方式2项目根路径开发阶段常用 --linkrelstylesheethref/static/css/style.css方案2使用 Java 配置SpringMVC 纯注解项目ConfigurationEnableWebMvcComponentScan(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 BootSpring 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 引用linkrelstylesheethref/css/style.cssscriptsrc/js/app.js/script如果 Boot 里还是 404检查是否关闭了 WebMvc 自动配置EnableWebMvc 会禁用默认静态资源路径写错了Boot 不需要加 /static/ 前缀方案4临时应急不推荐长期使用在 web.xml 中把 DispatcherServlet 的 url-pattern 改成*.do或/action/*让它不拦截静态资源。servlet-mappingservlet-namedispatcher/servlet-nameurl-pattern*.do/url-pattern/servlet-mapping缺点路径风格不统一项目后期维护麻烦。快速排查 Checklist遇到 404 就按顺序查确认静态资源真的在正确目录下/static/css/style.css 是否存在浏览器 F12 → Network 看请求路径是否正确确认 spring-mvc.xml 中有mvc:resources ... /或 Java Config确认有mvc:annotation-driven /或EnableWebMvc检查是否用了EnableWebMvc会导致 Boot 默认静态资源失效确认项目部署后tomcat/web 容器能访问到静态文件可直接输入 http://localhost:8080/static/css/style.css 测试最后重启服务器、清空浏览器缓存推荐的项目目录结构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把这些信息贴出来我可以帮你秒定位问题。