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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:15:05