Java基础总结之Thymeleaf详解

下面我将从以下几个方面完整讲解Java基础总结之Thymeleaf详解。

一、Thymeleaf 简介

Thymeleaf 是一个模板引擎,用于将数据渲染到 HTML、XML、JavaScript 或者纯文本等格式的文档中。它可以填充表单和复杂的 HTML 纯文本,从而生成动态的 Web 页面。Thymeleaf 提供了强大的表达式工具,支持表单绑定和模板布局等功能。

二、Thymeleaf 使用方法

Thymeleaf 的使用非常简单,以下示例展示了 Thymeleaf 将数据注入到 HTML 页面中的过程。

1. 添加 Thymeleaf 之前,需要添加以下依赖:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
    <version>${spring.boot.version}</version>
</dependency>

2. 开启模板解析

在 Spring Boot 中,默认已经开启 Thymeleaf 模板解析。在 Spring MVC 的配置文件中添加如下配置:

<bean id="templateResolver" class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
    <property name="prefix" value="classpath:/templates/"/>
    <property name="suffix" value=".html"/>
    <property name="templateMode" value="HTML"/>
    <property name="characterEncoding" value="UTF-8"/>
</bean>

<bean id="templateEngine" class="org.thymeleaf.spring5.SpringTemplateEngine">
    <property name="templateResolver" ref="templateResolver"/>
    <property name="enableSpringELCompiler" value="true"/>
</bean>

<bean class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
    <property name="templateEngine" ref="templateEngine"/>
    <property name="characterEncoding" value="UTF-8"/>
</bean>

这里的前缀设置为 templates,表示模板文件放在 resources/templates 目录下,后缀设置为 .html

3. 在 html 文件中使用 Thymeleaf 语法

以下示例展示了 Thymeleaf 填充数据的过程。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Title</title>
</head>
<body>
    <h1 th:text="${title}">Title here</h1>
</body>
</html>

上述代码中,使用了 Thymeleaf 的标签 th:text 和表达式 ${title},将 title 的值注入到页面中。

三、Thymeleaf 的语法

Thymeleaf 提供了丰富的语法,以下是 Thymeleaf 常用语法:

1. 声明变量

Thymeleaf 中的变量声明以 # 开始。

<p th:text="${#lists.size(list)}>0 items</p>

2. 表达式

表达式以 ${} 开始,可以引用变量、字符串、对象等。

<p th:text="'hello ' + ${user.name}">hello user</p>

3. 条件判断语句

条件判断语句使用 th:if 标签。

<div th:if="${value > 0}">value > 0</div>

4. 循环语句

循环语句使用 th:each 标签。

<ul>
    <li th:each="item : ${items}" th:text="${item}">item</li>
</ul>

这里的 items 是一个 List 对象,循环将 List 中的元素填充到 HTML 中。

5. 链接

使用 Thymeleaf 可以很方便地生成链接。

<a th:href="@{http://www.example.com}/">visit example.com</a>

在 href 属性中使用 @{} 标记可以轻松地生成链接,可以填充变量、字符串和具体值。

四、为什么要使用 Thymeleaf?

相比于传统的 JSP,Thymeleaf 有以下几个优点:

  1. Thymeleaf 继承自与 HTML 一样的标准语法,非常易于学习和使用;
  2. Thymeleaf 是一个独立的模板引擎,适用于多种应用场景,而 JSP 依赖于 Servlet 容器,需要在容器内部运行;
  3. Thymeleaf 支持多种模板布局方式,包括模板片段、布局、片段内联等,具有较高的灵活性。

五、实例说明

这里简单概述两个使用场景。

1. 表单数据填充

Thymeleaf 可以很方便地将表单数据注入到 HTML 页面中。

<form action="/user/save" method="post">
    <div>
        <label>姓名</label>
        <input type="text" name="name" th:value="${user.name}">
    </div>
    <div>
        <label>年龄</label>
        <input type="number" name="age" th:value="${user.age}">
    </div>
    <button type="submit">保存</button>
</form>

上述代码中,使用了 th:value 将 user 对象中的数据注入到了表单中。接收到表单提交的数据时,只需要在 Java 代码中定义一个与表单参数名相同的属性即可。

2. 模板布局

Thymeleaf 支持多种模板布局方式,包括模板片段、布局、片段内联等。

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">

<head>
    <meta charset="UTF-8">
    <title th:text="${title}">Default Title</title>
    <link th:href="@{/css/bootstrap.css}" rel="stylesheet"/>
</head>

