javascript
Spring Boot集成Thymeleaf模板引擎
一、Thymeleaf 模板介紹
Spring Boot 推薦使用Thymeleaf 來代替?zhèn)鹘y(tǒng)開發(fā)中的JSP,那么什么是Thymeleaf 模板引擎呢?下面就來簡單的介紹一下。
Thymeleaf 官方地址鏈接:https://www.thymeleaf.org/
1.1什么是Thymeleaf
Thymeleaf 是一款用于渲染XML/XHTML/HTML5 內(nèi)容的模板引擎。類似JSP,Velocity,FreeMaker 等,它也可以輕易的與Spring MVC 等Web 框架進(jìn)行集成作為Web 應(yīng)用的模板引擎。
1.2為什么要使用Thymeleaf
以往我們使用JSP 頁面開發(fā)的時候,需要開啟服務(wù)器才能在瀏覽器訪問到對應(yīng)的視圖資源,Thymeleaf 能夠直接在瀏覽器中打開并正確顯示模板頁面,而不需要啟動整個Web應(yīng)用,原因是Thymeleaf 支持HTML 原型開發(fā),也就是說Thymeleaf 在前后端分離上做的更好,這也是Thymeleaf 最大的一個特點(diǎn)。
Thymeleaf 提供spring標(biāo)準(zhǔn)方言和一個與 SpringMVC 完美集成的可選模塊,可以快速的實(shí)現(xiàn)表單綁定、屬性編輯器、國際化等功能。
1.3Thymeleaf 常用的語法規(guī)則
我們在進(jìn)行后端開發(fā)的時候,之所以會選擇JSP,是因?yàn)镴SP 中提供了很多實(shí)用的標(biāo)簽,比如判斷、取值、遍歷等。作為Spring Boot 推薦使用的Thymeleaf 當(dāng)然也提供了很多實(shí)用的標(biāo)簽。
變量
<!-- ${today} 中的值,會覆蓋標(biāo)簽中的值 --> <p>Today is: <span th:text="${today}">這里顯示日期</span>.</p>假設(shè)today 的值為2018年3月36日,那么渲染結(jié)果為:<p>Today is: 2018年3月36日.</p>。可見Thymeleaf 的基本變量和JSP 一樣,都使用${.}表示獲取變量的值。
URL
<!-- 絕對路徑 --> <a th:href="@{http://www.thymeleaf.org}">Thymeleaf</a> <!-- 相對路徑 @{...}表達(dá)式中可以通過{orderId}訪問Context中的orderId變量 --> <a href="details.html" th:href="@{/order/details(orderId=${o.id})}">view</a>URL 在Web 應(yīng)用模板中占據(jù)著十分重要的地位,需要特別注意的是Thymeleaf 對于URL 的處理是通過語法@{...} 來處理的。Thymeleaf支持絕對路徑URL 也支持相對路徑的URL。
循環(huán)
<table><tr><th>NAME</th><th>PRICE</th><th>IN STOCK</th></tr><tr th:each="prod : ${prods}"><td th:text="${prod.name}">Onions</td><td th:text="${prod.price}">2.41</td><td th:text="${prod.inStock}? #{true} : #{false}">yes</td></tr></table>可以看到,需要在被循環(huán)渲染的元素(這里是)中加入th:each標(biāo)簽,其中th:each="prod : ${prods}"意味著對集合變量prods進(jìn)行遍歷,將當(dāng)前集合中的值賦給prod。
判斷
<a th:if="${myself=='yes'}" > Hi </a> <a th:unless=${session.user != null} th:href="@{/login}" >Login</a>Thymeleaf 中使用th:if和th:unless屬性進(jìn)行條件判斷,上面的例子中,<a>標(biāo)簽只有在th:if中條件成立時才顯示。th:unless于th:if恰好相反,只有表達(dá)式中的條件不成立,才會顯示其內(nèi)容。
PS
上面主要介紹一些比較常用的標(biāo)簽,想要學(xué)習(xí)更多的標(biāo)簽,可以去查看對應(yīng)的官方文檔。
Thymeleaf3.0 官方使用手冊鏈接:https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html
二、在Spring Boot 中使用Thymeleaf
Thymeleaf 在Spring Boot 中的使用規(guī)則
Spring Boot 實(shí)現(xiàn)自動配置的時候已經(jīng)對Thymeleaf 進(jìn)行了支持,關(guān)于其中的一些規(guī)則,我們可以在ThymeleafProperties中進(jìn)行查看,如下:
ThymeleafProperties類中已經(jīng)對Thymeleaf 進(jìn)行了前綴與后綴設(shè)置,所以我們只要在classpath:/templates/目錄下創(chuàng)建×××.html,Thymeleaf 就可以幫我們渲染頁面了。
在Spring Boot 引入Thymeleaf 的starter
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency>編寫控制器代碼
@RequestMapping("/hello")public String thymeleafTest(Map<String, String> map){map.put("username", "Jas");return "index";}在classpath:/templates/下新建index.html
<!DOCTYPE html> <!-- 引入thymeleaf 的名稱空間 --> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head><meta charset="UTF-8"><title>Title</title> </head> <body><h2>Hello <span th:text="${username}">這里用于顯示用戶名</span></h2> </body> </html>在瀏覽器進(jìn)行測試
通過上面的結(jié)果我們可以看出${username}中的值覆蓋了原來的值,進(jìn)行數(shù)據(jù)展示的頁面不再是JSP而是HTML,所以在不啟動服務(wù)器的情況下頁面也是可以進(jìn)行訪問的,在服務(wù)器啟動情況下完成頁面渲染,更好的支持前后端分離,因此Thymeleaf 完全是可以代替JSP 的。
三、總結(jié)
這篇博文簡單的寫了一些關(guān)于Thymeleaf 模板引擎相關(guān)的知識,如果想要了解更多關(guān)于Thymeleaf 模板引擎方面的知識,可以在官方文檔中深入了解。希望本篇博文能夠?yàn)槟闾峁┮恍椭?/p>
參考資料:
https://www.tianmaying.com/tutorial/using-thymeleaf
https://zhuanlan.zhihu.com/p/24965387?refer=dreawer
總結(jié)
以上是生活随笔為你收集整理的Spring Boot集成Thymeleaf模板引擎的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Spring Boot自动配置原理分析
- 下一篇: Spring MVC开发RESTful风