1. Thymeleaf简介
(1) 模板引擎
模板引擎就是一种用于将动态数据与HTML模板结合,生成最终用户界面的工具 ,它可以帮助开发者以可维护和结构化的方式创建动态Web页面,模板引擎通常支持数据的动态插入、条件渲染、循环等功能
(2) Thymeleaf介绍
Thymeleaf是一个现代的Java模板引擎,适用于Web和独立环境。它可以与Spring框架无缝集成,并提供了一种自然的模板创建方式,使得模板可以在浏览器中直接打开,方便前端开发者查看
(3) Thymeleaf特点
- 自然模板:Thymeleaf模板可以作为静态HTML文件在浏览器中直接打开,而不需要经过服务器处理,方便前端开发
- 可扩展性:支持自定义方言,开发者可以根据需求扩展Thymeleaf的功能
- 条件渲染:通过表达式支持条件判断和循环,能够根据动态数据生成不同的HTML
- 与Spring集成:与Spring MVC的集成十分简便,能够自动解析模型数据并渲染视图
2. 核心语法
(1) Thymeleaf配置
Thymeleaf的基本配置通常在Spring Boot项目中进行。通过在application.properties
中添加以下配置,可以启用Thymeleaf支持:
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html#Thymeleaf配置:不用缓存
spring.thymeleaf.cache=false
在Controller中返回视图时,可以直接使用视图名称,Thymeleaf会根据前缀和后缀自动解析
为了开发时方便测试,关闭Thymeleaf的缓存可以不重启项目即可看到html文件改动的效果
(2) 表达式
Thymeleaf支持多种表达式语言,包括:
- 标准表达式(
${...}
):用于访问模型中的属性 - 变量表达式(
*{...}
):用于访问当前上下文中的属性 - 选择表达式(
?{...}
):用于条件选择,可以进行国际化处理 - 链接表达式(
@{...}
):用于生成URL
<p th:text="${user.name}">用户名称</p>
<a th:href="@{/user/${user.id}}">查看用户</a>
(3) 常用标签
- th:设置元素的文本内容
- th:动态生成链接
- th:根据条件渲染元素
- th:循环渲染集合
<ul><li th:each="item : ${items}" th:text="${item.name}"></li>
</ul>
3. 页面布局
(1) 片段表达式
Thymeleaf支持片段表达式,通过th:insert
、th:replace
等方式将模板中的片段引入到其他模板中。这使得页面布局更为灵活和可复用
<!-- 定义片段 -->
<div th:fragment="header"><h1>欢迎</h1>
</div><!-- 引入片段 -->
<div th:insert="~{header}"></div>
(2) 页面布局
使用Thymeleaf布局功能,可以创建统一的页面结构。例如,可以在main.html
中定义基本布局,然后在其他页面中通过layout:decorate
引入
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org" layout:decorate="~{main}">
<head><title>用户管理</title>
</head>
<body><div layout:fragment="content"><h2>用户列表</h2></div>
</body>
</html>
Thymeleaf作为一个强大的Java模板引擎,相比JSP,具有自然模板、良好的可扩展性和与Spring的深度集成等优点,开发者可以高效地创建动态和响应式的Web页面。综合来看,Thymeleaf 在易用性、可维护性、灵活性等方面都优于 JSP,这使得它在现代 Web 开发中更受欢迎