使用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
相关产品推荐
相关产品推荐

