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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 07:05:31