1.简介
- spring boot 自身是不支持 jsp页面的;
- 模板引擎包括 JSP、Velocity、Freemarker、以及 spring boot 自身推荐的 Thymeleaf;
- 模板引擎的设计思想:
- spring boot 推荐的模板引擎 Thymeleaf 的语法更简单、功能更强大;
2.Thymeleaf 综合介绍
2.1Thymeleaf 的引入
直接通过 maven 的 pom.xml 引入Thymeleaf 的starter 即可;
<!--引入模板引擎 Thymeleaf --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
直接通过 starter 引入的 Thymeleaf 模板的版本号为 2.0.3,版本太低,我们需要将其更改为高版本(3.0以上版本)。修改方式可以通过 maven 的 pom.xml 文件中的 <properties></properties>标签进行修改;
<properties>
<java.version>1.8</java.version>
<thymeleaf.version>3.0.9.RELEASE</thymeleaf.version>
<!--布局功能的支持程序,thymeleaf3主程序 需要layout2版本以上-->
<thymeleaf-layout-dialect.version>2.2.2</thymeleaf-layout-dialect.version>
</properties>
此时就会将 Thymeleaf 的低版本进行覆盖;当然以上的修改版本的方法也适用于其他 starter;
2.2 Thymeleaf 使用与语法
2.2.1入门
@ConfigurationProperties(prefix = "spring.thymeleaf") public class ThymeleafProperties { private static final Charset DEFAULT_ENCODING = Charset.forName("UTF-8"); private static final MimeType DEFAULT_CONTENT_TYPE = MimeType.valueOf("text/html"); public static final String DEFAULT_PREFIX = "classpath:/templates/"; public static final String DEFAULT_SUFFIX = ".html";
- 规则:要想使用模板引擎,必须将 .html 为后缀的文件都放置在 classpath:/templates/ 目录下,此时 Thymeleaf 就能自动渲染;
- 通过一个简单示例进行下演示:
请务必注意 上图中标注的第三点:一定要使用 @Controller注解;
- 最后我们观察下结果:
2.2.2简单应用示例
- 示例概述:我们想通过 Thymeleaf 模板从前端页面取出 map 集合中的 key01 的值 "my dream";
- 在 templates/success.html 页面中引入 Thymeleaf 语法规范标签;
<html lang="en" xmlns:th="http://www.thymeleaf.org">
此标签可以不引入,不会影响正常使用,但是不引用的情况下,不会有语法提示,建议还是引入为好;
- 通过 Thymeleaf 语法引入 map 集合中的值;
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1> template </h1> <!--th:text 将div里面的文本内容设置为需要引入的值--> <div th:text="${key01}"></div> </body> </html>
- 验证此时的结果:
2.2.3 语法规则
【1】 规则一:th:text:改变当前元素里面的文本内容;
th:可以是任意的html属性,替换原生属性的值;
【2】规则二:表达式 ?语法
简单表达: 变量表达式: ${...} 选择变量表达式: *{...} 消息表达式: #{...} 链接网址表达式: @{...} 片段表达式: ~{...} 字面 文本文字:'one text','Another one!',... 号码文字:0,34,3.0,12.3,... 布尔文字:true,false 空文字: null 文字标记:one,sometext,main,... 文字操作: 字符串连接: + 字面替换: |The name is ${name}| 算术运算: 二元运算符:+,-,*,/,% 减号(一元运算符): - 布尔运算: 二元运算符:and,or 布尔否定(一元运算符): !,not 比较和平等: 比较:>,<,>=,<=(gt,lt,ge,le) 平等运营商:==,!=(eq,ne) 三元运算符: IF-THEN: (if) ? (then) IF-THEN-ELSE: (if) ? (then) : (else) 默认: (value) ?: (defaultvalue) 特殊代币: 无操作: _
具体的使用语法请参考官方文档:
https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html