一、Thymeleaf
(一)模板引擎
模板引擎,是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。使用模板引擎的目的就是为了实现前后端分离。
JSP也是一种模板引擎,其与大量的Java代码相绑定,使前后端无法分离,产生混淆。
-
JSP中可以嵌入Java代码块。
-
JSP中的标签是对Java代码的一种封装,也就是说,JSP中的标签本质也是Java代码。
-
JSP最终会被JSP引擎解析为Servlet,而这个Servlet通过输出语句会形成HTML。Servlet也是Java代码。
(二)Thymeleaf(百里香叶子)
Thymeleaf is a modern server-side Java template engine for both web and standalone environments.
官网地址:https://www.thymeleaf.org/
Thymeleaf文件的扩展为是.html,是对html文件的一种扩展
(三)将Thymeleaf嵌入SpringBoot工程
使用步骤:
1> 创建一个Spring Boot工程,导入thymeleaf依赖
2> 在src/main/resources/templates目录下定义一个thymeleaf文件
3> 定义一个处理器,其处理器方法的返回值为前面定义的thymeleaf文件的文件名,注意不需要写.html扩展名
二、标准表达式
标准表达式一般要结合着th:text标签来使用。
(一)变量表达式${…}
(二)选择表达式*{…}
三、常见属性
(一)th:text/th:utext
这两个属性均用于在标签中显示动态文本。
th:text:
原样显示,不会解析文本中的html标签
th:utext:
会解析文本中的html标签
温馨小提示:
当只有Thymeleaf的html文件发生变化,配置文件、Java代码都没有改变时,可以通过如下方式在不重启应用的情况下,更新页面。
1)在Idea的这个发生变更的html文件上按下组合键Ctrl + Shift + F9
2)在浏览器页面上刷新即可
(二)th:name/th:value
该属性可以获取标签动态的name属性值,及标签的默认value值。
(三)th:inline
内联属性需要配合着[[${xxx}]]来使用。
(四)th:if
该属性用于逻辑判断,类似于JSTL中的<c:if/>。
(五)th:switch/th:case
该属性用于多分支判断,类似于JSTL中的switch-case。
(六)th:each
该属性用于遍历数组、List、Set及Map,类似于JSTL中的<c:forEach/>。
1)遍历List
遍历数组、List、Set方式是相同的。
2)常用状态属性
index:显示当前遍历对象的索引号(从0开始计数)
count:显示当前遍历对象的序号(从1开始计数)
even/odd:显示当前遍历对象是否为偶数/奇数(从0开始计数),布尔值
first/last:显示当前遍历对象是否是第一个/最后一个,布尔值
3)遍历Map
首先要清楚,Map的一个键-值对是一个Map.Entry对象。
四、内置对象
为了方便编程,Thymeleaf中内置了很多的具有特定功能的对象,程序员只需要使用#开头,后跟对象名称就可以直接使用了。
常见的内置对象有两种:
(一)Servlet API对象
获取到Servlet域对象。通过#request、#session、#servletContext可以获取Servlet中的HttpServletRequest、HttpSession、ServletContext(application域)对象。
(二)表达式实用对象
表达式实用对象的官方文档在官网如下地址:
19 Appendix B: Expression Utility Objects:
#executionInfo:获取当前Thymeleaf模板对象的执行信息。
#messages:获取外部信息。
#uris/#urls:URI/URL处理工具。
#conversions:类型转换工具。
#dates:日期处理工具。
#calendars:日历处理工具。
#numbers:数字处理工具。
#strings:字符串处理工具。
#objects:对象处理工具。
#booleans:布尔值处理工具。
#arrays:数组处理工具。
#lists:List处理工具。
#sets:Set处理工具。||\\s
#maps:Map处理工具。
#aggregates:聚合处理工具,例如,对数组、集合进行求和、平均值等。
#ids:th:id属性处理工具。