SpringBoot默认模板引擎Thymeleaf
官网地址
https://www.thymeleaf.org/index.html
概念:
Thymeleaf是面向Web和独立环境的现代服务器端Java模板引擎,能够处理Html,xml,JavaScript,css甚至存文本。
Thymeleaf 在提供一个优雅的,高度可维护的创建模式模板的方式。为了实现这一目标,Thymeleaf建立在自然模板的概念上,将其逻辑注入到模板文件中,不会影响模板设计原型。
Thymeleaf从设计之初就遵守web标准-特别是HTml5标准,如果需要,Thymeleaf允许创建完全符合HTML5验证标准模板。
SpringBoot 体系中默认推荐Thymeleaf作为前端页面模板,并且SpringBoot2.0中默认使用Thymeleaf3.0,性能提升幅度很大。
Thymeleaf特点
1 .Thymeleaf不管是否连接服务器的环境下皆可运行
2 .开箱即用。支持标准的方言和Spring方言,可以直接套用模板实现JSTL,OGNL表达式效果。
- Thymeleaf提供Spring标准方言和一个与SpringMVC完美集成的可选模块,可以快速的实现表单绑定,属性编辑器,国际化等功能
SpringBoot集成Thymeleaf
1.在pom.xml导入依赖
org.springframework.boot
spring-boot-starter-thymeleaf
2.application.properties配置Thymeleaf
# thymeleaf 缓存,生产环境要放开
spring.thymeleaf.cache=false
3.spring boot对Thymeleaf的自动配置支持
org.springframework.boot.autoconfigure.thymeleaf
4.新建HTML文件
Title
这是静态标签文字
Thymeleaf语法
th属性
官方文档地址
https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#setting-value-to-specific-attributes
文本属性
文本拼接: |内容|
文本信息: th:text , th:id , th:value
条件属性
if 判断 : th:if
unless判断 : th:unless
switch判断 :th:switch th:case
baidu_1
baidu_2
baidu_3
18岁
19岁
20岁
未知
循环属性 th:each
th:each迭代list
th:each的内置属性
th:tach迭代map
Title
常用的方式
名字
年龄
密码
list 详细信息
名字
年龄
密码
遍历map
遍历map的value是一个user对象
遍历map的value是一个list user对象
表达式语法
1 .简单表达式:
变量表达式: ${...}
选择变量表达式: *{...}
消息表达: #{...}
链接URL表达式: @{...}
片段表达式: ~{...}
2 . 文字
文本文字:'one text','Another one!',...
号码文字:0,34,3.0,12.3,...
布尔文字:true,false
空文字: null
文字标记:one,sometext,main,...
3 .文字操作:
字符串串联: +
文字替换: |The name is ${name}|
4 .算术运算:
二元运算符:+,-,*,/,%
减号(一元运算符): -
5 .布尔运算:
二元运算符:and,or
布尔否定(一元运算符): !,not
6 .比较和平等:
比较:>,<,>=,<=(gt,lt,ge,le)
等号运算符:==,!=(eq,ne)
7 .条件运算符:
如果-则: (if) ? (then)
如果-则-否则: (if) ? (then) : (else)
默认: (value) ?: (defaultvalue)
8 .特殊令牌:
无操作: _
${...} :
变量表达式,也叫SpringEL表达式,OGNL
1 .用于调用各种属性和方法;
2 .获取对象的属性和方法
3 .可以使用ctx,vars,locale,request,response,session,servletContext内置对象
4 .可以使用dates,numbers,strings,objects,arrays,lists,sets,maps等内置方法
@{...} :
链接表达式,不管是静态资源的引用,form表单的请求,凡是链接都可以用@{..}
1 .无参 : @{/xxx}
2 .有参 : @{/xxx(k1=v1,k2=v2)} , 对应url结构:xxx?k1=v1&k2=v2
3 .引入本地资源 :@{/项目本地的资源路径}
4 .引入外部资源 : @{/webjars/资源在jar包中的路径}
中文
English
webjars 网站资源:https://www.webjars.org/
例如:集成bootstrap
org.webjars
bootstrap
4.5.0
#{...} :消息表达式:
用于从消息源中提取消息内容实现国际化
1 .语法与变量表达式相比多了个获取参数的方式
2 .消息源主要是properties文件
~{...} 代码块 表达式:
把某一段定义好的代码插入到另一个页面中,一般用于定义出一套通用的header或者footer
语法:~{templatename::fragmentname} 或者 ~{templatename::#id} , 如果省略templatename,它将在当前页面进行寻找指定的代码块,注意,~{} 可以省略;
1 . templatename: 模板名,定义模板的写法: