知識庫 / Spring / Spring Boot RSS 訂閱

Thymeleaf 中顯示圖像

Spring Boot
HongKong
9
11:18 AM · Dec 06 ,2025

1. 概述

Thymeleaf 是一個流行的 Java 模板引擎,與 Spring 框架兼容,用於生成 HTML 視圖。 在 Web 應用程序中,渲染圖像是一個主要功能。

Spring Boot 組織良好的目錄結構,用於 Java 文件和資源文件,使得在 HTML 文件中定義圖像路徑變得容易。

在本教程中,我們將設置一個簡單的 Spring Boot 項目,並從 resources 文件夾中提供圖像。 此外,我們還將瞭解如何在不定義圖像路徑的情況下使用 Thymeleaf。

2. 項目設置

為了開始,讓我們通過向 <em>pom.xml</em> 添加 spring-boot-starter-webspring-boot-starter-thymeleaf 來創建一個簡單的 Spring Boot 項目:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
    <version>3.2.1</version>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
    <version>3.2.1</version>
</dependency>

在後續部分,我們將看到如何在 Spring Boot 應用程序中使用 Thymeleaf 來顯示圖像。

3. 在 Thymeleaf 模板中顯示圖片

要在一個 Thymeleaf 模板中顯示圖片,我們需要遵循標準的約定,即為 HTML 文件創建一個 <em >templates</em > 目錄,以及為靜態資產(如圖片)創建一個 <em >static</em > 目錄。

3.1. 設置目錄結構

Spring Boot 默認配置好目錄結構,將 Java 源代碼文件與靜態資源和模板分開。它還會自動創建一個 resources 目錄,用於存放靜態文件和模板。

當使用 Thymeleaf 啓動 Spring Boot 應用程序時,約定是創建 <em lang="en">templates</em<em lang="en">static</em 目錄,位於 <em lang="en">resources</em> 目錄下。

Thymeleaf HTML 模板文件應放置在 <em lang="en">templates</em> 目錄中,而靜態資產(如 JS、CSS、圖像等)應放置在 <em lang="en">static</em> 目錄中。

首先,讓我們在 <em lang="en">static</em> 文件夾中創建一個 <em lang="en">images</em> 目錄。接下來,我們將一個名為 <em lang="en">cat.jpg</em> 的圖像文件添加到 <em lang="en">images</em> 目錄中:

現在,<em lang="en">cat.jpg</em> 文件可以從視圖文件中引用。

3.2. 在 Thymeleaf 中引用圖片

首先,在模板目錄下創建一個名為 index.html 的新文件,並編寫以下簡單的 HTML 代碼以從 static 文件夾中顯示圖片:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
    <head>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Baeldung Pet Store</title>
    </head>
    <body>
        <h6>Pet Store</h6>
        <img th:src="@{images/cat.jpg}" alt="cat">
    </body>
</html>

特別地,我們在 HTML 代碼中添加了 屬性,以指定圖像的相對路徑。

定義圖像路徑的方式對於成功顯示圖像至關重要。 Spring 已預先配置為從 文件夾提供靜態資源。因此,在引用圖像和其他靜態文件時,我們可以省略 段,

此外,我們可以在不為它創建文件夾的情況下將圖像添加到靜態文件夾中:

讓我們將 文件複製到靜態文件夾中:

src="/file/story/attachments/image/l/4bbf5b52-acc5-46d1-9bc8-26d3a7c18a4c">

在這種情況下,我們只需要指定圖像名稱及其擴展名:

// ...
<h6>Pet Store</h6>
<img th:src="@{cat.jpg}" alt="">
// ...

但是,建議為靜態文件創建子文件夾,以保持文件組織。

最後,讓我們創建一個控制器類併為首頁添加路由:

@Controller
public class DisplayController {
    @RequestMapping("/")
    public String home(){
        return "index";
    }
}

在這裏,我們為“/”路徑創建了一個路由,將其映射到 index 視圖模板。這使得在加載應用程序時能夠顯示圖像。

image

圖像顯示正常,因為相對路徑允許 Spring 在靜態資源文件夾中定位圖像文件,而無需指定完整的絕對路徑。

3.3. 避免失敗

簡單來説,在圖像路徑中指定 資源靜態 文件夾會導致圖像無法加載:

// ...
<img th:src="@{../static/images/cat.jpg}" alt="" width="100px">
// ...

上述代碼指定了圖像路徑,包含 static  文件夾。由於 Spring Boot 默認已配置檢查靜態文件夾,因此導致路徑錯誤,無法找到圖像。

因此,我們應避免在圖像文件路徑中包含 resourcestatic 關鍵字。Spring 默認會在解析圖像路徑時檢查這些文件夾。

4. 結論

在本文中,我們學習瞭如何使用 Thymeleaf 模板中的 th:src 屬性來顯示圖像。 此外,我們還看到了如何正確指定圖像路徑,避免在路徑聲明中使用 resourcesstatic 關鍵字。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.