Thymeleaf 模板引擎
- Thymeleaf 是一个服务器端 Java 模板引擎,适用于 Web 和独立环境, 能够处理 HTML,XML,JavaScript,CSS 甚至纯文本等。
- 常见的模板引擎:Thymeleaf,FreeMarker,Velocity,JSP等。
- Thymeleaf 是新一代的模板引擎,Spring 4.0 推荐的前端模版引擎(完 全取代 JSP)。
- Thymeleaf 从一开始就设计了Web标准,特别是 HTML5。
模板引擎工作原理
模板引擎可以让用户界面与业务数据分离
Thymeleaf 目标
- Thymeleaf 主要目标是为开发工作流程带来优雅的自然模板:HTML可 以在浏览器中正确显示,并且可以作为静态原型工作,从而可以在开发 团队中加强协作
自然模板示例:一个table模板
<table>
<thead>
<tr>
<th>商品名称</th>
<th>商品价格</th>
</tr>
</thead>
<tbody>
<tr th:each="prod: ${allProducts}">
<td th:text="${prod.name}">Oranges</td>
<td th:text="${#numbers.formatDecimal(prod.price, 1, 2)}">0.99</td>
</tr>
</tbody>
</table>
Hello Thymeleaf
- 新建带Thymeleaf引擎的Spring Boot项目:demo2
- 在 application.properties 添加相关配置
#关闭缓存
spring.thymeleaf.cache = false
#设置thymeleaf页面的存储路径
spring.thymeleaf.prefix=classpath:/templates/
#设置thymeleaf页面的后缀
spring.thymeleaf.suffix=.html
#设置thymeleaf页面的编码
spring.thymeleaf.mode=HTML5
spring.thymeleaf.encoding=UTF-8
- 添加实体模型:新建 bean 包,并在包中新建 Student 类
student.java
package com.example.demo.bean;
public class Student {
private Integer id; //学号
private String name; //姓名
public Student() {
}
public Student(Integer id, String name) {
this.id = id;
this.name = name;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
- 添加控制器:
TestController
package com.example.demo.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class TestController {
@RequestMapping("/th")
public String index(Model model) {
String msg = "hello thymeleaf!";
model.addAttribute("msg", msg);
return "th/index";
}
}
- 添加视图:
index.html
th:text:文本标签,用于进行文本替换 ${ 属性变量名 }:称为 变量表达式
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<p th:text="${msg}">hello</p>
</body>
</html>
- 运行结果:启动服务器