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图片懒加载库VueLazyLoad详解

    JS图片懒加载库VueLazyLoad详解 什么是图片懒加载 图片懒加载是一种技术手段,用于减少页面加载时的请求次数。它将一些图片的资源延迟加载,直到用户需要访问它们的时候才进行加载,从而提高页面的加载速度。 VueLazyLoad介绍 VueLazyLoad是一个基于Vue.js的图片懒加载库。它能够处理负责的图片加载,让网页的加载速度更快,用户体验更好。…

    css 2023年6月11日
    00
  • 浅谈css之属性及剩余的选择符

    浅谈CSS之属性及剩余的选择符,一篇完整攻略如下: 1. 属性 CSS的属性定义了网页的样式和布局,它是CSS的重要组成部分。在CSS中,常用的属性有以下几种: 1.1 字体属性 对于网页中的文字,常用的属性有字体大小、字体颜色、字体样式等。比如: /* 设置字体大小为16像素,颜色为蓝色,字体样式为斜体 */ { font-size: 16px; colo…

    css 2023年6月9日
    00
  • 纯DIV+CSS实现圆角代码

    关于“纯DIV+CSS实现圆角代码”的攻略,我总结了以下几个步骤: 1. 用border-radius属性实现圆角 border-radius属性可以用于设置元素的圆角。这个属性接受一个或四个参数,分别代表四个角的圆角半径。 例如,以下CSS代码块设置了一个4个角都是5px的圆角效果: div { border-radius: 5px; } 示例:你可以在自…

    css 2023年6月10日
    00
  • CSS3颜色值RGBA与渐变色使用介绍

    当我们在设计网站样式时,颜色的选择是非常重要的,CSS3为我们提供了更多的颜色选择方式。其中,RGBA和渐变色是两种比较常用的方式,接下来我们来详细讲解它们的使用方法。 RGBA颜色值 RGBA颜色值由红、绿、蓝三个颜色分量数量值和一个透明度(Alpha)值组成,它们的范围是0-255。与RGB颜色值相比,RGBA颜色值更具有可读性且能够实现透明效果。 语法…

    css 2023年6月9日
    00
  • CSS3动画特效在活动页中的应用

    CSS3动画特效在活动页中的应用攻略 CSS3动画特效已经成为活动页设计中的重要组成部分。据数据显示,在活动页中使用动画特效的页面浏览量要比普通网页高出很多。然而,如何在活动页中运用CSS3动画特效,来吸引和留住用户,却是值得探讨的问题。 一、基础知识 在运用CSS3动画特效之前,需先掌握以下基础知识: 1.1 CSS选择器 CSS选择器是CSS中最核心的部…

    css 2023年6月9日
    00
  • 为博客添加“正在加载中”的过度特效的方法

    为博客添加“正在加载中”的过度特效可以增强用户体验,提高网站的整体美观度。下面是实现该功能的完整攻略。 1. 编写CSS动画样式 首先,我们需要编写一个CSS动画样式,用于实现“正在加载中”的过度特效。下面是一个例子: @keyframes rotating { from { transform: rotate(0deg); } to { transform…

    css 2023年6月9日
    00
  • CSS3贝塞尔曲线示例:创建链接悬停动画效果

    下面是对“CSS3贝塞尔曲线示例:创建链接悬停动画效果”的完整攻略: 1. 简介 在网页设计中,创造出一些令人印象深刻的动画效果可以提高用户体验,也可以让网站变得更加吸引人。在这方面,CSS3贝塞尔曲线可以提供无限的可能性,可以实现各种动画的变化。本篇攻略介绍如何使用CSS3贝塞尔曲线来创建一个链接悬停动画效果。 2. HTML 在HTML文件中,我们需要添…

    css 2023年6月10日
    00
  • 详解flex布局的元素如何分配容器的剩余空间

    当一个 flex 容器内部的元素根据其设置的 flex 缩写属性不占满整个容器时,flex 布局会进行剩余空间分配,按比例将空间分配给这些元素。这个比例可以是以数字表示的固定比例,也可以是一个自适应值,即 remaining space (剩余空间)。 以下是flex元素如何分配容器的剩余空间的详细攻略: 1. 分配剩余空间的默认方式 当一个 flex 容器…

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