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日

相关文章

  • 详解html中background-image属性的设置

    关于HTML中background-image属性的设置,主要分为以下三个步骤: 1.准备背景图片 首先,在设置背景图片前,需要准备好需要设置的图片。可以使用自己的图片,也可以下载网络上的背景图片。需要注意的是,背景图片的格式应该是常见的图片格式之一(如jpg、png、gif等),大小要合适。 2.在样式表中设置background-image属性 接下来,…

    css 2023年6月9日
    00
  • Vue-cli@3.0 插件系统简析

    Vue-cli@3.0 插件系统简析 在Vue-cli@3.0之后,Vue-cli的插件系统得到了很大的改进。通过Vue-cli的插件系统,我们可以扩展Vue-cli的能力,定制自己的项目需求。 插件注册 要注册一个Vue-cli的插件,我们需要做以下几个步骤: 创建一个npm包,其中必须包含一个名为generator的文件夹。该文件夹中,必须有一个gene…

    css 2023年6月9日
    00
  • vue实现鼠标移过出现下拉二级菜单功能

    基于Vue.js实现鼠标移过出现下拉二级菜单功能的完整攻略如下: 步骤一:准备数据源 首先,我们需要准备一个数据源来存储菜单信息。数据源可以是一个包含菜单项和对应子菜单的数组对象,也可以是一个JSON文件。在本例中,我们用一个对象数组来存储数据源,对象包含两个属性: text:菜单项的文本内容 children:菜单项下的子菜单,是一个包含子菜单项的数组对象…

    css 2023年6月10日
    00
  • Z-BLOG模板CSS默认样式注释大全

    请允许我详细讲解一下“Z-BLOG模板CSS默认样式注释大全”的完整攻略。 1. 了解Z-BLOG模板CSS默认样式注释大全 Z-BLOG模板CSS默认样式注释大全是一个详细解释Z-BLOG模板CSS默认样式的说明文档,其中包含了每一个样式块的作用、使用方法以及样例演示。 2. 查看Z-BLOG模板CSS默认样式注释大全 Z-BLOG模板CSS默认样式注释大…

    css 2023年6月9日
    00
  • CSS实现鼠标悬停svg图标描边效果

    下面是“CSS实现鼠标悬停svg图标描边效果”的完整攻略。 1. 确定使用的SVG图标 首先,在网站中选择一个SVG图标,并将其添加到HTML页面中。需要注意的是,为了能够实现鼠标悬停描边效果,SVG图标必须是矢量图形。 2. 编写CSS样式 接下来,需要为SVG图标编写CSS样式。这里需要用到CSS中的stroke属性。 具体来说,需要将SVG图标的描边颜…

    css 2023年6月10日
    00
  • JQuery为元素添加样式的实现方法

    以下是详细讲解“JQuery为元素添加样式的实现方法”的完整攻略。 一、使用JQuery的css()方法 JQuery的css()方法可以为元素添加CSS样式,其语法如下: $(selector).css(property, value) 其中,selector表示要添加CSS样式的元素的选择器,property表示要添加的CSS属性,value表示对应CS…

    css 2023年6月10日
    00
  • 纯CSS实现的无侵入的卡盘(幻灯片)

    让我为您详细讲解纯CSS实现的无侵入的卡盘(幻灯片)的完整攻略。 什么是纯CSS实现的无侵入的卡盘(幻灯片)? 卡盘,又称幻灯片,是一种常见的展示图片或文章的方式。在网页设计中,实现一款简单易用的卡盘,对于提升用户体验和页面效果很有帮助。使用CSS技术可以实现轻松美观的卡盘效果,而不用繁琐地调用JS等其他技术。 实现无侵入的卡盘步骤 以下是实现无侵入的卡盘的…

    css 2023年6月10日
    00
  • 从零搭建Webpack5-react脚手架的实现步骤(附源码)

    下面我将详细讲解“从零搭建Webpack5-react脚手架的实现步骤(附源码)”的完整攻略。 实现步骤 1. 初始化项目 首先,我们需要创建一个空的 Node.js 项目。我们可以使用 npm 或者 yarn 来初始化项目,这里以使用 npm 为例: npm init -y 这会自动生成一个 package.json 文件,其中 -y 参数表示开启了自动配…

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