從springMvc過渡到springboot Web開發
要解決的問題:
導入靜態資源,…
首頁
jsp,模板引擎Thymeleaf
裝配擴展SpringMVC
增刪改查
攔截器
國際化(實現中英文切換的問題)
接上一篇博客,來講一講jsp,模板引擎了.
在我們新建項目的設置中,就有添加模板引擎的實現.
引用狂神的博客原話:
我們再來說下,爲什麼要添加模板引擎.
前端交給我們的頁面,是html頁面。如果是我們以前開發,我們需要把他們轉成jsp頁面,jsp好處就是當我們查出一些數據轉發到JSP頁面以後,我們可以用jsp輕鬆實現數據的顯示,及交互等。
jsp支持非常強大的功能,包括能寫Java代碼,但是呢,我們現在的這種情況,SpringBoot這個項目首先是以jar的方式,不是war,像第二,我們用的還是嵌入式的Tomcat,所以呢,他現在默認是不支持jsp的。
那不支持jsp,如果我們直接用純靜態頁面的方式,那給我們開發會帶來非常大的麻煩,那怎麼辦呢?
SpringBoot推薦你可以來使用模板引擎:
模板引擎,我們其實大家聽到很多,其實jsp就是一個模板引擎,還有用的比較多的freemarker,包括SpringBoot給我們推薦的Thymeleaf,模板引擎有非常多,但再多的模板引擎,他們的思想都是一樣的,什麼樣一個思想呢我們來看一下這張圖:
模板引擎的作用就是我們來寫一個頁面模板,比如有些值呢,是動態的,我們寫一些表達式。而這些值,從哪來呢,就是我們在後臺封裝一些數據。然後把這個模板和這個數據交給我們模板引擎,模板引擎按照我們這個數據幫你把這表達式解析、填充到我們指定的位置,然後把這個數據最終生成一個我們想要的內容給我們寫出去,這就是我們這個模板引擎,不管是jsp還是其他模板引擎,都是這個思想。只不過呢,就是說不同模板引擎之間,他們可能這個語法有點不一樣。其他的我就不介紹了,我主要來介紹一下SpringBoot給我們推薦的Thymeleaf模板引擎,這模板引擎呢,是一個高級語言的模板引擎,他的這個語法更簡單。而且呢,功能更強大。
下面我們來說一說具體用法吧:
如果我們沒有在idea中勾選thymeleaf這個時候想要使用到它,則需要進入官網去下找到關於thymeleaf的啓動器,關於啓動器的地址如下:
https://github.com/spring-projects/spring-boot/blob/v2.2.7.RELEASE/spring-boot-project/spring-boot-starters/spring-boot-starter-thymeleaf/pom.xml
我們複製其中的部分依賴到項目的pom.xml即可.
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring5</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf.extras</groupId>
<artifactId>thymeleaf-extras-java8time</artifactId>
</dependency>
注意:一般我們使用thymeleaf的版本是3.x如果版本低了,會導致運行出錯
我們來看看Thymeleaf的源碼,同樣找到ThymeleafProperties類
所有說頁面存放templates中.
結論:只要需要使用thymeleaf,只需要導入對應的依賴就可以了.我們將html頁面放在我們的templates目錄下.
代碼展示:
<!DOCTYPE html>
<html lang="en"
xmlns:th="http://www.thymeleaf.org">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!--所有的html元素都能被Thymeleaf替換接管:th:元素名-->
<div th:text="${msg}"></div>
<div th:utext="${msg}"></div>
兩種寫法
<h3 th:each="user:${users}">[[ ${user} ]]</h3>
<h3 th:each="user:${users}" th:text="${user}"></h3>
</body>
</html>
java代碼:
package com.qiu.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.Arrays;
//在Templates目錄下的所有頁面,只能通過controller來跳轉!
@Controller
public class IndexController {
@RequestMapping("/test")
public String test(Model model){
model.addAttribute("msg","這是我的第一個程序");
model.addAttribute("users", Arrays.asList("qiuzhikang","yuxinyi"));
return "test";
}
}