目录
什么是模板引擎?
常见的模板引擎
Jsp
velocity
freemarker
Thymeleaf
Thymeleaf的常用指令介绍
什么是模板引擎?
模板引擎是为了解决用户界面(显示)与业务数据(内容)分离而产生的。
他可以生成特定格式的文档,常用的如格式如 HTML 、 xml 以及其他格式的文本格式。其工作模式如下:
常见的模板引擎
Jsp
优点:
1 、功能强大,可以写 java 代码
2 、支持 jsp 标签( jsp tag )
3 、支持表达式语言( el 表达式, jstl 语法)
4 、官方标准,用户群广,丰富的第三方 jsp 标签库
5 、性能良好。 jsp 编译成 class 文件执行,有很好的性能表现
缺点:
jsp 没有明显缺点,由于可以编写 java 代码,如使用不当容易破坏结构。
velocity
是较早出现的用于代替 jsp 的模板语言
优点:
1 、不能编写 java 代码,可以实现严格的 mvc 分离
2 、性能良好,据说比 jsp 性能还要好些
3 、使用表达式语言,据说 jsp 的表达式语言就是学 velocity 的
缺点:
1 、不是官方标准
2 、用户群体和第三方标签库没有 jsp 多。
3 、对 jsp 标签支持不够好
freemarker
优点:
1 、不能编写 java 代码,可以实现严格的 mvc 分离
2 、性能非常不错
3 、对 jsp 标签支持良好
4 、内置大量常用功能,使用非常方便
5 、宏定义(类似 jsp 标签)非常方便
6 、使用表达式语言
缺点:
1 、不是官方标准
2 、用户群体和第三方标签库没有 jsp 多
Thymeleaf
Thymeleaf是用来开发Web和独立环境项目的服务器端的Java模板引擎
Spring官方支持的服务的渲染模板中,并不包含jsp。而是Thymeleaf和 Freemarker等,而Thymeleaf与SpringMVC的视图技术,及SpringBoot的 自动化配置集成非常完美,几乎没有任何成本,你只用关注Thymeleaf的语法即可。
Thymeleaf的常用指令介绍
循环也是非常频繁使用的需求, Thymeleaf中使用th:each指令来完成与java中的增强for循环类似
<table border="1">
<tr>
<th>编号</th>
<th>姓名</th>
<th>生日</th>
<th>性别</th>
</tr>
<tr th:each="t,stat:${stulist}">
<td th:text="${stat.count}">1</td>
<td th:text="${t.sname}">二万</td>
<td th:text="${#dates.format(t.birthday,'yyyy-MM-dd')}">2222-2-22</td>
<td th:text="${t.ssex}==1?'男':'女'">2</td>
</tr>
</table>
在之前做的数据表格中有对数据的删除或修改,需要用到超链接, 每个超链接中携带的参数的值是不同的。
语法: th:href=“@{xxxx(key=value,key2=value2,…)}”
<table border="1">
<tr>
<th>编号</th>
<th>姓名</th>
<th>生日</th>
<th>性别</th>
</tr>
<tr th:each="t,stat:${stulist}">
<td th:text="${stat.count}">1</td>
<td th:text="${t.sname}">二万</td>
<td th:text="${#dates.format(t.birthday,'yyyy-MM-dd')}">2222-2-22</td>
<td th:text="${t.ssex}==1?'男':'女'">2</td>
<td th:text="@{delstu.do(sid=${t.sid},sname=${t.sname})}">删除</td>
</tr>
</table>