web开发:Thymeleaf模板引擎

1.1Thymeleaf简介

1.2:模板引擎:

模板引擎是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。
模板引擎的实现方式有很多,最简单的是“置换型”模板引擎,这类模板引擎只是将指定模板内容(字符串)中的特定标记(子字符串)替换,便生成了最终需要的业务数据(如网页)。“置换型”模板引擎实现简单,但其效率低下,无法满足高负载的应用需求(比如有海量访问的网站),因此还出现了“解释型”模板引擎和“编译型”模板引擎等。

1.3:Thymeleaf介绍:

Thymeleaf 是面向 Web 和独立环境的现代服务器端 Java 模板引擎,能够处理HTML、XML、JavaScript、CSS 甚至纯文本。Thymeleaf 旨在提供一个优雅的、高度可维护的创建模板的方式。为了实现这一目标Thymeleaf 建立在自然模板的概念上,将其逻辑注入到模板文件中,不会影响模板设计原型,从而改善了设计的沟通,弥合了设计和开发团队之间的差距。Thymeleaf 从设计之初就遵循 Web 标准——特别是 HTML5 标准,如果需要,Thymeleaf允许创建完全符合HTML5验证标准的模板。
Spring Boot 体系内推荐使用 Thymeleaf作为前端页面模板,并且 Spring Boot 2.0中默认使用Thymeleaf3.0,性能提升幅度很大。

1.4:Thymeleaf特点

简单说,Thymeleaf是一个跟 Velocity、FreeMarker类似的模板引擎,它可以完全替代JSP与其他的模板引擎相比较,它有如下三个极吸引人的特点。
Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是由于它支持HTML原型,然后在 HTML标签里增加额外的属性来达到模板+ 数据的展示方式。浏览器解释HTML时会忽略未定义的标签属性,所以Thymeleaf的模板可以静态地运行当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动态显示。Thymeleaf开箱即用的特性。它支持标准方言和Spring方言,可以直接套用模板实现JSTL、 OGNL表达式效果,避免每天套模板、改JSTL、改标签的困扰。同时开发人员
也可以扩展和创建自定义的方言。Thymeleaf提供 Spring标准方言和一个与 SpringMVC完美集成的可选模块,可以快速地实现表单绑定、属性编辑器、国际化等功能。我们可以对比一下Thymeleaf和常用的模板引擎:Velocity、Freemaker,和其他模板一些不同的是,它使用了自然的模板技术。这意味着Thymeleaf的模板语法并不会破坏文档的结构,模板依旧是有效的XML文档。模板还可以用做工作原型,Thymeleaf 会在运行期替换掉静态值 Malociti freeMarker 则是连续的文本处理器。

2.1构建项目:

web开发:Thymeleaf模板引擎
web开发:Thymeleaf模板引擎

2.2添加依赖:

web开发:Thymeleaf模板引擎
web开发:Thymeleaf模板引擎
web开发:Thymeleaf模板引擎

2.3:application.properties配置

web开发:Thymeleaf模板引擎

2.4依赖介绍

spring-boot-starter-data-jpa:Spring Boot DataJPA 启动器

spring-boot-starter-thymeleaf:Spring Boot Thymeleaf 模板引擎启动器

pring-boot-starter-web:Spring Boot web 启动器

spring-boot-devtools:Spring Boot 开发工具启动器(热部署)

mysql-connector-java:MySQL驱动,注意将版本降低为5.x
spring-boot-starter-test: Spring Boot test 启动器

3.0:核心语法,Thymeleaf配置

3.1:我们可以通过applicaton.properties文件灵活的配置Thymeleaf的各项特性,以下为Thymeleaf的配置和默认参数:

1.# THYMELEAF(ThymeleafAutoConfiguration)
2. #开启模板缓存(默认值:true)

  1. spring.thymeleaf.cachestrue

  2. #检查模板是否存在,然后再呈现

  3. spring.thymeleaf.check-template=true

  4. #检查模板位置是否正确(默认值:true)

  5. spring.thymeleaf.check-template-location=true

  6. #Content-Type的值(默认值:text/html)

  7. spring.thymeleaf.content-type=text/html
    10.#开启MVC Thymeleaf视图解析(默认值:true

  8. spring.thymeleaf.enabled=true
    12.#模板编码

