Spring Boot静态资源无法加载:Thymeleaf图片不显示求助
Spring Boot 项目中Thymeleaf图片无法显示问题排查
问题背景
- 项目结构:
src/main/resources/static下存在images子文件夹,存放目标图片planet.jpg;展示图片的页面为cambioPassword.html - 技术栈:Spring Boot + Thymeleaf + Spring Security
- 问题现象:页面引用图片后仅显示默认图标,已排查路径拼写问题无效,怀疑Spring Security拦截静态资源导致
页面引用代码
<img th:src="@{img/planet.jpg}" class="img-thumbnail" style="max-width: 200px" />
文件夹结构

解决方案
1. 修正图片路径
你的图片实际存放在 static/images 目录下,Thymeleaf的 @{...} 语法中,开头的斜杠表示从静态资源根目录(即 static)开始查找,所以正确路径应该是:
<img th:src="@{/images/planet.jpg}" class="img-thumbnail" style="max-width: 200px" />
2. 配置Spring Security放行静态资源
如果路径修正后仍无法显示,大概率是Spring Security拦截了静态资源请求,需在Security配置类中添加放行规则:
方式一:通过HttpSecurity配置
@Override protected void configure(HttpSecurity http) throws Exception { http // 保留原有其他配置(如表单登录、csrf等) .authorizeRequests() // 放行所有images目录下的资源,可按需添加css、js等其他静态资源路径 .antMatchers("/images/**", "/css/**", "/js/**").permitAll() // 其他接口的授权规则 .anyRequest().authenticated(); }
方式二:通过WebSecurity忽略静态资源
@Override public void configure(WebSecurity web) throws Exception { // 直接忽略静态资源的安全校验,无需走授权流程 web.ignoring().antMatchers("/images/**", "/css/**", "/js/**"); }
3. 验证资源可访问性
启动项目后,直接在浏览器访问 http://localhost:8080/images/planet.jpg(根据你的项目端口和上下文路径调整),如果能正常显示图片,说明路径和权限配置已生效;若仍无法显示,检查图片文件名大小写(Linux环境下区分大小写)或文件是否损坏。
内容的提问来源于stack exchange,提问作者Redox
相关产品推荐
相关产品推荐

