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构建项目:
2.2添加依赖:
2.3:application.properties配置
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)
-
spring.thymeleaf.cachestrue
-
#检查模板是否存在,然后再呈现
-
spring.thymeleaf.check-template=true
-
#检查模板位置是否正确(默认值:true)
-
spring.thymeleaf.check-template-location=true
-
#Content-Type的值(默认值:text/html)
-
spring.thymeleaf.content-type=text/html
10.#开启MVC Thymeleaf视图解析(默认值:true -
spring.thymeleaf.enabled=true
12.#模板编码
13.spring.thymeleaf.encoding=UTF-8
14.#要被排除在解析之外的视图名称列表,用逗号分霜
- 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 时才需要设置这个属性。
- spring.thymeleaf.template-resolver-order=
24.#可解析的视图名称列表,用逗号分将
- 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中获取数据, 进行赋值(输出),拼接等操作
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常用标签
5.1页面布局
页面布局就是对前端的页面进行划分区域,每个区域有不同的职责,布局是为了更好地重复利用前端代码,避免大量重复性的劳动。在现有的前端系统中,页面布局成了前端开发最重要的工作之一,Thymeleaf在设计之初对页面布局就有考虑,通过 Thymeleaf的相关语法可以很容易地实现对前端页面布局。
需要单独引入依赖:thymeleaf-layout-dialect.