Thymeleaf
Thymeleaf是一种类似于JSP的动态网页技术
1.Thymeleaf简介
- JSP必须依赖Tomcat运行,不能直接运行在浏览器中。即idea中打开jsp页面就会错误
- HTML可以直接运行在浏览器中,但是不能接受控制器传递的数据(不能jstl+el展示数据)
- Thymeleaf是一种既保留了HTML的后缀能直接在浏览器运行的能力、又实现了JSP显示动态数据的功能----静能查看页面状态、动能显示数据
2.Thymeleaf的使用
SpringBoot应用能对Thymeleaf提供良好支持
项目为springboot-ssm。
2.1 添加Thymeleaf的依赖组starter
创建项目时,也可以直接添加依赖组
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
2.2 创建Thymeleaf模板
Thymeleaf模板就是HTML文件
- SpringBoot应用中,
resources\templates
目录就是用来存放页面模板的 重要说明:
static
目录下的资源被定义静态资源
,SpringBoot应用默认放行
;
如果将HTML页面创建static目录是可以直接访问的templates
目录下的文件被定义为动态网页模板
,SpringBoot应用会拦截
templates中的资源;
如果将HTML页面创建在templates目录,则必须通过控制器访问跳转
- 在templates创建HTML页面模板
- 创建PageController,用于转发允许"直接访问"的页面请求
@Controller
@RequestMapping("/yty")
public class PageController {
@RequestMapping("/test1.html")
public String test1(){
return "test1";
}
}
访问的时候,就是“localhost端口号/yty/test1.html”。单从路径看,感觉test1.html页面是被直接访问的,其实那是因为我的controller名是test.html,这也是为什么上面”直接访问“打引号的原因。
2.3 Thymeleaf基本语法
如果要在Thymeleaf模板中获取从控制器传递的数据,需要使用
th
标签
2.3.1 在Thymeleaf模板页面引入th标签的命名空间
2.3.2 th:text
在几乎所有的HTML双标签都可以使用th:text属性,将接收到的数据显示在标签的内容中
<lable th:text="${price}"></lable>
<div th:text="${str}"></div>
<p th:text="${book.bookName}"></p>
2.3.3 th:inline内联
- HTML内联
- CSS内联
- JavaScript内联
2.3.4 th:object和*
2.4 流程控制
2.4.1 th:each循环
2.4.2 分支
- th:if 如果条件不成立,则不显示此标签
- th:switch 和 th:case
2.5 碎片使用
2.5.1 碎片的概念
碎片,就是HTML片段,可以将多个页面使用相同的HTML标签部分单独定义,然后通过th:include可以在HTML中引入定义的碎片。
(可以理解成全局变量和局部变量,但是本质上又有区别)
2.5.2 碎片使用案例
- 定义碎片 th:fragment
- 引用碎片 th:include和th:replace
a.html