什么是 Thymeleaf,为什么需要它?
\n\nThymeleaf 是一个用于 Java 应用程序的现代服务器端模板引擎,旨在生成 HTML、XML、JavaScript、CSS 和文本文件。与 JSP(JavaServer Pages)不同,Thymeleaf 提供了更简洁、可读性更强且更自然的语法,开发人员和设计师都能轻松理解。
\n\nThymeleaf 的主要优势在于其模板是有效的 HTML 文档。这意味着您可以在不启动服务器的情况下在浏览器中打开模板并查看其结构。动态数据通过以 th: 前缀开头的特殊属性进行替换。
Thymeleaf 与 Spring Framework(尤其是 Spring Boot)完美集成,但也可以作为独立库使用。它支持布局(layouts)、片段(fragments)、条件结构、循环、表单处理、国际化(i18n)等等。
\n\n安装 Thymeleaf
\n\n由于 Thymeleaf 是一个 Java 库,它通过 Maven 或 Gradle 依赖管理系统进行安装。Java 中没有类似 pip install 的对应命令。
通过 Maven 安装 (pom.xml)
\n\n<dependency>\n <groupId>org.thymeleaf</groupId>\n <artifactId>thymeleaf</artifactId>\n <version>3.1.2.RELEASE</version>\n</dependency>\n\n通过 Gradle 安装 (build.gradle)
\n\nimplementation 'org.thymeleaf:thymeleaf:3.1.2.RELEASE'\n\n对于 Spring Boot(推荐)
\n\n如果您使用 Spring Boot,只需添加 starter 即可:
\n\n<dependency>\n <groupId>org.springframework.boot</groupId>\n <artifactId>spring-boot-starter-thymeleaf</artifactId>\n</dependency>\n\nSpring Boot 会自动使用合理的默认设置配置 Thymeleaf。
\n\n快速入门及代码示例
\n\n让我们创建一个简单的控制台应用程序,使用 Thymeleaf 生成 HTML。
\n\n步骤 1:创建模板 (src/main/resources/templates/hello.html)
\n\n<!DOCTYPE html>\n<html xmlns:th="http://www.thymeleaf.org">\n<head>\n <title>Hello Thymeleaf</title>\n</head>\n<body>\n <h1 th:text="${message}">Default Message</h1>\n <p>Current date: <span th:text="${#dates.format(#dates.createNow(), 'dd-MM-yyyy')}">01-01-2024</span></p>\n</body>\n</html>\n\n步骤 2:编写 Java 代码处理模板
\n\nimport org.thymeleaf.TemplateEngine;\nimport org.thymeleaf.context.Context;\nimport org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;\n\npublic class ThymeleafQuickStart {\n public static void main(String[] args) {\n // 1. 配置模板解析器\n ClassLoaderTemplateResolver resolver = new ClassLoaderTemplateResolver();\n resolver.setPrefix("/templates/");\n resolver.setSuffix(".html");\n resolver.setTemplateMode("HTML");\n\n // 2. 创建模板引擎\n TemplateEngine engine = new TemplateEngine();\n engine.setTemplateResolver(resolver);\n\n // 3. 创建包含数据的上下文\n Context context = new Context();\n context.setVariable("message", "你好,Thymeleaf!");\n\n // 4. 处理模板\n String result = engine.process("hello", context);\n \n System.out.println(result);\n }\n}\n\n执行结果:
\n\n<!DOCTYPE html>\n<html>\n<head>\n <title>Hello Thymeleaf</title>\n</head>\n<body>\n <h1>你好,Thymeleaf!</h1>\n <p>Current date: <span>15-03-2024</span></p>\n</body>\n</html>