Thymeleaf入门学习教程

Thymeleaf 是一个现代化的服务器端 Java 模板引擎,适用于 Web 和独立环境。它能够处理 HTML、XML、JavaScript、CSS 甚至纯文本。Thymeleaf 的主要目标是提供一种优雅且高度可维护的模板创建方式。为了实现这一目标,它以自然模板的概念为基础,将模板文件作为原型,这意味着它们可以在浏览器中直接打开并正确显示,而无需通过服务器渲染。

1. 环境搭建

首先,确保你的开发环境中已经安装了 Java 和 Maven(或 Gradle)。然后,你可以在 Maven 项目的 pom.xml 文件中添加 Thymeleaf 的依赖:

xml 复制代码
<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf</artifactId>
    <version>3.0.12.RELEASE</version>
</dependency>

2. 基本配置

在使用 Thymeleaf 之前,你需要配置一个 TemplateEngine 对象,这是 Thymeleaf 的核心类,用于处理模板。

java 复制代码
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;

public class ThymeleafConfig {
    public static TemplateEngine getTemplateEngine() {
        TemplateEngine templateEngine = new TemplateEngine();
        ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
        templateResolver.setPrefix("/templates/"); // 模板文件存放的路径
        templateResolver.setSuffix(".html");       // 模板文件的后缀
        templateResolver.setTemplateMode("HTML5"); // 模板模式
        templateResolver.setCharacterEncoding("UTF-8"); // 编码
        templateEngine.setTemplateResolver(templateResolver);
        return templateEngine;
    }
}

3. 创建模板

在 src/main/resources/templates 目录下创建一个 HTML 文件,例如 hello.html:

html 复制代码
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>Thymeleaf 示例</title>
</head>
<body>
    <h1 th:text="${message}">默认消息</h1>
</body>
</html>

4. 渲染模板

在 Java 代码中使用 TemplateEngine 来渲染模板:

java 复制代码
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;

public class ThymeleafExample {
    public static void main(String[] args) {
        TemplateEngine templateEngine = ThymeleafConfig.getTemplateEngine();
        Context context = new Context();
        context.setVariable("message", "你好,Thymeleaf!");
        String renderedHtml = templateEngine.process("hello", context);
        System.out.println(renderedHtml);
    }
}

5. 运行程序

运行上述 Java 程序,你将在控制台看到渲染后的 HTML 内容:

html 复制代码
<!DOCTYPE html>
<html>
<head>
    <title>Thymeleaf 示例</title>
</head>
<body>
    <h1>你好,Thymeleaf!</h1>
</body>
</html>

6. 常用语法

  • 变量表达式 :${...},用于在模板中插入变量的值。
  • 选择表达式 :*{...},用于选择当前对象中的属性。
  • 消息表达式 :#{...},用于国际化消息。
  • 链接表达式 :@{...},用于生成 URL。
  • 片段表达式 :~{...},用于包含模板片段。

7. 进阶学习

  • 布局和片段 :使用 th:fragment 和 th:replace 来实现模板的复用。
  • 条件判断 :使用 th:if 和 th:unless 进行条件渲染。
  • 循环 :使用 th:each 进行循环渲染。
  • 表单处理 :使用 th:object 和 th:field 处理表单数据。

8. 参考文档

通过以上步骤,你应该能够掌握 Thymeleaf 的基本用法,并开始在你的项目中使用它来创建动态的 Web 页面。

相关推荐
geovindu2 分钟前
rust: pool Pattern
开发语言·后端·设计模式·rust·对象池简写模式
Rain的Java大神之路5 分钟前
Java 工程师做 AI,核心机会在「落地」而非「训练」
java·后端·ai编程
柠檬味拥抱7 分钟前
基于 YOLO11 的六类生活垃圾视觉分类系统 | 用于社区投放点智能督导、分拣线品类分流、投错率统计分析 | 附完整源码与效果演示
后端
程序员小新70023 分钟前
RAG 实战与踩坑:交通法规智能问答助手
人工智能·后端
拖孩24 分钟前
AI 时代,个人开发者到底能不能靠一个小程序赚到钱
前端·后端·微信小程序
EAIReport32 分钟前
SpringBoot 与 SpringCloud 深度解析:核心特点、差异与协同关系
spring boot·后端·spring cloud
梦里寻码37 分钟前
从 0 到 1 用 NestJS + LangChain 搭一套可售卖的 SaaS AI 客服:挂件一行代码接入,知识库秒变 SEO 帮助中心
前端·后端·github
imDwAaY39 分钟前
程序为什么会卡在死锁里?从四个必要条件到预防与解除
后端·操作系统
Bazingga41 分钟前
知识注入的两条路:RAG知识库与Skills蒸馏
后端
QQ142207844943 分钟前
基于 Flask 的「自动任务控制台」设计与踩坑实录
后端·python·flask