Java SpringBoot模板引擎之 Thymeleaf入门详解

Java SpringBoot模板引擎之 Thymeleaf入门详解

Thymeleaf简介

Thymeleaf是一个服务端的Java模板引擎,它能够将网页模板和Java代码结合起来,从而动态地生成HTML页面,使网页开发更加灵活和易于维护。

Thymeleaf的主要特点是:

  • 完全支持HTML5。
  • 可以处理SVG和其他任意XML文件。
  • 支持Spring框架,可以与SpringMVC完美集成。
  • 非常灵活,可以处理任意文本作为模板,以及处理文本片段(例如HTML页面标签中的属性)。
  • 具有依赖注入(DI)功能,可以与许多第三方库完美集成。
  • 支持HTML模板包含,可重用模板片段。
  • 支持国际化。

Thymeleaf基本语法

变量表达式

Thymeleaf使用${}语法来引用变量。例如,在HTML页面中,可以这样引用一个Java对象中的属性:

<p>用户名:${user.name}</p>

${}是表达式语言的语法,用来引用Java对象的属性和方法,也支持简单的算术和逻辑运算,例如:

<p>${user.age} >= 18 ? '成年人' : '未成年人'</p>

URL表达式

Thymeleaf提供了特殊的语法来生成URL链接,使用@{}语法。例如:

<a th:href="@{/user/detail(id=${user.id})}">详细信息</a>

这段代码将生成一个链接,链接到处理用户详细信息的控制器上。${user.id}将被替换为具体的用户ID。

模板条件渲染

Thymeleaf可以根据表达式来动态渲染HTML页面,例如:

<p th:if="${user.age} >= 18">成年人</p>
<p th:unless="${user.age} >= 18">未成年人</p>

如果用户年龄大于等于18岁,第一个<p>标签会被渲染;否则,第二个<p>标签会被渲染。

遍历表达式

Thymeleaf可以遍历一个集合,并将集合中的每个元素渲染到HTML页面中。例如:

<ul>
  <li th:each="user : ${users}" th:text="${user.name}"></li>
</ul>

这段代码将会展示一个包含用户姓名的无序列表。${users}是一个Java集合,user是集合中的每个元素。

示例1:使用Thymeleaf渲染网页

下面是一个简单的示例,演示如何使用Thymeleaf渲染一个HTML页面。

新建SpringBoot项目

首先,我们需要新建一个SpringBoot项目。可使用IntelliJ IDEA或Eclipse等集成开发环境创建一个空白的SpringBoot项目,或手动创建一个Maven项目,并在pom.xml中添加以下依赖:

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

编写Controller类

然后,我们需要编写一个Controller类来处理请求,并提供数据给HTML页面。例如:

@Controller
public class UserController {

    @GetMapping("/user/{id}")
    public String getUserInfo(@PathVariable Long id, Model model) {
        User user = userService.getUser(id);
        model.addAttribute("user", user);
        return "userinfo";
    }

}

这个Controller包含一个处理GET请求的方法,它将用户ID作为参数,并将用户信息添加到Model对象中,然后返回一个视图名userinfo。这个视图名将被Thymeleaf解析,其中的动态内容将被替换为实际的值,最终生成一个HTML页面。

编写HTML模板

最后,我们需要编写一个HTML模板,用来渲染用户信息。例如:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>User Info</title>
</head>
<body>
    <h1>User Info</h1>
    <p>用户名:[[${user.name}]]</p>
    <p>年龄:[[${user.age}]]岁</p>
</body>
</html>

这个HTML模板中,我们使用了Thymeleaf的语法来引用用户对象中的属性,例如${user.name}${user.age}

运行程序

最后,我们运行程序,并在浏览器中输入URL地址http://localhost:8080/user/1,即可看到生成的HTML页面。页面中包含用户姓名和年龄等信息。

示例2:使用Thymeleaf表单处理

Thymeleaf还能处理网页表单,例如提交表单数据等。下面是一个使用Thymeleaf处理表单的示例。

编写Controller类

首先,我们需要编写一个Controller类,用于处理GET和POST请求,并将数据添加到Model对象中。例如:

@Controller
public class FormController {

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

    @PostMapping("/form")
    public String submitForm(@ModelAttribute User user, Model model) {
        userService.saveUser(user);
        model.addAttribute("message", "用户信息已保存");
        return "result";
    }

}

这个Controller包含两个方法。showForm方法处理GET请求,创建一个空的User对象,并添加到Model对象中;submitForm方法处理POST请求,将表单数据作为User对象的属性,保存到数据库中,并返回一个视图名result,同时添加一个成功提示信息到Model对象中。

编写HTML模板

然后,我们需要编写一个HTML模板,用于显示表单和处理表单提交。例如:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>表单处理</title>
</head>
<body>
    <h1>表单处理</h1>
    <form action="#" th:action="@{/form}" th:object="${user}" method="post">
        <p>用户名:<input type="text" th:field="*{name}"></p>
        <p>年龄:<input type="text" th:field="*{age}"></p>
        <input type="submit" value="提交">
    </form>
    [[${message}]]
