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日

相关文章

  • 一文详解JavaWeb过滤器(Filter)

    一文详解JavaWeb过滤器(Filter) 什么是JavaWeb过滤器? JavaWeb过滤器(Filter)是一个可以拦截客户端与服务器之间的请求和响应的组件,它的作用就像一个保镖,协助我们控制和管理请求和响应。 过滤器的作用 过滤器可以用来完成以下功能: 认证用户访问权限 过滤违禁词汇和表情等内容 对请求或响应进行加密、压缩、解压 记录请求和响应信息 …

    Java 2023年6月15日
    00
  • java8 Instant 时间及转换操作

    下面是关于Java 8 Instant时间及转换操作的完整攻略。 什么是Java 8 Instant时间? Java 8为我们提供了强大的日期时间API,其中一个类是Instant类。Instant是表示时间线上某个时间点的类。它可以理解为GMT上的纪元时间(1970年1月1日00:00:00)与一定时间段的总和,并且以秒为单位进行存储。 在Java中,我们…

    Java 2023年5月20日
    00
  • Java全局异常处理器实现过程解析

    Java全局异常处理器实现过程解析 在Java开发中,异常处理是一个重要的话题。在程序运行时,如果发生异常,则需要对其进行处理以避免程序崩溃。为了方便管理和处理程序中的异常,开发人员可以通过实现全局异常处理器来捕获并处理程序中的异常。以下是Java全局异常处理器实现过程的详细攻略。 1. 实现ExceptionHandler接口 Java提供了Excepti…

    Java 2023年5月27日
    00
  • java打印出菱形图案实例详解

    Java 打印出菱形图案实例详解 简介 本文讲解如何在 Java 中打印出菱形图案。 思路分析 要打印出菱形图案,需要先了解菱形的形状。以一个边长为 5 的菱形为例,其形状如下: * *** ***** *** * 菱形由五行组成,分别为: 第一行:一个空格,一个星号 第二行:两个空格,三个星号 第三行:三个空格,五个星号 第四行:两个空格,三个星号 第五行…

    Java 2023年5月26日
    00
  • Java 数据库连接池Druid 的介绍

    下面就为您详细讲解Java数据库连接池Druid的介绍。 一、概述 Druid是阿里巴巴开源平台上一个数据库连接池实现,它结合了C3P0、DBCP等DB池的优点,同时加入了日志监控功能,利用Druid能够大大提高数据库访问的性能,是目前使用比较广泛的数据库连接池之一。 二、特点 Druid具有以下几个特点: 性能优秀。Druid经过多种优化,比如使用简单的S…

    Java 2023年6月3日
    00
  • 一文教你如何使用原生的Feign

    一文教你如何使用原生的Feign 简介 Feign 是一个基于Java的HTTP客户端,用于将HTTP请求映射到界面上,并将调用者与远程服务进行解耦。Feign通过使用注解支持请求/响应编码、注释传播、错误处理等功能。 使用原生的Feign的步骤 步骤一:引入依赖 首先,我们需要在项目中引入feign相关的依赖,以下是一些常用的依赖: <depende…

    Java 2023年5月20日
    00
  • 面试阿里,腾讯90%会被问到的25个问题(附答案)

    下面是详细讲解“面试阿里,腾讯90%会被问到的25个问题(附答案)”的完整攻略。 1. 了解自己 这道问题是面试中常见的开场白,通过这个问题,面试官可以了解你的背景和经历,进一步了解你的职业规划。针对这个问题,你需要从以下几个方面说明: 个人背景:学历、专业、工作年限等。 工作经历:所在公司、职位、工作职责,取得的成绩和荣誉。 个人特点:自我评价,成就和不足…

    Java 2023年5月26日
    00
  • 把JS与CSS写在同一个文件里的书写方法

    将JS与CSS写在同一个文件中可以减少文件的请求次数,提高页面加载速度。以下是将JS与CSS写在同一个文件里的标准的Markdown格式的书写方法: 1. 在html文件中引入同一个文件 在HTML文件头部中,使用<script>标签引用JavaScript,使用<style>标签引用CSS,代码如下: <head> &l…

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