没用thymleaf之前,一直不知道thymeleaf和jsp的区别在哪,也不知道它能不能完全代替jsp,动手用了才知道,thymleaf完全可以代替jsp,我理解的区别有以下几点:
(1)是否启动项目:jsp需要项目启动才能看到页面,thymleaf不需要,不过引用css文件是需要项目根路径的,如果不起动的话,页面布局会混乱。
(2)springboot的支持:springboot对jsp的支持有些牵强,前端页面仍然需要写在src\main\webapp下面,需要手动添加jsp配置,最重要的是,不支持jar包启动,跟以前写的java web项目一样,需要在容器中启动。而springboot对thymleaf支持很好,页面放在templates目录下,css和js文件放在static目录下,支持jar包启动,简直是零配置,热部署的话设置spring.thymeleaf.cache为false即可。
(3)语法不同。下面会介绍项目中用到的一些语法。
1、加命名空间
<html xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout">
thymleaf的语法都需要以 th 开头
2、引用外部css,js文件
<link th:href="@{/css/bootstrap.min.css}" rel="stylesheet" />
@{/} 表示项目根路径
3、导入公共页面
<div th:replace="~{/common/top :: top}"></div>
<div th:fragment="top" class="navbar navbar-fixed-top" style="background: #1186CB;">
XXXX
</div>
/common/top:是/common下面的 top.html文件
top:指名字为top的fragment
4、从页面对象中取值
4.1、获取session里的值:${session.TESTSUITELISTBYPROJECTID}
4.2、获取request对象里的值:{TEST}
5、循环遍历
${XXXStat.count} 是计数器,从1开始计数
<tbody>
<tr class="odd gradeX" th:each="testsuite : ${session.TESTSUITELISTBYPROJECTID}">
<input type="hidden" th:value="${testsuite.testsuiteid}" th:id="testsuiteid+${testsuiteStat.count}"/>
<td th:text="${testsuiteStat.count}"></td>
<td th:text="${testsuite.name}"></td>
<td th:text="${testsuite.memo}"></td>
</tr>
</tbody>
6、判断语句
<a th:if="${session!=null and session.USER!=null}" th:text="${session.USER.realname}">
7、js中取值
7.1、js中获取session中的对象
[[${session.TESTSUITELISTBYPROJECTID.size()}]]
7.2、js中获取项目根路径
window.location.href = '[[@{/}]]' + 'testSuite/deleteByTestSuiteId/' + testsuiteid;
网友评论