13.spring.thymeleaf.encoding=UTF-8
14.#要被排除在解析之外的视图名称列表,用逗号分霜

  1. spring.thymeleaf.excluded-view-names=
    16.#要运用于模板之上的模板模式。另见 StandardTemplate-ModeHandlers(默认值:HTML5)

17.spring.thymeleaf.mode=HTML5
18.#在构建URL时添加到视图名称前的前缀(默认值:classpath:/templates/

19.spring.thymeleaf.prefix=classpath:/templates/
20.#在构建URL时添加到视图名称后的后缀(默认值:,html)

21.spring.thymeleaf.suffix=.html
22.#Thymeleaf 模板解析器在解析器链中的顺序,默认情况下,它排第一位,顺序从1开始,只有在定义了额外的 TemplateResolver Bean 时才需要设置这个属性。

  1. spring.thymeleaf.template-resolver-order=

24.#可解析的视图名称列表,用逗号分将

  1. spring.thymeleaf.view-names=

3.1表达式

Thymeleaf要输出数据,一般是通过表达式和标签配合实现(类似
EL+JSTL),下面我们来了解一下Thmeleaf的表达式:

Thymeleaf表达式共分为以下五类:
(1)变量表达式: ${…}

(2)选择或星号表达式: *{…}

(3)文字国际化表达式: #{…}

(4)URL表达式:@{…}

(5)片段表达式:~{…}

3.2变量表达式

变量表达式即OGNL 表达式或Spring EL 表达式,例如 $(user:usrName)

变量表达式默认从Model Attribute中获取数据, 进行赋值(输出),拼接等操作

web开发:Thymeleaf模板引擎

3.3Thymeleaf一些基本对象

这些基本对象使用#开头.
#ctx:上下文对象

#vars:上下文变量

#locale:区域对象

#request:(仅 Web 环境可用)HttpServletRequest 对象

#response:(仅 Web 环境可用)HttpServletResponse 对象

#session:(仅 Web 环境可用) HttpSession 对象

#servletContext:(仅 Web 环境可用) ServletContext 对象

Thymeleaf 在 Web环境中,有一系列的快捷方式用于访问请求参数、会话属性等应用属性.

#request:直接访问与当前请求关联javax.servlet.http.HttpServletRequest 对象:

#session:直接访问与当前请求关联的 javax.servlet.http.HttpSession 对象。

为了模板更加易用,Thymeleaf还提供了一系列Utility对象(内置于 Context中),可以通过#直接访问。

dates:java.util.Date 的功能方法类

calendars:类似 #dates,面向 java.util.Calendar

numbers:格式化数字的功能方法类

strings:字符串对象的功能类,contains、startWiths、
prepending/appending 等

objects:对 objects 的功能类操作

bools:对布尔值求值的功能方法

arrays:对数组的功能类方法

lists:对 lists 的功能类方法

sets:set 的实用方法

maps:map 的实用方法

4.1URL表达式

URL 表达式指的是把一个有用的上下文或回话信息添加到URL,这个过程经常被叫做 URL重写,比如@//user/list)
URL 还可以设置参数:@l/user/detail(id=$(usrld)))
相对路径:@l…/documents/report)

4.2常用标签

web开发:Thymeleaf模板引擎
web开发:Thymeleaf模板引擎

5.1页面布局

页面布局就是对前端的页面进行划分区域,每个区域有不同的职责,布局是为了更好地重复利用前端代码,避免大量重复性的劳动。在现有的前端系统中,页面布局成了前端开发最重要的工作之一,Thymeleaf在设计之初对页面布局就有考虑,通过 Thymeleaf的相关语法可以很容易地实现对前端页面布局。

需要单独引入依赖:thymeleaf-layout-dialect.
web开发:Thymeleaf模板引擎