欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

springboot 如何通過(guò)SpringTemplateEngine渲染html

 更新時(shí)間:2024年10月26日 11:17:10   作者:abments  
通過(guò)Spring的Thymeleaf模板引擎可以實(shí)現(xiàn)將模板渲染為HTML字符串,而不是直接輸出到瀏覽器,這樣可以對(duì)渲染后的字符串進(jìn)行其他操作,如保存到文件或進(jìn)一步處理,感興趣的朋友跟隨小編一起看看吧

要單獨(dú)獲取到渲染后的 HTML 字符串,便于進(jìn)行其他操作,可以通過(guò)以下幾種方式實(shí)現(xiàn)。常見(jiàn)的用法是通過(guò) Spring 的 Thymeleaf 模板引擎渲染模板為 HTML 字符串,而不是直接將其輸出到瀏覽器。這樣你就可以對(duì)渲染后的字符串進(jìn)行其他操作,比如保存到文件或進(jìn)一步處理。

1. 使用 Thymeleaf 渲染為字符串

你可以使用 ThymeleafTemplateEngine 手動(dòng)渲染模板為字符串。需要通過(guò) TemplateEngine 渲染模板文件,并且將渲染后的 HTML 作為一個(gè)字符串返回。你可以創(chuàng)建一個(gè)自定義的服務(wù)來(lái)處理這個(gè)需求。

1.1 添加依賴(lài)

除了 Thymeleaf 依賴(lài)之外,還需要確保有 Spring Web 和 Thymeleaf 依賴(lài)在 pom.xml 中:

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

1.2 自定義服務(wù)類(lèi)渲染 Thymeleaf 模板為字符串

import org.springframework.stereotype.Service;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;
import java.util.Map;
@Service
public class HtmlRenderingService {
    private final TemplateEngine templateEngine;
    public HtmlRenderingService(TemplateEngine templateEngine) {
        this.templateEngine = templateEngine;
    }
    public String renderHtml(String templateName, Map<String, Object> variables) {
        // 創(chuàng)建一個(gè)上下文對(duì)象
        Context context = new Context();
        // 將傳遞的變量設(shè)置到上下文
        context.setVariables(variables);
        // 渲染指定模板為字符串
        return templateEngine.process(templateName, context);
    }
}
  • templateEngine.process() 會(huì)根據(jù)提供的模板名稱(chēng)和上下文變量,渲染出最終的 HTML 字符串。
  • variables 是一個(gè) Map 對(duì)象,用于傳遞到模板中的變量。

1.3 控制器調(diào)用服務(wù)類(lèi)渲染 HTML 字符串

你可以在控制器中調(diào)用這個(gè)服務(wù),將模板渲染為字符串,并執(zhí)行你想要的操作(如返回、保存、日志等)。

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.Map;
@RestController
public class HtmlRenderController {
    @Autowired
    private HtmlRenderingService htmlRenderingService;
    @GetMapping("/render-html")
    public String renderHtml() {
        // 假設(shè)要傳遞的熱點(diǎn)資源和推薦資源數(shù)據(jù)
        HotResource hotResource = new HotResource("熱點(diǎn)資源1", "12345", "67890");
        Map<String, Object> variables = new HashMap<>();
        variables.put("hotResource", hotResource);
        return htmlRenderingService.renderHtml("resources", variables);
    }
}

在上面的代碼中,當(dāng)你訪問(wèn) /render-html 這個(gè)接口時(shí),控制器會(huì)調(diào)用 HtmlRenderingService 服務(wù),將 resources.html 模板渲染為字符串并返回。

1.4 Thymeleaf 模板文件 (resources.html)

你可以使用和之前一樣的 Thymeleaf 模板文件進(jìn)行動(dòng)態(tài)渲染,例如:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>資源推薦</title>
    <!-- 樣式略 -->
</head>
<body>
    <div class="container">
        <div class="section">
            <h2>熱點(diǎn)資源</h2>
            <div class="item hot-resource">
                <a th:href="@{/resource/hot(id=${hotResource.resourceId})}" rel="external nofollow"  target="_blank" th:text="${hotResource.name}">熱點(diǎn)資源名稱(chēng)</a>
                <p th:text="'資源ID:' + ${hotResource.resourceId}">資源ID</p>
                <p th:text="'熱點(diǎn)記錄ID:' + ${hotResource.recordId}">熱點(diǎn)記錄ID</p>
            </div>
        </div>
    </div>
</body>
</html>

2. 渲染 HTML 后進(jìn)行其他操作

通過(guò)上述方式獲取的 HTML 字符串,你可以在控制器中進(jìn)行任意操作:

  • 返回 HTML 字符串:直接返回渲染后的 HTML 字符串給前端。
  • 保存 HTML 文件:將 HTML 字符串保存到服務(wù)器上的某個(gè)文件。
  • 傳遞到其他服務(wù):你可以將這個(gè)字符串發(fā)送到其他服務(wù)或系統(tǒng)。

例如,將渲染后的 HTML 保存為文件:

import java.io.FileWriter;
import java.io.IOException;
public class HtmlFileWriter {
    public static void saveHtmlToFile(String htmlContent, String filePath) throws IOException {
        FileWriter fileWriter = new FileWriter(filePath);
        fileWriter.write(htmlContent);
        fileWriter.close();
    }
}

