Spring Boot中使用Thymeleaf显示图像

💡 原文中文,约2400字,阅读约需6分钟。
📝

内容提要

Thymeleaf是一种流行的Java模板引擎,与Spring框架兼容,用于生成HTML视图。本教程介绍了如何在Spring Boot应用程序中使用Thymeleaf显示图像。首先,需要按照约定在资源文件夹中创建模板和静态目录,并在HTML代码中使用Thymeleaf的th:src属性指定图像的相对路径。还可以将图像直接放在静态文件夹中,无需指定资源和静态路径段。最后,需要避免在图像路径中包含resource或static关键字,以避免路径错误。

🔎

延伸解读

路径引用为何要省略 static 和 resources

Spring Boot 默认将 classpath 下的 /static、/public、/resources、/META-INF/resources 等目录映射为静态资源根路径。因此,在 Thymeleaf 中使用 th:src="@{images/cat.jpg}" 时,Spring 会自动从 static 目录下查找 images/cat.jpg。若写成 @{../static/images/cat.jpg} 或包含 resource/static 关键字,反而会破坏默认映射,导致图片 404。理解这一约定可

图片放置位置与引用方式的对应关系

文章演示了两种放置方式:一是放在 resources/static/images/cat.jpg,引用时写 @{images/cat.jpg};二是直接放在 resources/static/cat.jpg,引用时写 @{cat.jpg}。两者都有效,区别在于是否创建子目录。虽然直接放根目录更简短,但文章建议为静态文件建立子文件夹,以便分类管理图片、CSS、JS 等资源,长期维护更清晰。

控制器路由与视图解析的配合

要让图片随页面显示,还需一个控制器将“/”映射到 index 视图。示例中 @Controller 类的 home() 方法返回 "index",Thymeleaf 便会渲染 templates/index.html。这提醒我们:静态资源路径正确只是第一步,若没有对应的视图路由,页面本身无法加载,图片自然也不会出现。两者需同时配置正确。

❓

Q&A

在Spring Boot项目中,使用Thymeleaf显示图片时,图片应该放在哪个目录下?

图片应放在resources/static目录下,通常建议在static下创建images子目录,例如resources/static/images/cat.jpg。

Thymeleaf模板中如何正确引用图片路径?

使用th:src属性指定相对路径,例如<img th:src="@{images/cat.jpg}">。可以省略resources和static路径段,直接引用图片文件。

为什么在Thymeleaf图片路径中不能包含static或resources关键字?

因为Spring Boot已预先配置为从static文件夹提供静态资源,如果在路径中包含static或resources,会导致路径错误,图片无法加载。

如何在Spring Boot中配置控制器以显示Thymeleaf模板中的图片?

创建一个@Controller类,添加@RequestMapping("/")方法返回"index"视图模板,这样加载应用时就会显示图片。

Thymeleaf模板文件应该放在Spring Boot项目的哪个目录?

Thymeleaf HTML模板文件应放在resources/templates目录中。

在Spring Boot中使用Thymeleaf显示图片需要添加哪些依赖?

需要在pom.xml中添加spring-boot-starter-web和spring-boot-starter-thymeleaf依赖。

🏷️

标签

➡️

继续阅读