SpringBoot 整合 Thymeleaf & 如何使用后臺(tái)模板快速搭建項(xiàng)目

如果你和我一樣赠摇,是一名 Java 道路上的編程男孩固逗,其實(shí)我不太建議你花時(shí)間學(xué) Thymeleaf,當(dāng)然他的思想還是值得借鑒的藕帜。但是他的本質(zhì)在我看來就是 Jsp 技術(shù)的翻版(Jsp 現(xiàn)在用的真的很少很少)烫罩。弄前端完全可以直接上手前端框架 vue。

并竟學(xué)Java在我眼里洽故,目前沒有什么是不要學(xué)的贝攒。兼測試、運(yùn)維时甚、前端啥都要會(huì)點(diǎn)隘弊。另外就目前來說哈踱,學(xué)Java的人數(shù)恐怕仍然后端中最龐大的。

免費(fèi)后臺(tái)模板在文末梨熙,大家有需求可以直接下載开镣。

p244489528

我想如果不是學(xué)校作業(yè),也不會(huì)心血來潮寫這篇文章????咽扇。

閱讀本文收獲 ??

  1. 學(xué)會(huì) Thymeleaf 常用語法??♀?
  2. 知曉 Thymeleaf 如何與 SpringBoot 集成??♀?
  3. 使用 Thymeleaf 完成學(xué)校老師作業(yè) ????
  4. 如果有需求邪财,可以直接下個(gè)模板,結(jié)合SpringBoot 寫個(gè)畢業(yè)設(shè)計(jì)????

一质欲、 Thymeleaf 初介紹 ??

Thymeleaf 官網(wǎng)

Thymeleaf 官方文檔

Thymeleaf是適用于 Web 和獨(dú)立環(huán)境的現(xiàn)代服務(wù)器端 Java 模板引擎树埠。

Thymeleaf 的主要目標(biāo)是為您的開發(fā)工作流程帶來優(yōu)雅的自然模板——HTML可以在瀏覽器中正確顯示,也可以作為靜態(tài)原型工作嘶伟,從而加強(qiáng)開發(fā)團(tuán)隊(duì)的協(xié)作弥奸。

憑借 Spring Framework 的模塊、與您最喜歡的工具的大量集成以及插入您自己的功能的能力奋早,Thymeleaf 是現(xiàn)代 HTML5 JVM Web 開發(fā)的理想選擇——盡管它還有更多功能盛霎。 ---官方介紹

二、SpringBoot 整合 Thymeleaf ??

主要針對(duì)我們?cè)陧?xiàng)目中最常見的幾種用法進(jìn)行講解耽装。同時(shí)我們也是在項(xiàng)目中直接講 Thymeleaf 的用法愤炸。

2.1、新建 SpringBoot 項(xiàng)目

這個(gè)就不用說了哈掉奄,我想大家都是會(huì)這個(gè)的吧规个。

2.2、導(dǎo)入依賴

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.2</version>
    <relativePath/>
</parent>   
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-thymeleaf</artifactId> 
    </dependency>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
</dependencies>

2.3姓建、SpringBoot 靜態(tài)資源存放路徑

首先我們將模板下載下來:

image-20211019081512286
image-20211019081735052

我們點(diǎn)進(jìn) doc 诞仓,將需要的頁面文件復(fù)制到 resources/templates包下,將css速兔、images墅拭、js復(fù)制到 resources/static包下。

image-20211019081820677

2.4涣狗、書寫配置文件

thymeleaf 可以配置的一些屬性谍婉,這只是常見的哈。

spring:
  thymeleaf:
    enabled: true  #開啟thymeleaf視圖解析
    encoding: utf-8  #編碼
    prefix: classpath:/templates/  #前綴 當(dāng)然默認(rèn)也是這個(gè)镀钓,可以不配置
    cache: false  #是否使用緩存
    mode: HTML  #嚴(yán)格的HTML語法模式
    suffix: .html  #后綴名

2.5穗熬、編寫Controller

我們以 登錄頁面 為例,寫個(gè)Controller 跳轉(zhuǎn)到 login.html丁溅。

@Controller
@RequestMapping
public class LoginController {

    /** * 跳轉(zhuǎn)到登錄頁面*/
    @GetMapping("/login")
    public String login(){
        return "login";
    }

