Spring Boot应用中HTML无法正常加载JS与CSS静态资源问题求助
问题根因
这是Spring Boot默认静态资源映射规则与你填写的资源路径不匹配导致的加载失败。
Spring Boot默认会将classpath:/static/、classpath:/public/、classpath:/resources/、classpath:/META-INF/resources/四个目录下的文件映射为对外可直接访问的静态资源,访问时不需要携带static前缀。你当前HTML中填写的static/js/send.js会被解析为请求{应用根地址}/static/js/send.js,但实际该文件的对外访问路径为{应用根地址}/js/send.js,所以请求返回404,JS函数和CSS样式自然无法生效。你将JS代码直接写在HTML中可以正常运行,也反向验证了是外部静态资源加载失败的问题。
解决方案
1. 修正HTML中的资源引用路径
直接删除引用路径中的static前缀,推荐添加/使用绝对路径,避免多级路由场景下相对路径匹配错误:
<!-- 原错误写法 --> <script src="static/js/send.js"></script> <link rel="stylesheet" href="static/css/button.css"> <!-- 修改后正确写法 --> <script src="/js/send.js"></script> <link rel="stylesheet" href="/css/button.css">
2. 异常场景排查(修改路径后仍不生效时参考)
- 检查项目编译后的输出目录(Maven项目对应
target/classes,Gradle项目对应build/classes)下是否存在js、css目录及对应文件,确保静态资源被正确打包 - 如果你自定义了Spring MVC的资源映射规则,确认没有覆盖默认配置,也可以显式添加静态资源映射:
@Configuration public class WebMvcConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**") .addResourceLocations("classpath:/static/"); } }
- 检查项目中配置的登录拦截器、权限校验拦截器是否拦截了静态资源请求,将
/js/**、/css/**等静态资源路径加入拦截器排除名单即可。
内容的提问来源于stack exchange,提问作者Tomek Nowak
相关产品推荐
相关产品推荐

