SpringBoot最佳化之——1.Thymeleaf 配置等注意事項

冷山集發表於2020-11-04

Thymeleaf

Thymeleaf簡介

Thymeleaf是一個流行的模板引擎,該模板引擎採用Java語言開發,模板引擎是一個技術名詞,是跨領域跨平臺的概念,在Java語言體系下有模板引擎,在C#、PHP語言體系下也有模板引擎。除了thymeleaf之外還有Velocity、FreeMarker等模板引擎,功能類似。
Thymeleaf的主要目標在於提供一種可被瀏覽器正確顯示的、格式良好的模板建立方式,因此也可以用作靜態建模。你可以使用它建立經過驗證的XML與HTML模板。使用thymeleaf建立的html模板可以在瀏覽器裡面直接開啟(展示靜態資料),這有利於前後端分離。需要注意的是thymeleaf不是spring旗下的。這裡我們使用thymeleaf 3版本。

第一個thymeleaf程式


新增thymeleaf依賴
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>


修改spring boot配置檔案

在開發階段,建議關閉thymeleaf的快取(在application.properties檔案中設定)

spring.thymeleaf.cache=false


thymeleaf會對html中的標籤進行嚴格校驗,如果html標籤缺少結束標籤的話,thymeleaf會報錯,我們可以透過下面方式去除thymeleaf的校驗,新增依賴:

 <dependency>
      <groupId>net.sourceforge.nekohtml</groupId>
      <artifactId>nekohtml</artifactId>
      <version>1.9.22</version>
  </dependency> 


在spring boot配置檔案中新增下面內容:

spring.thymeleaf.mode=LEGANCYHTML5


建立controller準備資料

package com.chen.pj.health.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller //bean物件
public class TemplateController { //在spring mvc中這個物件稱之為handler(處理器)
 //訪問:  http://localhost/doTemplateUI
 @RequestMapping("doTemplateUI")
    public String doTemplateUI(){ //@RequestMapping用於定義url請求的對映
 return "default";  //view name(檢視名)
 //1 這名字返回給誰了?方法的呼叫者(呼叫者是---DispatcherServlet)
 //2 DispatcherServlet拿到viewname 以後做什麼(交給師徒直譯器進行解析-->字首,字尾,資料)
 //3 將拿到的view解析結果響應到客戶端(/templates/default.html)
 }
}

**建立html頁面

在resources/templates裡面建立一個index.html,填寫下面內容**

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<h1>The Default Template page!!!!
已更改/再次更改</h1>
</body>
</html>

Springboot使用thymeleaf作為檢視展示的時候,我們將模板檔案放置在resource/templates目錄下,靜態資源放置在resource/static目錄下



表示式

標準變數表示式

建立用來準備資料的Controller

package com.chen.pj.module.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class ModelViewController {
    @RequestMapping("/doModelAndView")
    public String doModelAndView(Model model){
        // 引數model由spring web模組建立,可以儲存一些資料
 model.addAttribute("username","chenhao");
        model.addAttribute("state","perfect");
        return "view"; //viewname
 // 這裡的響應結果,會在spring mvc中會幫我們封裝為ModelAndview物件
 }
    @RequestMapping("/doModelAndView02")
    public ModelAndView doModelAndView(){
        ModelAndView mv = new ModelAndView();
        mv.addObject("username","chenhao02");
        mv.addObject("state","ok02");
        mv.setViewName("view");
        return mv;
    }
}


選擇變數表示式
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>
        The view page
    </h1>
    <div>
        <ul>
            <li>
                username:[[${username}]]
            </li>
            <li>
                state:[[${state}]]
            </li>
        </ul>
    </div>
</body>
</html>

執行程式,登入網頁後顯示如圖:
image.png

相關文章