在控制器中調(diào)用這個(gè)方法:

@GetMapping("/save-html")
public String saveHtmlToFile() {
    HotResource hotResource = new HotResource("熱點(diǎn)資源1", "12345", "67890");
    Map<String, Object> variables = new HashMap<>();
    variables.put("hotResource", hotResource);
    String renderedHtml = htmlRenderingService.renderHtml("resources", variables);
    try {
        HtmlFileWriter.saveHtmlToFile(renderedHtml, "/path/to/save/file.html");
        return "HTML file saved successfully!";
    } catch (IOException e) {
        e.printStackTrace();
        return "Failed to save HTML file!";
    }
}

總結(jié)

通過(guò)上述方案,你可以:

  • 動(dòng)態(tài)渲染 HTML 頁(yè)面為字符串。
  • 根據(jù)需要返回 HTML 字符串、保存到文件或進(jìn)行其他處理。

使用 Thymeleaf 渲染為字符串的方式非常靈活,適合你進(jìn)行更多自定義操作。

到此這篇關(guān)于springboot 通過(guò)SpringTemplateEngine渲染html的文章就介紹到這了,更多相關(guān)springboot 渲染html內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java使用集合實(shí)現(xiàn)通訊錄功能

    java使用集合實(shí)現(xiàn)通訊錄功能

    這篇文章主要為大家詳細(xì)介紹了java使用集合實(shí)現(xiàn)通訊錄功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Java中Boolean和boolean的區(qū)別詳析

    Java中Boolean和boolean的區(qū)別詳析

    boolean是基本數(shù)據(jù)類(lèi)型Boolean是它的封裝類(lèi),和其他類(lèi)一樣,有屬性有方法,可以new,下面這篇文章主要給大家介紹了關(guān)于Java中Boolean和boolean區(qū)別的相關(guān)資料,需要的朋友可以參考下
    2022-07-07
  • Spring?@Scheduled定時(shí)器注解使用方式

    Spring?@Scheduled定時(shí)器注解使用方式

    這篇文章主要介紹了Spring?@Scheduled定時(shí)器注解使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • javaWeb 四大域?qū)ο笤敿?xì)介紹

    javaWeb 四大域?qū)ο笤敿?xì)介紹

    這篇文章主要介紹了javaWeb 四大域?qū)ο笤敿?xì)介紹的相關(guān)資料,需要的朋友可以參考下
    2016-11-11
  • spring-boot報(bào)錯(cuò)java: 程序包javax.servlet.http不存在

    spring-boot報(bào)錯(cuò)java: 程序包javax.servlet.http不存在

    當(dāng)springboot項(xiàng)目從2.7.x的升級(jí)到3.0.x的時(shí)候,會(huì)遇到一個(gè)問(wèn)題java: 程序包javax.servlet.http不存在,下面就來(lái)具體介紹一下,感興趣的可以了解一下
    2024-08-08
  • SpringBoot3中Spring?WebFlux?SSE服務(wù)器發(fā)送事件的實(shí)現(xiàn)步驟

    SpringBoot3中Spring?WebFlux?SSE服務(wù)器發(fā)送事件的實(shí)現(xiàn)步驟

    本文介紹了如何使用SpringBoot3和響應(yīng)式編程實(shí)現(xiàn)服務(wù)器發(fā)送事件(SSE),并討論了其在實(shí)時(shí)數(shù)據(jù)推送場(chǎng)景中的優(yōu)勢(shì),通過(guò)示例代碼,展示了如何創(chuàng)建SSE控制器、客戶(hù)端接收數(shù)據(jù)以及優(yōu)化與擴(kuò)展,感興趣的朋友跟隨小編一起看看吧
    2024-11-11
  • 使用Java實(shí)現(xiàn)qq郵箱發(fā)送郵件

    使用Java實(shí)現(xiàn)qq郵箱發(fā)送郵件

    這篇文章主要為大家詳細(xì)介紹了使用Java實(shí)現(xiàn)qq郵箱發(fā)送郵件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2010-05-05
  • 簡(jiǎn)單實(shí)現(xiàn)Java驗(yàn)證碼功能

    簡(jiǎn)單實(shí)現(xiàn)Java驗(yàn)證碼功能

    這篇文章主要為大家詳細(xì)介紹了簡(jiǎn)單實(shí)現(xiàn)Java驗(yàn)證碼功能的代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Java基礎(chǔ):流Stream詳解

    Java基礎(chǔ):流Stream詳解

    Stream流是數(shù)據(jù)渠道,用于操作數(shù)據(jù)源(集合、數(shù)組等)所生成的元素序列。這篇文章主要介紹了Java8新特性Stream流的相關(guān)資料,需要的朋友參考下吧
    2021-09-09
  • java system類(lèi)使用方法示例 獲取系統(tǒng)信息

    java system類(lèi)使用方法示例 獲取系統(tǒng)信息

    這篇文章主要介紹了java system類(lèi)使用方法,該類(lèi)中的方法都是靜態(tài)的。不能被實(shí)例化,沒(méi)有對(duì)外提供構(gòu)造函數(shù),該類(lèi)可以獲取系統(tǒng)信息
    2014-01-01

最新評(píng)論