Spring Boot thymeleaf模板引擎的使用详解

Spring Boot Thymeleaf模板引擎的使用详解

Thymeleaf是一个现代的服务器端Java模板引擎,可用于Web和独立环境。与许多传统的Java模板引擎不同,Thymeleaf采用HTML作为标记语言,以提高可读性,并使模板更易于编辑和维护。

本攻略将介绍如何在Spring Boot应用程序中使用Thymeleaf进行模板渲染。

添加依赖

首先,在pom.xml文件中添加以下依赖:

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

这将导入Spring Boot Thymeleaf模板引擎的所有依赖项。

配置模板引擎

接下来,您需要配置Thymeleaf模板引擎。

application.properties文件中添加以下内容:

spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html

这将告诉Spring Boot在/templates目录中查找模板文件,并将它们视为HTML文件。如果您想使用不同的前缀和后缀,请将它们替换为您自己的值。

创建HTML文件

现在,我们可以创建我们的HTML文件。在/templates目录下创建一个名为index.html的文件,并将以下内容添加到其中:

<!DOCTYPE html>
<html>
<head>
    <title>Thymeleaf Example</title>
</head>
<body>
    <h1>Hello, Thymeleaf!</h1>
    <p th:text="'The current date and time is ' + ${#dates.format(#dates.createNow(), 'yyyy-MM-dd HH:mm:ss')}"></p>
</body>
</html>

这是一个简单的HTML页面,它包括一个标题和一个段落。在这个段落中,我们使用th:text属性将当前日期和时间显示为文本。

创建Controller

接下来,我们需要创建一个Spring Controller将模板渲染为响应。

src/main/java/com/example/demo目录下创建一个名为DemoController.java的文件,并将以下内容添加到其中:

package com.example.demo;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class DemoController {

    @GetMapping("/")
    public String index(Model model) {
        return "index";
    }

}

这将创建一个名为DemoController的Spring Controller,它将使用@Controller注解标记。

index方法使用@GetMapping注解将其映射到/路径。它还将Model作为参数传递,这使我们能够将数据添加到模板中。

最后,它返回一个名为index的字符串,这实际上是模板文件的名称。Spring将在/templates目录下查找名为index.html的文件,并将其用作响应。

运行应用程序

现在,我们已经准备好运行我们的应用程序了。

使用以下命令启动应用程序:

mvn spring-boot:run

或者,您可以使用您喜欢的其他方法启动应用程序。

打开浏览器并转到http://localhost:8080/。您应该看到一个欢迎页面,上面写着“Hello, Thymeleaf!”以及日期和时间。

示例1:使用Thymeleaf表达式

让我们尝试一些更复杂的内容。修改index.html以包含另一个段落,该段落将显示当前用户的名称。

<!DOCTYPE html>
<html>
<head>
    <title>Thymeleaf Example</title>
</head>
<body>
    <h1>Hello, Thymeleaf!</h1>
    <p th:text="'The current date and time is ' + ${#dates.format(#dates.createNow(), 'yyyy-MM-dd HH:mm:ss')}"></p>
    <p th:text="'Welcome, ' + ${user.name} + '!'"></p>
</body>
</html>

我们添加了一个新的<p>元素,它包含一个th:text属性。这是一个表达式,它将用户对象的名称添加到欢迎消息中。

我们需要在DemoController中添加一个新的方法来处理这个表达式。修改代码如下:

package com.example.demo;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

@Controller
public class DemoController {

    @GetMapping("/")
    public String index(Model model) {
        model.addAttribute("user", new User("John Doe"));
        return "index";
    }

}

在这个方法中,我们在Model中添加了一个名为user的新对象。这个对象有一个名为name的字段,它包含用户的名称。

现在重新启动应用程序并刷新浏览器。欢迎消息应该包含“Welcome, John Doe!”。

示例2:循环迭代

使用th:each属性可以很容易地在模板中进行循环迭代。让我们尝试修改我们的HTML文件,以便它在列表中显示用户的联系人。

<!DOCTYPE html>
<html>
<head>
    <title>Thymeleaf Example</title>
</head>
<body>
    <h1>Hello, Thymeleaf!</h1>
    <p th:text="'The current date and time is ' + ${#dates.format(#dates.createNow(), 'yyyy-MM-dd HH:mm:ss')}"></p>
    <p th:text="'Welcome, ' + ${user.name} + '!'"></p>
    <ul>
        <li th:each="contact : ${user.contacts}" th:text="${contact}" />
    </ul>
</body>
</html>

我们添加了一个新的<ul>元素,并使用th:each属性在其中迭代用户的联系人。在每个迭代中,我们将其显示为列表项的文本。

我们还需要在DemoController中添加一个新的方法来处理这个表达式。修改代码如下:

package com.example.demo;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;

import java.util.Arrays;

@Controller
public class DemoController {

    @GetMapping("/")
    public String index(Model model) {
        User user = new User("John Doe");
        user.setContacts(Arrays.asList("johndoe@example.com", "johndoe@gmail.com"));
        model.addAttribute("user", user);
        return "index";
    }

}

