什么是模板引擎?常见的模板引擎有哪些?thymeleaf的常用指令介绍。

1.什么是模板引擎?
模板引擎是为了解决用户界面(显示)与业务数据(内容)分离而产生的。 它可以生成特定格式的文档,常用的如格式如HTML、xml以及其他格式的文本格式,可以让(网站)程序实现界面与数据分离,业务代码与逻辑代码的分离,这就大大提升了开发效率,良好的设计也使得代码重用变得更加容易。其工作模式如下:

2.常见的模板引擎有哪些?

jsp、freemarker、velocity、themleaf

2.1、Jsp 优点:

1、功能强大,可以写java代码

2、支持jsp标签(jsp tag)

3、支持表达式语言(el表达式,jstl语法)

4、官方标准,用户群广,丰富的第三方jsp标签库

5、性能良好。jsp编译成class文件执行,有很好的性能表现

缺点: jsp没有明显缺点,由于可以编写java代码,如使用不当容易破坏结构。

2.2、velocity是较早出现的用于代替jsp的模板语言

优点:

1、不能编写java代码,可以实现严格的mvc分离

2、性能良好,据说比jsp性能还要好些

3、使用表达式语言,据说jsp的表达式语言就是学velocity的

缺点:

1、不是官方标准

2、用户群体和第三方标签库没有jsp多。

3、对jsp标签支持不够好

4、已经很久很久没有维护了。

2.3、freemarker 优点:

1、不能编写java代码,可以实现严格的mvc分离 。

2、性能非常不错。

3、对jsp标签支持良好。

4、内置大量常用功能,使用非常方便。

5、宏定义(类似jsp标签)非常方便 。

6、使用表达式语言 。

缺点:

1、不是官方标准。

2、用户群体和第三方标签库没有jsp多。

3.Thymeleaf。

 3.1、Thymeleaf的四个特点。

动静结合:Thymeleaf 在有网络和无网络的环境下皆可运行,即它可以让美工在浏 览器查看页面的静态效果,也可以让程序员在服务器查看带数据的动态页面效果。这是 由于它支持 html 原型,然后在 html 标签里增加额外的属性来达到模板+数据的展示 方式。浏览器解释 html 时会忽略未定义的标签属性,所以 thymeleaf 的模板可以静态 地运行;当有数据返回到页面时,Thymeleaf 标签会动态地替换掉静态内容,使页面动 态显示。

开箱即用:它提供标准和spring标准两种方言,可以直接套用模板实现JSTL、 OGNL表达式效果,避免每天套模板、该jstl、改标签的困扰。同时开发人员也可以扩展 和创建自定义的方言。

多方言支持:Thymeleaf 提供spring标准方言和一个与 SpringMVC 完美集成的 可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能。

与SpringBoot完美整合:SpringBoot提供了Thymeleaf的默认配置,并且 为Thymeleaf设置了视图解析器,我们可以像以前操作jsp一样来操作Thymeleaf。代 码几乎没有任何区别,就是在模板语法上有区别。

3.2、thymeleaf的常用指令介绍。

Thymeleaf 在页面的使用 – 声明

创建HTML

需要在HTML中的标签中加入:在页面的需要动态数据的标签上使用th:xx 指令来进行动态数据的加载

Thymeleaf 在页面的使用 – 使用WebContext中的变量

Thymeleaf通过${...}来获取model中的变量,这是一种ognl表达式。

OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,他是一个开源项目。

注意:如果不支持这种th:的命名空间写法,那么可以把th:text换成 data-th-text。

例如:<h1 th:text="${username}">无名</h1>

Thymeleaf 在页面的使用 — 自动变量语法糖 如果Servlet传递是一个对象,我们要过去对象中的属性值,那 该怎么办呢?

Thymeleaf 在页面的使用 — 自动变量语法糖

如果Servlet传递是一个对象,我们要过去对象中的属性值,那该怎么办呢?

例如:<h1 th:text="${student.name}">学生姓名</h1>

Thymeleaf 在页面的使用 – 对象语法糖

当数据量比较多的时候,频繁的写user.就会非常麻烦。

• 首先,在 父标签上用 th:object="${user}"获取user的值,并且保存

• 然后,在子标签任意元素上,可以通过 *{属性名}的方式,来获取user中的属性,这样就省去了大量的user.前缀了

Thymeleaf 在页面的使用 -- 对象中方法的调用

如果实体类中有特殊的方法,在页面想要使用:

<h1 th:text="${student.show()}">方法名</h1>

Thymeleaf 在页面的使用 – 一些java中常用的方法也可以使用

学生的姓名中间有个空格: 可以使用java中的字符串的方法split来进行分割

<h1 th:text="${student.name.split('')[0]}"></h1>

Thymeleaf 在页面的使用 – 内置对象

Thymeleaf中提供了一些内置对象,并且在这些对象中提供了一些方法。 获取这些对象,需要使用#对象名来引用或者使用语法糖。

Thymeleaf 在页面的使用 – 常用内置对象

Thymeleaf 在页面的使用 – 全局对象

Thymeleaf中提供一些便捷的对象来处理页面上的数据

Thymeleaf 在页面的使用 – 运算符

运算符包括:算数运算符 , 比较运算符  ,逻辑运算符  ,三元运算符 ,三元运算符默认值式 。

支持的算术运算符:+ - * / %。

支持的比较运算:>, = , , , < , >= , <= ( gt , lt , ge , le ) 等于:== , != ( eq , ne )

>,<不建议使用。

比较:>,<,>=,<= (gt,lt,ge,le)

等于:==,!=(eq,ne)

支持的逻辑运算 :and , or, not(!)

Thymeleaf 在页面的使用 – 三元运算符

Thymeleaf中的三元运算符跟java中的三元运算符是一样的:

特殊的三元运算符 — 默认值: 值 ?: 默认值 有的时候,取一个值可能为空,这个时候需要做有一个默认值,可以使用表达式 ?: 默认值简写

当前面的表达式值为null时,就会使用后面的默认值。 注意:?:之间没有空格。

Thymeleaf 在页面的使用 – 逻辑判断

Thymeleaf中使用th:if 或者 th:unless 进行逻辑判断.

Thymeleaf 在页面的使用 – 分支控制

Thymeleaf中使用两个指令:th:switch 和 th:case 与java中的switch是一样的.

Thymeleaf 在页面的使用 – 循环控制

循环也是非常频繁使用的需求, Thymeleaf中使用th:each指令来完成 与java中的增强for循环类似。

Thymeleaf 在页面的使用 – 循环控制

th:each=“变量,状态 : 集合” 状态对象包含以下属性:

• index,从0开始的角标

• count,元素的个数,从1开始

• size,总元素个数

• current,当前遍历到的元素

• even/odd,返回是否为奇偶,boolean值 even偶数,odd奇数

• first/last,返回是否为第一或最后,boolean值

 

Thymeleaf 在页面的使用 – 字符串拼接

字符串字面值需要用'',拼接起来非常麻烦, Thymeleaf对此进行了简化,使用一对|即可。

Thymeleaf 在页面的使用 – 在超链接中使用动态数据

在之前做的数据表格中有对数据的删除或修改,需要用到超链接, 每个超链接中携带的参数的值是不同的。 语法: th:href=“@{xxxx(key=value,key2=value2,…)}”。

Thymeleaf 在页面的使用 -- 在html内容中使用动态数据

有的时候我们需要在标签的文本中嵌入一个动态数据, 可以使用[[${xxx}]],同理可以在js中嵌入动态数据。

Thymeleaf 在页面的使用 – 常用的指令

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值