springBoot web開發(需要解決的問題 3/4)

  從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";
    }

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章