Thymeleaf简介
Thymeleaf 是新一代 Java 模板引擎,它类似于 Velocity、FreeMarker 等传统 Java 模板引擎,但是与传统 Java 模板引擎不同的是,Thymeleaf 支持 HTML 原型。
它既可以让前端工程师在浏览器中直接打开查看样式,也可以让后端工程师结合真实数据查看显示效果,同时,SpringBoot 提供了 Thymeleaf 自动化配置解决方案,因此在 SpringBoot 中使用 Thymeleaf 非常方便。
事实上, Thymeleaf 除了展示基本的 HTML ,进行页面渲染之外,也可以作为一个 HTML 片段进行渲染,例如我们在做邮件发送时,可以使用 Thymeleaf 作为邮件发送模板。
另外,由于 Thymeleaf 模板后缀为 .html,可以直接被浏览器打开,因此,预览时非常方便。
Thymeleaf处理的模板类型
Thymeleaf可以处理六种模板:两种标记模板模式(HTML和XML),三种文本模板模式(TEXT,JAVASCRIPT和CSS)和一种无操作模板模式(RAW)。
HTML
XML
TEXT
JAVASCRIPT
CSS
RAW
HTML模板模式将允许任何类型的HTML输入,包括HTML5,HTML4和XHTML。 将不会执行验证或格式检查,并且在输出中尽可能地遵守模板代码/结构。
XML模板模式将允许XML输入。 在这种情况下,代码应该是格式良好的 - 没有未封闭的标签,没有未加引号的属性等等,如果发现格式错误,解析器将会抛出异常。 请注意,将不会执行验证(针对DTD或XML模式)。
TEXT模板模式将允许对非标记性质的模板使用特殊语法。 这种模板的例子可能是文本电子邮件或模板文档。 请注意,HTML或XML模板也可以作为TEXT处理,在这种情况下,它们不会被解析为标记,而每个标记,DOCTYPE,注释等都将被视为纯文本。
JAVASCRIPT模板模式将允许处理Thymeleaf应用程序中的JavaScript文件。这意味着能够像在HTML文件中一样使用JavaScript文件中的模型数据,但是使用特定于JavaScript的集成(例如专门转义或自然脚本)。 JAVASCRIPT模板模式被认为是文本模式,因此使用与TEXT模板模式相同的特殊语法。
CSS模板模式将允许处理Thymeleaf应用程序中涉及的CSS文件。类似于JAVASCRIPT模式,CSS模板模式也是文本模式,并使用TEXT模板模式中的特殊处理语法。
RAW模板模式根本不会处理模板。它意味着用于将未触及的资源(文件,URL响应等)插入正在处理的模板中。例如,可以将HTML格式的外部非受控资源包含在应用程序模板中,从而安全地知道这些资源可能包含的任何Thymeleaf代码都不会被执行。
下面我们来看看如何使用thymeleaf
创建spring boot项目
在创建项目时,选择thymeleaf模板
项目创建完后,pom文件中依赖如下:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
我们先来看看thymeleaf提供的自动化配置
@Configuration
@EnableConfigurationProperties({
ThymeleafProperties.class})
@ConditionalOnClass({
TemplateMode.class, SpringTemplateEngine.class})
@AutoConfigureAfter({
WebMvcAutoConfiguration.class, WebFluxAutoConfiguration.class})
public class ThymeleafAutoConfiguration {
//....
}
再来看看ThymeleafProperties类
@ConfigurationProperties