在这个方法中,我们创建了一个新的User对象,并使用setContacts方法设置了该对象的联系人列表。然后我们将user对象添加到Model中。

最后,重新启动应用程序并刷新浏览器。您应该看到一个带有联系人列表的页面。

总结

恭喜!您已经成功地学习了如何在Spring Boot应用程序中使用Thymeleaf模板引擎进行模板渲染。这包括添加依赖项,配置模板引擎,创建HTML文件,创建Spring Controller以及渲染模板。本攻略还包括两个示例,展示了如何使用Thymeleaf表达式和循环迭代。

如果您想了解更多关于Spring Boot和Thymeleaf模板引擎的信息,请参阅官方文档。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Spring Boot thymeleaf模板引擎的使用详解 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • js实现鼠标移到链接文字弹出一个提示层的方法

    实现鼠标移到链接文字弹出一个提示层的方法,有多种方式。以下是其中一种常用的方法: 步骤 1:编写 HTML 代码 首先,在 HTML 页面中添加一个链接的 HTML 代码,如下所示: <a href="#" class="tooltip" title="这是提示信息">链接文字</…

    css 2023年6月10日
    00
  • html 基于 canvas 实现的一个截图小demo

    目前您正在提问的是 HTML 基于 Canvas 实现的一个截图小 demo 的攻略。下面是该 demo 的完整攻略。 一、概述 该小 demo 是基于 HTML5 的 Canvas 元素实现的,主要实现了在网页中进行截图的功能。通过该 demo,用户可以在页面中选取一定区域的内容进行截图并保存为图片。 二、技术分析和实现 1. 获取页面内容 在实现截图的过…

    css 2023年6月10日
    00
  • 分析对比华为虚拟化CSS与H3C虚拟化IRF2技术

    分析对比华为虚拟化CSS与H3C虚拟化IRF2技术 背景介绍 随着云计算与大数据时代的到来,虚拟化技术成为IT业界的热门话题。华为和H3C作为国内知名的网络设备厂商,分别推出了华为虚拟化CSS和H3C虚拟化IRF2技术。本文将对这两种技术进行详细的分析对比,希望能给读者带来一些参考。 技术原理 虚拟化CSS和虚拟化IRF2其实都是对网络设备中的虚拟化技术进行…

    css 2023年6月10日
    00
  • 详解CSS-opacity子元素继承父元素透明度的解决方法

    下面是详解 “CSS-opacity子元素继承父元素透明度的解决方法” 的攻略。 什么是 CSS-opacity? 在 CSS 中,opacity 属性指定元素的透明度,即元素的不透明度程度。该属性的值介于 0(完全透明) 和 1(完全不透明)之间。例如,设置一个元素的 opacity 为 0.5,那么这个元素会半透明显示。 想象一个问题 当一个元素设置了 …

    css 2023年6月10日
    00
  • 为什么网页变黑白色的了 如何解决网页变黑白色的问题

    网页变黑白色的原因可能有很多,下面将介绍几种可能导致网页变黑白色的原因,并提供相应的解决方法。 原因一:浏览器主题更改 有些浏览器,如Chrome浏览器,支持更改浏览器主题,而有些主题会导致网页变成黑白色调。若您不喜欢使用黑白主题,可以进入浏览器设置中的“主题”选项卡进行更改。 Chrome浏览器主题更改示例 打开Chrome浏览器; 在浏览器右上角点击三个…

    css 2023年6月9日
    00
  • 再JavaScript的jQuery库中编写动画效果的指南

    当我们使用JavaScript编写动画效果时,需要编写大量的繁琐代码来实现最终的效果,而使用jQuery库可以大大简化动画效果的编写过程。 以下是编写动画效果的指南: 步骤一:引入jQuery库 首先,我们需要在HTML文档中引入jQuery库。可以将以下代码添加到HTML文档的head标签中: <script src="https://co…

    css 2023年6月10日
    00
  • css中id和class的定义格式、使用技巧及选择

    下面来详细讲解“CSS中id和class的定义格式、使用技巧及选择”的攻略。 CSS中定义id和class 在CSS中,我们可以通过id和class来定义样式。 id的定义格式 id的定义格式为 #id,其中id为自定义名称,如: #myId { /* 样式代码 */ } class的定义格式 class的定义格式为 .class,其中class为自定义名称…

    css 2023年6月10日
    00
  • 值得收藏的25款免费响应式网页模板

    下面是详细讲解“值得收藏的25款免费响应式网页模板”的完整攻略: 1. 概述 本攻略主要介绍25款值得收藏的免费响应式网页模板,适用于不同类型的网站,包括企业、个人博客、电商等。模板具有响应式设计和漂亮的界面,可以帮助你快速搭建一个现代化的网站。 本攻略的模板均来源于互联网上已公开发布的资源,未经过测试,作者不对模板的质量和安全性作任何保证。使用前请务必仔细…

    css 2023年6月11日
    00
合作推广
合作推广
分享本页
返回顶部