Thymeleaf
Thymeleaf 是一种现代的服务器端 Java 模板引擎,它强调“自然模板”(Natural Templates)的概念——即模板文件本身就是有效的 HTML,可以通过浏览器直接双击预览。
核心特点
- 自然模板:设计师可以直接在浏览器中打开和修改模板,而不需要运行整个 Java Web 服务器。
- Spring 集成:由 Thymeleaf 项目官方维护与 Spring MVC 的集成。
- 功能全面:如果你的项目需要从传统的 JSP 迁移,Thymeleaf 提供了极佳的兼容性和功能集。
配置
与 Spring MVC 的集成通常涉及以下 Bean 的声明:
ServletContextTemplateResolver:配置模板位置和前后缀。SpringTemplateEngine:核心引擎,负责处理逻辑。ThymeleafViewResolver:将控制器返回的名称映射到引擎。
在 Spring Boot 中,你只需要添加 spring-boot-starter-thymeleaf 依赖,上述配置通常会自动完成。
补充教学
1. 为什么叫“自然模板”?
传统的模板(如 JSP)包含 <% ... %> 这样的标签,直接用浏览器打开会乱码。 Thymeleaf 使用属性扩展(th: 属性):
html
<!-- 静态预览时显示 "Placeholder Name",动态运行时显示 model 中的变量 -->
<h1 th:text="${user.name}">Placeholder Name</h1>这种设计极大地促进了前后端协作。
2. 标准方言 (Standard Dialect)
Thymeleaf 提供了一套强大的表达式语言:
${...}:变量表达式(OGNL 或 Spring EL)。*{...}:选择变量表达式(针对特定对象的属性)。#{...}:消息表达式(用于国际化)。@{...}:链接表达式(自动处理 Context Path)。
3. 片段 (Fragments)
Thymeleaf 允许你定义通用的页面组件(如 Header, Footer),并在不同页面间复用,保持界面的一致性。
html
<div th:replace="~{common/header :: main}"></div>