一、概述
Thymeleaf是一种用于在服务器端和客户端之间渲染HTML、XML、JavaScript、CSS和文本的Java模板引擎。它主要用于Web开发,通过使界面与业务数据分离,提高了开发效率,并提供了灵活、自然的模板处理功能。Thymeleaf因其开箱即用、易于集成以及与Spring Boot的紧密集成而广受欢迎。
二、特点
动静分离:
Thymeleaf选用HTML作为模板页,通过特定标签语法代表其含义,但并未破坏HTML结构。即使无网络、不通过后端渲染也能在浏览器成功打开,大大方便了界面的测试和修改。
开箱即用:
Spring Boot官方对Thymeleaf提供了大力支持,并做了很多默认配置,开发者只需编写对应的HTML即可,大大减轻了上手难度和配置复杂度。
易于集成:
Thymeleaf与Spring Boot框架紧密集成,提供了许多与Spring Boot相关的特性和扩展。它可以与Spring MVC、Spring Security等框架无缝集成。
强大的表达式功能:
Thymeleaf支持强大的表达式语言(SpEL),可以在模板中执行复杂的表达式操作,如变量赋值、条件判断、迭代循环等。
应用广泛:
Thymeleaf是目前应用广泛的模板引擎之一,拥有活跃的社区和丰富的生态系统。它被广泛用于开发各种类型的Web应用和邮件模板。
添加依赖:不管采用那种构建项目方式,项目准备好后,需要配置pom.xml文件,添加相应的依赖(启动器),pom.xml文件中添加的依赖如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
Model 准备:
/**
* 编号
*/
@TableId(value = "usr_id", type = IdType.AUTO)
private Long usr_id;
/**
* 姓名
*/
@TableField(value = "usr_name")
private String usr_name;
/**
* 密码
*/
@TableField(value = "usr_password")
private String usr_password;
/**
* 角色编号
*/
@TableField(value = "usr_role_id")
private Long usr_role_id;
/**
* 状态
*/
@TableField(value = "usr_flag")
private Integer usr_flag;
控制器开发:在com.bdqn.controller包下创建 UserController,用于演示:
@RequestMapping(value = "/dologin")
public String dologin(String usrName, String usrPassword, HttpSession request) {
User user = userService.login(usrName, usrPassword);
if (user!= null) {
request.setAttribute("loginUser", user);
return "main";
} else {
request.setAttribute("message", "用户名或密码错误");
return "login";
}
}
开发页面:在resource/templates/demo 目录下新建User
.html,Kind(种类)选择 HTML5 file
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Holle</title>
</head>
<<body>
欢迎您:<span th:text="${user.usr_name}">usr_name</span>
赋值:<span th:text="${userName}">userName</span><br/>
拼接:<span th:text="'Hello' + ${userName}+'!'">Hello userName!</span><br/>
拼接:<span th:text="|Hello' + ${userName}+'!|">Hello userName!</span><br/>
<<div th:inline="text">
<p>Hello , [[${user.name}]]!</p>
<br/>
</div>
</body>
</html>
1. 数据绑定与文本替换
th:text:用于替换标签体内的文本内容。
<span th:text="${user.name}">用户名</span>
th:utext:与th:text
类似,但会处理HTML标签。
<p th:utext="${htmlContent}">这里会展示HTML内容</p>
2. 条件判断
th:if:用于条件判断,如果条件为真,则显示标签体内容。
<span th:if="${user.admin}">管理员</span>
th:unless:与th:if
相反,条件为假时显示标签体内容。
<a th:href="@{/login}" th:unless="${session.user != null}">Login</a>
3. 循环遍历
th:each:用于遍历集合、数组或Map等
<ul> <li th:each="user : ${userList}" th:text="${user.name}"></li> </ul>