    /** * 模擬登錄請(qǐng)求  */
    @PostMapping("/doLogin")
    public String doLogin(String username,String password){
        if(username!=null&&password!=null){
            System.out.println(username+password);
            //重定向到 /indedx 請(qǐng)求  也可以重定向頁面
            return "redirect:/index";
        }
        return "login";
    }

    /**  * 跳轉(zhuǎn)到index 頁面*/
    @GetMapping("/index")
    public String index(){
        return "index";
    }

}

2.6唤蔗、啟動(dòng)項(xiàng)目&問題處理

啟動(dòng)類沒啥要改的,直接跑。

啟動(dòng)項(xiàng)目后妓柜,訪問 localhost:8080/login 箱季,可能會(huì)出現(xiàn)一個(gè) 缺少css、js的頁面领虹。而不是下面這個(gè)成功的頁面。

image-20211019083757427

原因是在我們使用 Thyemleaf后求豫,在頁面中就不應(yīng)該再使用相對(duì)路徑,如這種: <link rel="stylesheet" type="text/css" th:href="/css/main.css">塌衰。

而是應(yīng)該修改為:<link rel="stylesheet" type="text/css" th:href="@{/css/main.css}">

修改完之后蝠嘉,還應(yīng)在 html 頁面的頭部做一下修改:

image-20211019084131276
<html lang="en" xmlns:th="http://www.thymeleaf.org">

2.7最疆、Thyemleaf 常用

Thymeleaf 官網(wǎng)快速入門介紹

Thymeleaf 官方文檔

2.7.1、th:href | 鏈接 (URL) 表達(dá)式

其實(shí)我們剛剛已經(jīng)說了這點(diǎn):

//以前的
<link rel="stylesheet" type="text/css" href="/css/main.css">
//修改后的:
<link rel="stylesheet" type="text/css" th:href="@{/css/main.css}">

至于這么做的原因是由于Thymeleaf 的語法規(guī)則規(guī)定蚤告。

錯(cuò)誤示例:

<link rel="stylesheet" type="text/css" th:href="@{/static/css/main.css}">

引入的資源路徑千萬不要靜態(tài)資源路徑的集合中路徑的前綴努酸。否則會(huì)導(dǎo)致請(qǐng)求不到資源。

我們?cè)谑褂?Thymeleaf 的 @{} 修飾后杜恰,它會(huì)自己去 static 包下尋找获诈。

注意:在springboot2.0版本以前攔截器會(huì)默認(rèn)對(duì)靜態(tài)資源不攔截,但是springboot 2.0 以后攔截器會(huì)攔截所有心褐,所以需要重寫addInterceptors方法舔涎,不管是自己的靜態(tài)資源還是webjars中的資源,都要放行

當(dāng)然我只是在這提上一嘴逗爹,本文沒寫攔截器相關(guān)知識(shí)亡嫌。

2.7.2、th:text

我們都會(huì)有一個(gè)需要提示信息的時(shí)候掘而,就是簡單展示一段文本挟冠,如:

<p th:text="#{home.welcome}">Welcome to our grocery store!</p>

我們修改一下之前的Controller:

/*** 跳轉(zhuǎn)到登錄頁面  */
@GetMapping("/login")
public String login(Model model){
    model.addAttribute("systemName","學(xué)生管理系統(tǒng)");
    return "login";
}

另外修改一下登錄頁面:

<div class="logo">
    <h1 th:text="${systemName}"></h1>
</div>
image-20211019090641923

2.7.3、th:action

表單提交我想是最常見的啦吧袍睡。

<form class="login-form" method="post" th:action="@{/doLogin}">
</form>

在這里提交的路徑知染,也是需要用 @{} 包裹起來。

后端還是照寫斑胜,沒有變化持舆。

2.7.4、th:each & th:if

循環(huán)伪窖、判斷應(yīng)該是沒有哪里用不到的啦吧逸寓。

寫個(gè)Student 類,稍后會(huì)用到

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student {
    private Long id;
    private String name;
    private Integer age;
    /**
     * true 為男
     * false 為女
     */
    private Boolean gender;
}

寫個(gè)controller

/**
     * 添加多個(gè)學(xué)生
     */
