栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

一、模板引擎

模板引擎:为了解决用户界面(显示)与业务数据(内容)分离而产生的。

可以生成特定格式的文档,常用的格式例如:HTML、xml以及其他格式的文本格式。

具体的工作模式如下:

二、常见模板引擎

                        jsp、freemarker、velocity、themleaf

jsp

优点:

        1.功能强大,可以写Java代码

        2.支持jsp标签(jsp tag)

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

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

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

缺点:

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

freemarker(目前主流的模板引擎之一)

优点:

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

        2.性能非常不错

        3.对jsp标签支持良好

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

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

        6.使用表达式语言

缺点:

        1.不是官方的标准

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

velocity(较早代替jsp的模板语言)

        一个基于Java的模板引擎。它允许任何人使用简单但功能强大的模板语言来引用Java代码中定义的对象。

优点:

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

        2.性能良好,执行速度明显优于jsp

        3.使用表达式语言

缺点:

        1.不是官方标准

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

        3.对jsp标签支持不够好

        4.很久已经没有进行维护

themleaf

       Themleaf是用来开发Web和独立环境项目的服务器的Java模板引擎。

·       Spring官方支持的服务的渲染模板中,并不包含jsp。而是Themleaf和Freemarker等,而Themleaf与SpringMVC的视图技术,及SpringBoot的自动化配置集成非常完美,成本较低,只需要关注Themleaf的语法就行了。

特点一:

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

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

特点二:

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

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

三、thymeleaf的常用指令

        下面我们主要说一下Themleaf的常用指令:

1. th:xx 指令(Themleaf在页面的使用)

 

2. ${}(使用WebContext中的变量,Themleaf通过${..}来获取model中的变量,这是一种ognl表达式)

静态内容

3. 自动变量语法糖

Student s = new Student();
s.setBirthday(new Date());
s.setScore(90.0);
s.setSname("张三三");
s.setBj(new Banji(1,"超越班"));

WebContext context = new WebContext(request, response, getServletContext());
context.setVariable("stu", s);
templateEngine.process("index", context, response.getWriter());

Ognl 也给我们提供了类似js的语法:

学生姓名

学生生日

成绩

班级名

4. 对象语法糖

        我们发现频繁的写stu会比较麻烦所以我们可以进行以下操作:

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

然后:之后我们就可以在子标签上通过*{属性名}的方式,获取student中的属性。

100


xxx班

5. 全局对象

今天是:日期

6. 三元运算符

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

 

        特殊的三元元素夫——值  ?: 默认值

 

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

7. 逻辑判断

使用  th:if 或者 th:unless 进行逻辑判断(th:if 和 th:unless 表达相反的结果)  

未成年
= 18">成年

8..1 循环控制   (***)

Thymeleaf中使用 th:each 指令完成与java中的增强for循环类似

  -- 元素个数 (与数据库表中的主键无关)
        
编号 姓名 生日 性别
1汤姆 2222-2-22 2

8.2 循环控制

        th:each = "变量,状态 :集合"

状态对象包含以下属性:

• index,从0开始的角标
• count,元素的个数,从1开始
• size,总元素个数
• current,当前遍历到的元素
• even/odd,返回是否为奇偶,boolean值 even偶数,odd奇数
• first/last,返回是否为第一或最后,boolean值

9. 字符串拼接

普通字符串的拼接:


简化后:

10. 在超链接中使用动态数据

        对表中的数据进行修改删除时,我们需要用到超链接,并且每个超链接中携带的参数值是不同的。

        语法:th:href = "@{xxx(key=value,key2=value2,...)}"

 -- 学生个数
			
学生编号 学生姓名 学生生日 学生性别 操作
2222-2-22 删除

11. 在html内容中使用动态数据

        语法:[[${xxx}]]

你好,我是[[${session.stu.sname}]]

        

        以上我个人对引擎模板的了解和介绍,同时针对Thymeleaf中常用的指令进行的简单的介绍,希望对大家有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1007779.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号