最先開發的時候,展現頁面咱們都是使用HTML完成咱們的代碼編寫;可是咱們的顯示頁面必定是須要動態變化的,以後就引入了Jsp技術,用來進行數據的顯示及交互,可是Jsp是以war包進行部署,可是以後想用jar包的方式打包,這種方式就會很麻煩,因此就有了模板引擎技術 ,模板引擎有不少,好比jsp,freemarker,thymeleaf等,咱們用thymeleaf來舉例html
官網地址:https://www.thymeleaf.org/java
github地址:https://github.com/thymeleaf/thymeleafgit
中文網站:https://raledong.gitbooks.io/using-thymeleaf/content/github
先引入依賴,我用SpringBoot的starterspring
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-thymeleaf</artifactId> </dependency>
在springboot中有專門的thymeleaf配置類:ThymeleafProperties數組
@ConfigurationProperties(prefix = "spring.thymeleaf") public class ThymeleafProperties { private static final Charset DEFAULT_ENCODING = StandardCharsets.UTF_8; public static final String DEFAULT_PREFIX = "classpath:/templates/"; public static final String DEFAULT_SUFFIX = ".html"; /** * Whether to check that the template exists before rendering it. */ private boolean checkTemplate = true; ..................................
@Controller public class RequestController { @GetMapping("/request") public String request(Model model){ model.addAttribute("msg","name"); return "show"; } }
<!DOCTYPE html> <html lang="en" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <h1 th:text="${msg}"></h1> </body> </html>
表達式名字 | 語法 | 用途 |
---|---|---|
變量取值 | ${...} | 獲取請求域、session域、對象等值 |
選擇變量 | *{...} | 獲取上下文對象值 |
消息表達式 | #{...} | 獲取國際化等值 |
連接URL | @{...} | 生成連接 |
片斷表達式 | ~{...} | 同jsp:include 做用,引入公共頁面片斷 |
'one text'
, 'Another one!'
,…0
, 34
, 3.0
, 12.3
,…true
, false
null
one
, sometext
, main
,…+
|The name is ${name}|
+
, -
, *
, /
, %
and
, or
!
, not
>
, <
, >=
, <=
(gt
, lt
, ge
, le
)==
, !=
(eq
, ne
)(if) ? (then)
(if) ? (then) : (else)
(value) ?: (defaultvalue)
_
th:text/ th:utext :設置當前元素的文本內容,二者的區別在於前者不會轉義html標籤,後者會。優先級不高:order=7springboot
th:value/ th:src/ th:href:設置當前元素的value值,優先級不高:order=6session
th:each:遍歷循環元素,和th:text或th:value一塊兒使用。注意該屬性修飾的標籤位置,詳細日後看。優先級很高:order=2app
th:if:條件判斷,相似的還有th:unless,th:switch,th:case。優先級較高:order=3less
th:insert/ th:include/ th:replace:代碼塊引入,三者的區別較大,經常使用於公共代碼塊提取的場景。優先級最高:order=1
th:fragment:定義代碼塊,方便被th:insert引用。優先級最低:order=8
th:object:聲明變量,通常和*{}一塊兒配合使用,達到偷懶的效果。優先級通常:order=4
th:attr/ th:attrappend/ th:attrprepend:修改任意屬性優先級通常:order=5
全部h5兼容的標籤寫法:https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf.html#setting-value-to-specific-attributes
關於屬性的優先級
此外thymeleaf有不少內置方法,與Java的API相似!
strings:字符串格式化方法,經常使用的Java方法它都有。好比:equals,length,trim,toUpperCase,indexOf等
numbers:數值格式化方法,經常使用的方法有:formatDecimal等
bools:布爾方法,經常使用的方法有:isTrue,isFalse等
arrays:數組方法,經常使用的方法有:toArray,length,isEmpty,contains,containsAll等
lists,sets:集合方法,經常使用的方法有:toList,size,isEmpty,contains,containsAll,sort等
maps:對象方法,經常使用的方法有:size,isEmpty,containsKey,containsValue等
dates:日期方法,經常使用的方法有:format,year,month,hour,createNow等