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 页面。