模板引擎是将动态数据与静态页面(模板)组合的一种工具
常见的模板引擎及优缺点
模板引擎 | 优点 | 缺点 |
---|---|---|
jsp | 1、功能强大,可以在模板里面写java代码 2、支持jsp标签 3、支持表达式语言(el表达式,jstl语法) 4、官方标准,用户群广,拥有丰富的第三方jsp标签库 5、性能良好。jsp编译成class文件直接执行,有很好的性能表现 | 没有明显缺点。编写java代码不当会破坏结构 |
freemaker | 1、可以实现严格的mvc分离 2、性能良好 3、使用表达式语言 | 1、不是官方标准 2、用户群体和第三方标签库没有jsp多 3、对jsp标签支持不够好 4、长时间未维护 |
velocity | 1、可以实现严格的mvc分离 2、性能非常不错 3、对jsp标签支持良好 4、内置大量常用功能,使用非常方便 5、宏定义(类似jsp标签)非常方便 6、使用表达式语言 | 1、不是官方标准 2、用户群体和第三方标签库没有jsp多 |
themleaf | 1、动静结合:可以通过浏览器来查看页面的静态效果,也可以通过模板引擎来查看动态数据加载后的页面效果 2、开箱即用:它提供标准和spring标准两种方言,可以直接套用模板实现JSTL、OGNL表达式效果 3、多方言支持:Thymeleaf 提供spring标准方言和一个与 SpringMVC 完美集成的可选模块,可以快速的实现表单绑定、属性编辑器、国际化等功能 4、与SpringBoot完美整合:SpringBoot提供了Thymeleaf的默认配置,并且为Thymeleaf设置了视图解析器,我们可以像以前操作jsp一样来操作Thymeleaf |
themleaf的一些常用指令
- th:text:设置双标签类型标签之间的文本内容,会对其中的特殊字符进行转义(例如:想要以标签格式加入内容时,会以纯文本的形式显示,不会转换为标签格式)
- th:utext:设置双标签类型标签之间的文本内容,但不会对其中的特殊字符进行转义
- th:if:当if后的判断条件为true时,显示模板片段,否则不显示
- th:unless:当if后的判断条件为false时,显示模板片段,否则不显示
- th:switch与th:case:与java中的switch类似,当switch后的变量的值与某个case后的常量值相同时,就显示对应的模板片段,否则不显示
- th:fragment:定义模板片段,包括定义的标签及标签之间的内容
- th:insert:插入模板片段到标签体的最后
- th:replace:使用模板片段替换自己
- th:include:类似insert,但只插入定义模板片段的标签之间的内容