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

使用VersionResourceResolver时静态资源哈希URL出现404错误求助

解决Spring Web静态资源版本化404问题

梳理你配置中的核心错误及修复方案如下:

1. 修复MvcConfiguration.java语法错误

setCachePeriod的数值计算缺少乘号,导致运行时异常:

// 错误写法
.setCachePeriod(60 * 60 * 24 365)
// 正确写法
.setCachePeriod(60 * 60 * 24 * 365)

2. 修正web.xml过滤器配置问题

  • 过滤器类名拼写错误:org.springramework遗漏字母t,应改为org.springframework
  • 过滤器名称不匹配:<filter>定义的filter-name是resourceFilter,但<filter-mapping>中误用resourceUrlFilter,两者必须一致

修正后的过滤器配置:

<filter>
  <filter-name>resourceFilter</filter-name>
  <filter-class>org.springframework.web.servlet.resource.ResourceUrlEncodingFilter</filter-class>
</filter>
<filter-mapping>
  <filter-name>resourceFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

3. 调整资源处理器配置

  • 启用资源链:将resourceChain(false)改为resourceChain(true),确保版本解析逻辑生效
  • 修正资源路径:addResourceLocations的路径以/结尾("/js/"),避免路径匹配歧义

修正后的资源处理器代码:

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry){
  registry.addResourceHandler("/js/**")
     .addResourceLocations("/js/")
     .setCachePeriod(60 * 60 * 24 * 365)
     .resourceChain(true)
     .addResolver(new VersionResourceResolver().addContentVersionStrategy("/**"));
}

额外验证项

  • 确认common.js确实存在于项目根目录的/js/文件夹下
  • 用Ctrl+Shift+R强制刷新Chrome浏览器,清除旧缓存干扰
  • 查看服务器日志,核对404请求的URL是否与生成的哈希URL完全一致

内容的提问来源于stack exchange,提问作者Jiwan Kim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 15:15:01