1. 程式人生 > >Spring boot 瞭解(三)(整合thymeleaf和thymeleaf顯示)

Spring boot 瞭解(三)(整合thymeleaf和thymeleaf顯示)

學習到整合thymeleaf及其顯示資料的部分,記錄如下:

(學習網址:https://www.majiaxueyuan.com/front/couinfo/36

SpringBoot 不推薦使用jsp
因為jsp會編譯成Servlet 屬於重量級
Springboot中推薦使用
Thymeleaf
Freemaker  Groovy

Thymeleaf瞭解目錄

整合Thymeleaf

使用Thymeleaf顯示資料


 

整合Thymeleaf

1.新增依賴
org.springframework.boot
spring-boot-starter-thymeleaf

完整如下:

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

2.在application.properties新增

spring.thymeleaf.prefix=classpath:/templates/ #字首
spring.thymeleaf.suffix=.html  #字尾 一定要把" . "加上 否則識別不了 這個巨坑
spring.thymeleaf.mode=HTML5  #模式為HTML5
spring.thymeleaf.encoding=UTF-8  #編碼為UTF-8
spring.thymeleaf.content.type=text/html  #型別設定為text/html

(在這有個坑 最開始新增以上我建立html檔案不能識別,會報錯:template might not exist or might not be accessible by any of the configured Template Resolvers] with root cause,如果不加以上就可以使用,原因是字尾沒有加上 " . "  所以SpiringBoot掃描不到以html結尾的 。。所以.html結尾的 )

3.在templates中編寫一個html檔案

編輯一下html中的內容


4.在Controller類中去返回這個頁面

比如我在PageController中去返回

裡面的方法如下:

@Controller
public class PageController {

 ................

    @RequestMapping("/hel")    //瀏覽器上訪問hel
    public String helloHtml(){ //呼叫這個方法hellohtml
        return "hello";        //返回一個頁面以hello命名的html檔案(hello.html 路徑在templs下)
    }

}

5.啟動程式

訪問localhost:8080/hel

可以看到返回的hello頁面

 

使用Thymeleaf顯示資料

可以在Controller中返回一些資料到前臺頁面上

我在視訊中看到了使用了一個叫model的物件,裡面可以存放很多東西。

然後使用addAttribute 方法到前臺呼叫

舉個栗子:我在當前hello頁面新增一些資料顯示輸出

我在Controoller的方法中添加了一些東西:

字串型別的名字、數值型別的年齡、list型別的外號,然後將其刷到前臺去

如下:

@RequestMapping("/hel")
    public String helloHtml(Model model) {

        String sname = "二狗子";
        model.addAttribute("sname", sname);

        Integer gender = 23;
        model.addAttribute("age", gender);

        List<String> lists = new ArrayList<String>();

        lists.add("帥比");
        lists.add("大帥比");
        lists.add("炒雞大帥比");
        lists.add("炒雞宇宙大帥比");


        model.addAttribute("lists", lists);


        return "hello";
    }

model.addAttribute()方法是有點像key-value的樣子刷入。

是一個介面,原始碼如下:

public interface Model {
    Model addAttribute(String var1, @Nullable Object var2);

    Model addAttribute(Object var1);

    Model addAllAttributes(Collection<?> var1);

    Model addAllAttributes(Map<String, ?> var1);

    Model mergeAttributes(Map<String, ?> var1);

    boolean containsAttribute(String var1);

    Map<String, Object> asMap();
}

我們把 sname,age,list通過方法刷到前臺後,需要在頁面端去讀取。

html頁面我也改了下:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title> 哈嘍 二狗!</title>
</head>
<a>
<h1 style="color: blueviolet"> 哈嘍 二狗!!!</h1>


<h1 style="color: black" th:text="${sname}"/>

<h1 th:text="${age}"/>

<table>
    <tr>外號</tr>
    <tr th:each="list:${lists}">
        <td th:text="${list}">
    </tr>

</table>

<img th:src="@{/img/dog.jpg}"/>
<input th:value="此時一個濃眉大眼的網友路過"/>

<img th:src="@{/img/cat.jpg}">


</body>
</html>

注意:

<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">

這個是設定 標頭檔案,不進行設定是不認識 th標籤的

(可以看看這個大佬寫的:https://www.cnblogs.com/vinphy/p/4674247.html

然後啟動就可以看到效果了

以上。