@GetMapping("/doEach")
public String doEach(Model model){
    List<Student> students = new ArrayList<>();
    Student student1 = new Student(1L,"1號(hào)學(xué)生",20,true);
    students.add(student1);
    Student student2 = new Student(2L,"2號(hào)學(xué)生",21,true);
    students.add(student2);
    Student student3 = new Student(3L,"3號(hào)學(xué)生",22,false);
    students.add(student3);
    Student student4 = new Student(4L,"4號(hào)學(xué)生",23,true);
    students.add(student4);
    model.addAttribute("students",students);
    return "each";
}

再寫個(gè) each.html 頁面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>for循環(huán)</title>
</head>
<body>

<table border="1">
    <tr>
        <th>id</th>
        <th>姓名</th>
        <th>年齡</th>
        <th>性別</th>
    </tr>
    <tr  th:each="student : ${students}" >
        <td th:text="${student.id}"></td>
        <td th:text="${student.name}"></td>
        <td th:text="${student.age}"></td>
<!--      三元表達(dá)式  -->
        <td th:text="${student.gender}?男:女"></td>
        <td th:if="${student.gender}">利用if判斷性別 男</td>
        <td th:if="${not student.gender}">利用if判斷性別 女</td>
    </tr>
</table>
</body>
</html>

成果:

image-20211019092923128

2.8覆山、小結(jié)

我只是簡單的說了一下 Thymeleaf竹伸,它支持的東西還是有不少的,在這沒有一一說明,有需求時(shí)勋篓,可直接查詢 Thymeleaf文檔即可吧享。

三、免費(fèi)后臺(tái)模板 ??

1譬嚣、免費(fèi)的后臺(tái)模板:Vail Admin

2钢颂、聚集多個(gè)免費(fèi)的后臺(tái)模板:免費(fèi)模板

點(diǎn)進(jìn)去直接下載就可以啦。在SpringBoot 項(xiàng)目中直接引用就可以啦拜银。

image-20211018214021827

四殊鞭、自言自語 ??

你好,我是博主寧在春

希望本篇文章能讓你感到有所收獲D嵬啊2俨印!

我們:待別日相見時(shí)泵督,都已有所成趾盐。

歡迎大家一起討論問題??,躺了??

image-20211014091239193

簡書 | 寧在春

CSDN | 寧在春

掘金 | 寧在春

知乎 | 寧在春

博客園 | 寧在春

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末小腊,一起剝皮案震驚了整個(gè)濱河市救鲤,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌秩冈,老刑警劉巖蜒简,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異漩仙,居然都是意外死亡搓茬,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門队他,熙熙樓的掌柜王于貴愁眉苦臉地迎上來卷仑,“玉大人,你說我怎么就攤上這事麸折∥” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵垢啼,是天一觀的道長窜锯。 經(jīng)常有香客問我,道長芭析,這世上最難降的妖魔是什么锚扎? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮馁启,結(jié)果婚禮上驾孔,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好翠勉,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布妖啥。 她就那樣靜靜地躺著,像睡著了一般对碌。 火紅的嫁衣襯著肌膚如雪荆虱。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天朽们,我揣著相機(jī)與錄音怀读,去河邊找鬼。 笑死华坦,一個(gè)胖子當(dāng)著我的面吹牛愿吹,可吹牛的內(nèi)容都是我干的不从。 我是一名探鬼主播惜姐,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼椿息!你這毒婦竟也來了歹袁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤寝优,失蹤者是張志新(化名)和其女友劉穎条舔,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乏矾,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡孟抗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了钻心。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凄硼。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖捷沸,靈堂內(nèi)的尸體忽然破棺而出摊沉,到底是詐尸還是另有隱情,我是刑警寧澤痒给,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布说墨,位于F島的核電站,受9級(jí)特大地震影響苍柏,放射性物質(zhì)發(fā)生泄漏尼斧。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一试吁、第九天 我趴在偏房一處隱蔽的房頂上張望突颊。 院中可真熱鬧,春花似錦、人聲如沸律秃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽棒动。三九已至糙申,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間船惨,已是汗流浹背柜裸。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留粱锐,地道東北人疙挺。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像怜浅,于是被迫代替她去往敵國和親铐然。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容