Spring boot 整合Thymeleaf
阿新 • • 發佈:2018-11-10
前言
上一篇介紹了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,但是會存在些問題
- 快取開啟還是關閉:快取的意思是載入一次模板之後便不會在載入了,對於生產環境應該加上快取,但是在開發過程中如果開啟快取
- 是否需要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