<body>
    <nav th:replace="fragments/layout :: nav"></nav>
    <div class="container">
        <div class="row">
            <div class="col-md-3">
                <ul class="list-group">
                    <li class="list-group-item"><a href="/">Home</a></li>
                    <li class="list-group-item"><a href="/users">Users</a></li>
                </ul>
            </div>
            <div class="col-md-9" th:fragment="content">
                <!-- content here -->
                <p th:utext="${content}"></p>
            </div>
        </div>
    </div>
    <footer th:replace="fragments/layout :: footer"></footer>
    <script th:src="@{/js/jquery.js}"></script>
</body>

</html>

以上代码中,页面布局和导航栏都定义在时在 /resources/templates/fragments/layout.html 文件中。这样可以避免重复代码的定义。 在其他页面中可以使用 th:replace 引入该模板文件即可。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java基础总结之Thymeleaf详解 - Python技术站

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

相关文章

  • 解决ajax+php中文乱码的方法详解

    接下来我会为你详细讲解“解决ajax+php中文乱码的方法详解”的完整攻略,过程中会提供两条示例说明。 问题背景 在ajax和php通信的过程中,有时会出现中文乱码的情况。这是因为ajax和php在传输过程中的编码方式不一致所导致的。 解决方法 解决ajax和php中文乱码的方法主要有两种,分别是通过设置header头和通过转换编码方式。 1. 设置head…

    html 2023年5月31日
    00
  • xml 封装与解析(javascript和C#中)

    XML(eXtensible Markup Language)是一种用于存储和传输数据的语言,因为其简单性、可扩展性和跨平台的特性而被广泛采用。在Web开发中,我们经常需要用到XML的封装和解析。 对于XML封装,我们可以使用JavaScript或C#等编程语言。在JavaScript中,可以使用DOM API来操作XML文件,而在C#中,则可以使用XmlD…

    html 2023年5月30日
    00
  • Node.js服务器开启Gzip压缩教程

    当我们需要提高我们的网站的速度时,一种实用的方法是通过Gzip压缩,将我们的文件压缩到更小的尺寸并传输给用户。Node.js可以帮助我们轻松地为我们的服务器启用Gzip压缩,以下是详细的攻略。 确认Node.js版本 首先,我们需要确保我们的Node.js版本是8以上的版本。我们可以在命令行中输入以下命令来检查当前的Node.js版本: node -v 如果…

    html 2023年5月30日
    00
  • Studio 3T怎么激活?Studio 3T 2019 64位无限试用安装激活教程(附下载)

    以下是Studio 3T激活攻略: 下载安装Studio 3T:首先,您需要下载并安装Studio 3T。您可以在官方网站上下载Studio 3T的安装程序。安装程序支持Windows、macOS和Linux操作系统。 获取激活码:在安装完成后,您需要获取Studio 3T的激活码。您可以在官方网站上购买激活码,或者使用一些免费的激活码。请注意,使用免费的激…

    html 2023年5月17日
    00
  • PHP PDOStatement::getColumnMeta讲解

    PHP PDOStatement::getColumnMeta讲解 1. 什么是PDOStatement::getColumnMeta()? PDOStatement::getColumnMeta() 是 PHP PDO 扩展提供的一个函数,可以用来获取 PDOStatement 对象中的某个列的基本信息(如数据类型、长度等)。 2. 如何使用 PDOSta…

    html 2023年5月30日
    00
  • 借助Maven搭建Hadoop开发环境的最详细教程分享

    借助Maven搭建Hadoop开发环境的最详细教程分享 介绍 在开发Hadoop应用程序时,使用Maven来管理依赖项和构建过程是很方便的。本文将介绍如何在MacOS上使用Maven搭建Hadoop开发环境。 前置条件 安装Java 安装Maven 下载安装文件:hadoop-x.x.x.tar.gz 步骤 步骤一:解压hadoop安装文件 在命令行中进入到…

    html 2023年5月30日
    00
  • java使用jaxb操作xml示例

    Java使用JAXB(Java Architecture for XML Binding)操作XML,可以在Java对象和XML之间进行快速、方便的转换。下面是使用JAXB操作XML的完整攻略。 基础准备 使用JAXB需要按照以下步骤进行准备: 1. 引入JAXB依赖 在Maven项目中,需要在pom.xml文件中添加以下依赖: <dependency…

    html 2023年5月30日
    00
  • 永久解决VSCode终端中文乱码问题

    以下是“永久解决VSCode终端中文乱码问题”的完整攻略: 1. 问题描述 在使用VSCode终端时,有时输出的中文会出现乱码,这给我们的开发和调试带来了很大的不便。 2. 解决方法 2.1 方法一:修改终端默认编码 我们可以通过修改终端默认编码的方式来解决中文乱码问题。 2.1.1 查看终端默认编码 在终端中执行如下命令: echo "$LANG…

    html 2023年5月31日
    00
合作推广
合作推广
分享本页
返回顶部