</body>
</html>

这个HTML模板中包含了一个表单,其中的用户名和年龄都使用了Thymeleaf的表单绑定语法,例如*{name}*{age}。表单被提交后,将触发POST请求,并将用户输入的值绑定到User对象的属性中。

测试程序

最后,我们运行程序,并在浏览器中输入URL地址http://localhost:8080/form,即可看到表单页面。在表单中输入用户名和年龄等信息,提交表单后,会将用户信息保存到数据库中,并显示提示信息,表明保存成功。

总结

本文介绍了Thymeleaf的基本语法和用法,并通过两个示例演示了如何使用Thymeleaf渲染网页和处理表单数据。Thymeleaf是一个强大而灵活的模板引擎,能够大大提升Java网页开发的效率和可维护性,在实际开发中具有广泛的应用价值。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java SpringBoot模板引擎之 Thymeleaf入门详解 - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • Spring自动装配@Autowired教程

    下面是关于Spring自动装配@Autowired的详细攻略: 什么是Spring自动装配@Autowired 在Spring中,我们说的自动装配(autowiring)是指通过容器自动连接两个或多个不同的bean。当有多个bean可以注入在一个类中时,Spring会自动为我们选择正确的bean并注入。而@Autowired则是Spring提供的一种自动装配…

    Java 2023年5月19日
    00
  • Java线程重复执行以及操作共享变量的代码示例

    Java线程是一种轻量级进程,可以同时执行多个线程,实现并发操作。有时候我们需要让线程重复执行某个任务,并且需要注意操作共享变量的线程安全问题。下面就是以代码示例的形式,详细讲解“Java线程重复执行以及操作共享变量”的完整攻略。 线程重复执行 线程重复执行的方式有多种,其中最常见的方式是使用循环语句,如while循环、for循环等。下面以while循环和延…

    Java 2023年5月18日
    00
  • java的Hibernate框架报错“ConstraintViolationException”的原因和解决方法

    当使用Java的Hibernate框架时,可能会遇到“ConstraintViolationException”错误。这个错误通常是由于以下原因之一引起的: 违反了数据库约束:如果您尝试插入或更新数据时违反了数据库约束,则可能会出现此错误。在这种情况下,需要查看数据库约束并解决问题。 数据库事务问题:如果您尝试插入或更新数据时存在事务问题,则可能会出现此错误…

    Java 2023年5月4日
    00
  • Mysql存储java对象实例详解

    MySQL是一种流行的关系型数据库,而Java是一种流行的编程语言。如果你正在使用Java编写应用程序,那么你可能需要在MySQL中存储Java对象实例。本文将详细介绍如何将Java对象存储到MySQL中的方法。 环境和实例准备 环境 操作系统:Windows 10 Java版本:1.8 MySQL版本:8.0 实例 我们将使用一个简单的Java类作为例子,…

    Java 2023年5月26日
    00
  • Java之对象销毁和finalize方法的使用

    Java之对象销毁和finalize方法的使用 对象销毁 在Java中,对象销毁是由Java虚拟机自动完成的,程序员不需要关心对象何时被销毁。当一个对象没有任何引用时,Java虚拟机会自动回收这个对象所占的空间。 finalize方法 Java中的finalize方法是由垃圾回收器在回收对象之前调用的方法,它是Object类中的一个方法,子类可以重写这个方法…

    Java 2023年5月26日
    00
  • 5个HTML5的常用本地存储方式详解与介绍

    5个HTML5的常用本地存储方式详解与介绍 本文将为大家介绍5种常用的HTML5本地存储方式,并给出对应的示例说明。 1. Cookies 介绍:Cookie是存储在用户计算机上的小数据文件,用于存储与网站相关的信息。浏览器访问网站时,会从响应的HTTP头中读取Cookie信息,并将信息保存在本地。下次浏览器请求同一网站时,Cookie信息会被发送到服务器。…

    Java 2023年6月15日
    00
  • 什么是双亲委派模型?

    以下是关于双亲委派模型的详细讲解: 什么是双亲委派模型? 双亲委派模型是一种类加载机制,它是由 Java 虚拟机(JVM)实现的。在双亲委派模型中,当一个类加载器收到类加载请求时,它首先将请求委派给父类加载器,如果父类加载器无法加载该类,则将请求委派给其子类加载器。这个过程会一直持续到顶层的启动类加载器,如果启动类加载器无法加载该类,则会抛出 ClassNo…

    Java 2023年5月12日
    00
  • jquery 隐藏与显示tr标签示例代码

    下面是关于jQuery隐藏与显示<tr>标签的攻略。 前置要求 在使用本教程前,需要确保您已经了解以下内容: HTML基础 CSS基础 jQuery基础 操作步骤 方法一:使用隐藏和显示方法 在jQuery中,可以使用hide()方法隐藏元素,show()方法显示元素。将这两个方法应用于<tr>标签,即可实现隐藏和显示<tr&g…

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