Java SpringBoot模板引擎之 Thymeleaf入门详解
Thymeleaf简介
Thymeleaf是一个服务端的Java模板引擎,它能够将网页模板和Java代码结合起来,从而动态地生成HTML页面,使网页开发更加灵活和易于维护。
Thymeleaf的主要特点是:
- 完全支持HTML5。
- 可以处理SVG和其他任意XML文件。
- 支持Spring框架,可以与SpringMVC完美集成。
- 非常灵活,可以处理任意文本作为模板,以及处理文本片段(例如HTML页面标签中的属性)。
- 具有依赖注入(DI)功能,可以与许多第三方库完美集成。
- 支持HTML模板包含,可重用模板片段。
- 支持国际化。
Thymeleaf基本语法
变量表达式
Thymeleaf使用${}
语法来引用变量。例如,在HTML页面中,可以这样引用一个Java对象中的属性:
<p>用户名:${user.name}</p>
${}
是表达式语言的语法,用来引用Java对象的属性和方法,也支持简单的算术和逻辑运算,例如:
<p>${user.age} >= 18 ? '成年人' : '未成年人'</p>
URL表达式
Thymeleaf提供了特殊的语法来生成URL链接,使用@{}
语法。例如:
<a th:href="@{/user/detail(id=${user.id})}">详细信息</a>
这段代码将生成一个链接,链接到处理用户详细信息的控制器上。${user.id}
将被替换为具体的用户ID。
模板条件渲染
Thymeleaf可以根据表达式来动态渲染HTML页面,例如:
<p th:if="${user.age} >= 18">成年人</p>
<p th:unless="${user.age} >= 18">未成年人</p>
如果用户年龄大于等于18岁,第一个<p>
标签会被渲染;否则,第二个<p>
标签会被渲染。
遍历表达式
Thymeleaf可以遍历一个集合,并将集合中的每个元素渲染到HTML页面中。例如:
<ul>
<li th:each="user : ${users}" th:text="${user.name}"></li>
</ul>
这段代码将会展示一个包含用户姓名的无序列表。${users}
是一个Java集合,user
是集合中的每个元素。
示例1:使用Thymeleaf渲染网页
下面是一个简单的示例,演示如何使用Thymeleaf渲染一个HTML页面。
新建SpringBoot项目
首先,我们需要新建一个SpringBoot项目。可使用IntelliJ IDEA或Eclipse等集成开发环境创建一个空白的SpringBoot项目,或手动创建一个Maven项目,并在pom.xml中添加以下依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
编写Controller类
然后,我们需要编写一个Controller类来处理请求,并提供数据给HTML页面。例如:
@Controller
public class UserController {
@GetMapping("/user/{id}")
public String getUserInfo(@PathVariable Long id, Model model) {
User user = userService.getUser(id);
model.addAttribute("user", user);
return "userinfo";
}
}
这个Controller包含一个处理GET请求的方法,它将用户ID作为参数,并将用户信息添加到Model对象中,然后返回一个视图名userinfo
。这个视图名将被Thymeleaf解析,其中的动态内容将被替换为实际的值,最终生成一个HTML页面。
编写HTML模板
最后,我们需要编写一个HTML模板,用来渲染用户信息。例如:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>User Info</title>
</head>
<body>
<h1>User Info</h1>
<p>用户名:[[${user.name}]]</p>
<p>年龄:[[${user.age}]]岁</p>
</body>
</html>
这个HTML模板中,我们使用了Thymeleaf的语法来引用用户对象中的属性,例如${user.name}
和${user.age}
。
运行程序
最后,我们运行程序,并在浏览器中输入URL地址http://localhost:8080/user/1
,即可看到生成的HTML页面。页面中包含用户姓名和年龄等信息。
示例2:使用Thymeleaf表单处理
Thymeleaf还能处理网页表单,例如提交表单数据等。下面是一个使用Thymeleaf处理表单的示例。
编写Controller类
首先,我们需要编写一个Controller类,用于处理GET和POST请求,并将数据添加到Model对象中。例如:
@Controller
public class FormController {
@GetMapping("/form")
public String showForm(Model model) {
model.addAttribute("user", new User());
return "form";
}
@PostMapping("/form")
public String submitForm(@ModelAttribute User user, Model model) {
userService.saveUser(user);
model.addAttribute("message", "用户信息已保存");
return "result";
}
}
这个Controller包含两个方法。showForm
方法处理GET请求,创建一个空的User
对象,并添加到Model对象中;submitForm
方法处理POST请求,将表单数据作为User
对象的属性,保存到数据库中,并返回一个视图名result
,同时添加一个成功提示信息到Model对象中。
编写HTML模板
然后,我们需要编写一个HTML模板,用于显示表单和处理表单提交。例如:
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>表单处理</title>
</head>
<body>
<h1>表单处理</h1>
<form action="#" th:action="@{/form}" th:object="${user}" method="post">
<p>用户名:<input type="text" th:field="*{name}"></p>
<p>年龄:<input type="text" th:field="*{age}"></p>
<input type="submit" value="提交">
</form>
[[${message}]]
</body>
</html>
这个HTML模板中包含了一个表单,其中的用户名和年龄都使用了Thymeleaf的表单绑定语法,例如*{name}
和*{age}
。表单被提交后,将触发POST请求,并将用户输入的值绑定到User
对象的属性中。
测试程序
最后,我们运行程序,并在浏览器中输入URL地址http://localhost:8080/form
,即可看到表单页面。在表单中输入用户名和年龄等信息,提交表单后,会将用户信息保存到数据库中,并显示提示信息,表明保存成功。
总结
本文介绍了Thymeleaf的基本语法和用法,并通过两个示例演示了如何使用Thymeleaf渲染网页和处理表单数据。Thymeleaf是一个强大而灵活的模板引擎,能够大大提升Java网页开发的效率和可维护性,在实际开发中具有广泛的应用价值。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java SpringBoot模板引擎之 Thymeleaf入门详解 - Python技术站