1. 程式人生 > >Spring boot 整合Thymeleaf

Spring boot 整合Thymeleaf

前言

上一篇介紹了Spring Boot中整合Jsp,儘管Spring boot官方並不推薦使用Jsp~

這篇文章將介紹如何整合官方所推薦的Thymeleaf模板引擎

簡單瞭解

首先新建專案,選擇模板引擎時,會有四個可以選擇

至於JSP技術Spring Boot官方為什麼不推薦的,因為:

我們學習的是 Spring Boot ,如果老是問JSP的問題,其實並不是特別合適,假如出了問題,Spring Boot 團隊開發都搞不定,更何況我們作為框架的使用方~

當我們使用上述模板引擎中的任何一個,它們預設的模板配置路徑為:src/main/resources/templates。當然也可以修改這個路徑,具體如何修改,文章後面會提及

模板引擎依賴
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

專案結構


簡單來說

  • domain用於存放實體
  • app.rest用於存放控制器
  • server用於處理邏輯
  • repository用於操作資料庫

修改配置檔案

一般來說,只要匯入了依賴,不需要配置,就能使用thymeleaf,但是會存在些問題

  1. 快取開啟還是關閉:快取的意思是載入一次模板之後便不會在載入了,對於生產環境應該加上快取,但是在開發過程中如果開啟快取
  2. 是否需要HTML5強校驗:如果你使用別人的HTML模板,並且模板中很多語法都不嚴格,這個時候專案就會報錯,因此有時候需要關閉強校驗

匯入依賴

	<!--解析html,關閉強校驗-->
    <dependency>
        <groupId>net.sourceforge.nekohtml</groupId>
        <artifactId>nekohtml</artifactId>
        <version>1.9.22</version>
    </dependency>

application.yml

server:
  port: 8080

spring:
  thymeleaf:
    cache: false
    mode: LEGACYHTML5
    #在構建URL時新增到檢視名稱前的字首(預設值:classpath:/templates/)
    prefix: classpath:/templates/

編寫相關程式碼

1、編寫controller

import me.zhengjie.domain.User;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.ModelAndView;

import java.util.ArrayList;
import java.util.List;

@RestController
@RequestMapping("user")
public class UserController {

    @GetMapping
    public ModelAndView index(Model model){

        List<User> users = new ArrayList<>();

        users.add(new User("小王",12,"男"));
        users.add(new User("小李",13,"女"));
        users.add(new User("小張",14,"男"));

        model.addAttribute("users",users);

        return new ModelAndView("/index");
    }
}

2、編寫html

<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org">
<head>
    <title>使用者列表</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>

<div style="text-align: center;margin:0 auto;width: 1000px; ">
    <h1>使用者列表</h1>
    <table width="100%" border="1" cellspacing="1" cellpadding="0">
        <tr>
            <td>使用者名稱</td>
            <td>年齡</td>
            <td>性別</td>
        </tr>
        <tr th:each="user: ${users}">
            <td th:text="${user.username}">使用者名稱</td>
            <td th:text="${user.age}">年齡</td>
            <td th:text="${user.sex}">性別</td>
        </tr>
    </table>
</div>
</body>
</html>

**注:**通過xmlns:th=”http://www.thymeleaf.org“ 命令空間,將靜態頁面轉換為動態的檢視,需要進行動態處理的元素將使用“th:”字首。

啟動專案

Thymeleaf一些小知識

變量表達式
<span th:text="${user.username}">  
#遍歷
<li th:each="user : ${users}">  
URL表示式

URL表示式指的是把一個有用的上下文或回話資訊新增到URL,這個過程經常被叫做URL重寫。

@{/user/index}

URL還可以設定引數:

@{/user/delete(id=${id})}

相對路徑:

@{../user/index}

讓我們看這些表示式:

    <form th:action="@{/createOrder}">  
    <a href="main.html" th:href="@{/main}">
th如何遍歷下拉框
<select name="user">
<option value="0"></option>
<option th:each="u:${users}" th:value="${u.username}">[[${u.username}]]</option>
</select>

更多的Thymeleaf教程,可自行百度學習,下篇文章將講解如何使用Jpa對資料庫的增刪改查

專案原始碼

github:https://github.com/dqjdda/SpringBoot_All

碼雲:https://gitee.com/hgpt/SpringBoot_All

開源後臺管理系統:

歡迎體驗Aurora

github: https://github.com/dqjdda/Aurora

碼雲: https://gitee.com/hgpt/Aurora