😀前言
本篇博文是關于Thymeleaf的基本介紹,希望你能夠喜歡😊
🏠個人主頁:晨犀主頁
🧑個人簡介:大家好,我是晨犀,希望我的文章可以幫助到大家,您的滿意是我的動力😉😉
💕歡迎大家:這里是CSDN,我總結知識的地方,歡迎來到我的博客,感謝大家的觀看🥰
如果文章有什么需要改進的地方還請大佬不吝賜教 先在次感謝啦😊
文章目錄
- Thymeleaf
- 官方文檔
- 基本介紹
- ● Thymeleaf 是什么
- ● Thymeleaf 的優點
- ● Thymeleaf 的缺點
- Thymeleaf 機制說明
- Thymeleaf 語法
- 表達式
- 表達式一覽
- 字面量
- 文本操作
- 運算符
- 數學運算
- 布爾運算
- 比較運算
- 條件運算
- th 屬性
- 迭代
- 條件運算
- 注意事項
Thymeleaf
官方文檔
在線文檔: https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html
離線文檔: usingthymeleaf.pdf
基本介紹
● Thymeleaf 是什么
- Thymeleaf 是一個跟Velocity、FreeMarker 類似的模板引擎,可完全替代JSP。
- Thymeleaf 是一個java 類庫,他是一個xml/xhtml/html5 的模板引擎,可以作為mvc 的web 應用的view 層。
● Thymeleaf 的優點
- 實現JSTL、OGNL 表達式效果, 語法相似, java 程序員上手快。
- Thymeleaf 模版頁面無需服務器渲染,也可以被瀏覽器運行,頁面簡潔。
- SpringBoot 支持FreeMarker、Thymeleaf、veocity 。
● Thymeleaf 的缺點
-
Thymeleaf: Thymeleaf is a modern server-side Java template engine for both web and standalone environments.
-
Thymeleaf 是一個現代的服務器端 Java 模板引擎,適用于 Web 和獨立環境。
-
缺點: 并不是一個高性能的引擎,適用于單體應用。
-
說明:如果要做一個高并發的應用, 選擇前后端分離更好,但是作為SpringBoot 推薦的模板引擎,還是要講解Thymeleaf 使用, 這樣小伙伴在工作中使用到, 也能搞定。
Thymeleaf 機制說明
- Thymeleaf 是服務器渲染技術, 頁面數據是在服務端進行渲染的。
- 比如: manage.html 中一段thymeleaf 代碼, 是在用戶請求該頁面時,有thymeleaf 模板引擎完成處理的(在服務端完成), 并將結果頁面返回。
- 因此使用了Thymeleaf , 并不是前后端分離.
Thymeleaf 語法
表達式
表達式一覽
字面量
文本值: ‘hhh’ , ‘hello’ ,…數字: 10 , 7 , 36.8 , …布爾值: true , false
空值: null
變量: name,age,… 變量不能有空格
文本操作
字符串拼接: +
變量替換: |age= ${age}|
運算符
數學運算
運算符: + , - , * , / , %
布爾運算
運算符: and , or
一元運算: ! , not
比較運算
比較: > , < , >= , <= ( gt , lt , ge , le )等式: == , != ( eq , ne )
條件運算
If-then: (if) ? (then)
If-then-else: (if) ? (then) : (else)
Default: (value) ?: (defaultvalue)
th 屬性
html 有的屬性,Thymeleaf 基本都有,而常用的屬性大概有七八個。其中th 屬性執行的優先級從1~8,數字越低優先級越高
● th:text :設置當前元素的文本內容,相同功能的還有th:utext,兩者的區別在于前者不會轉義html 標簽,后者會。優先級不高:order=7
● th:value:設置當前元素的value 值,類似修改指定屬性的還有th:src,th:href。優先級不高:order=6
● th:each:遍歷循環元素,和th:text 或th:value 一起使用。注意該屬性修飾的標簽位置,詳細往后看。優先級很高:order=2
● th:if:條件判斷,類似的還有th:unless,th:switch,th:case。優先級較高:order=3
● th:insert:代碼塊引入,類似的還有th:replace,th:include,三者的區別較大,若使用不恰當會破壞html 結構,常用于公共代碼塊提取的場景。優先級最高:order=1
● th:fragment:定義代碼塊,方便被th:insert 引用。優先級最低:order=8
● th:object:聲明變量,一般和*{}一起配合使用,達到偷懶的效果。優先級一般:order=4
● th:attr:修改任意屬性,實際開發中用的較少,因為有豐富的其他th 屬性幫忙,類似的還有th:attrappend,th:attrprepend。優先級一般:order=5
迭代
<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>
<tr th:each="prod,iterStat : ${prods}" th:class="${iterStat.odd}? 'odd'"><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>
條件運算
<a href="comments.html"
th:href="@{/product/comments(prodId=${prod.id})}"
th:if="${not #lists.isEmpty(prod.comments)}">view</a>
<div th:switch="${user.role}"><p th:case="'admin'">User is an administrator</p><p th:case="#{roles.manager}">User is a manager</p><p th:case="*">User is some other thing</p>
</div>
注意事項
1、若要使用Thymeleaf 語法,首先要聲明名稱空間: xmlns:th=“http://www.thymeleaf.org”
2、設置文本內容th:text,設置input 的值th:value,循環輸出th:each,條件判斷th:if,插入代碼塊th:insert,定義代碼塊th:fragment,聲明變量th:object
3、th:each 的用法需要格外注意,打個比方:如果你要循環一個div 中的p 標簽,則th:each屬性必須放在p 標簽上。若你將th:each 屬性放在div 上,則循環的是將整個div。
4、變量表達式中提供了很多的內置方法,該內置方法是用#開頭,請不要與#{}消息表達式弄混。
😁熱門專欄推薦
SpringBoot篇
Spring Initailizr–快速入門–SpringBoot的選擇
帶你了解SpringBoot支持的復雜參數–自定義對象參數-自動封裝
Rest 優雅的url請求處理風格及注意事項
文章到這里就結束了,如果有什么疑問的地方請指出,諸大佬們一起來評論區一起討論😁
希望能和諸大佬們一起努力,今后我們一起觀看感謝您的閱讀🍻
如果幫助到您不妨3連支持一下,創造不易您們的支持是我的動力🤞