Java学习之Thymeleaf使用
Java學(xué)習(xí)之Thymeleaf使用
0x00 前言
為了后續(xù)的代碼審計(jì)一些常用的框架和技術(shù)都是有必要了解一下,在此重拾Spring Boot等開發(fā)知識(shí)內(nèi)容。
0x01 Thymeleaf簡(jiǎn)介
Thymeleaf是一個(gè)現(xiàn)代的服務(wù)器端Java模板引擎的web和獨(dú)立的環(huán)境,能夠處理HTML, XML, JavaScript, CSS,甚至純文本。
Thymeleaf的主要目標(biāo)是提供一種優(yōu)雅的和高度可維護(hù)的方式來創(chuàng)建模板。為了實(shí)現(xiàn)這一點(diǎn),它構(gòu)建在自然模板的概念上,以不影響模板作為設(shè)計(jì)原型使用的方式將其邏輯注入模板文件。這改進(jìn)了設(shè)計(jì)的交流,并在設(shè)計(jì)和開發(fā)團(tuán)隊(duì)之間架起了橋梁。
Thymeleaf的設(shè)計(jì)從一開始就考慮了Web標(biāo)準(zhǔn),尤其是HTML5
Thymeleaf是一個(gè)非常可擴(kuò)展的模板引擎(事實(shí)上它可以被稱為模板引擎框架),它允許你定義和自定義的方式,你的模板將被處理到一個(gè)精細(xì)的細(xì)節(jié)級(jí)別。
將一些邏輯應(yīng)用到標(biāo)記工件(標(biāo)記、一些文本、注釋,如果模板不是標(biāo)記,則僅僅是占位符)的對(duì)象稱為處理程序,這些處理程序的集合—加上一些額外的工件—通常是方言的組成部分。Thymeleaf的核心庫(kù)提供了一種稱為標(biāo)準(zhǔn)方言的方言,這對(duì)大多數(shù)用戶來說應(yīng)該足夠了。
0x02 Thymeleaf 基礎(chǔ)配置
這里主要以Srping Boot為主
<!--引入thymeleaf依賴-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
在項(xiàng)目的resources emplates目錄下創(chuàng)建HTML文件,這里注意導(dǎo)入thymeleaf的命名空間,否則無法進(jìn)行模板的渲染。
<!doctype html>
<!--注意:引入thymeleaf的名稱空間-->
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<meta name="viewport"
content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<p th:text="'hello SpringBoot'">hello thymeleaf</p>
</body>
</html>
編寫Controller
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
public class IndexController {
@GetMapping("home")
public String index() {
return "index";
}
}
這里的注解需要使用@Controller,不能使用@RestController注解,否則會(huì)報(bào)錯(cuò).
如果只是使用@RestController注解Controller,則Controller中的方法無法返回jsp頁面,或者h(yuǎn)tml,配置的視圖解析器 InternalResourceViewResolver不起作用,返回的內(nèi)容就是Return 里的內(nèi)容。
如果需要返回到指定頁面,則需要用 @Controller配合視圖解析器InternalResourceViewResolver才行。
如果需要返回JSON,XML或自定義mediaType內(nèi)容到頁面,則需要在對(duì)應(yīng)的方法上加上@ResponseBody注解。
0x03 Thymeleaf 語法
類型
1.變量表達(dá)式
2.選擇或星號(hào)表達(dá)式
3.文字國(guó)際化表達(dá)式
4.URL表達(dá)式
${...}變量表達(dá)式
<span th:text="${book.author.name}">
<li th:each="book : ${books}">
@{...} 鏈接表達(dá)式
@{/order/list}
@{/order/details(id=${orderId})}
或者是
<form th:action="@{/createOrder}">
<a href="main.html" th:href="@{/main}">
#{...} 消息表達(dá)式
#{main.title}
#{message.entrycreated(${entryId})}
*{...} 選擇變量表達(dá)式
<div th:object="${book}">
...
<span th:text="*{title}">...</span>
...
</div>
常用th標(biāo)簽
th標(biāo)簽屬性
1)th:text:文本替換;
2)th:utext:支持html的文本替換。
3)th:value:屬性賦值
4)th:each:遍歷循環(huán)元素
5)th:if:判斷條件,類似的還有th:unless,th:switch,th:case
6)th:insert:代碼塊引入,類似的還有th:replace,th:include,常用于公共代碼塊提取的場(chǎng)景
7)th:fragment:定義代碼塊,方便被th:insert引用
8)th:object:聲明變量,一般和*{}一起配合使用,達(dá)到偷懶的效果。
9)th:attr:設(shè)置標(biāo)簽屬性,多個(gè)屬性可以用逗號(hào)分隔
0x04 結(jié)尾
內(nèi)容比較簡(jiǎn)單,主要作為記錄。
WX:TG9yaTI1NDgyNjYxNDU=
歡迎各位師傅來一起做技術(shù)交流
總結(jié)
以上是生活随笔為你收集整理的Java学习之Thymeleaf使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android: AndroidStud
- 下一篇: 怎么创建具有真实纹理的CG场景岩石?