最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Spring?Boot?整合?Thymeleaf?實例分享

 更新時間:2022年05月23日 16:42:42   作者:村雨遙  
這篇文章主要分享了Spring?Boot整合Thymeleaf,Thymeleaf是新一代的Java模板引擎,類似于Velocity、FreeMarker等傳統(tǒng)引擎,關(guān)于其更多相關(guān)內(nèi)容,需要的小伙伴可以參考一下

一、什么是 Thymeleaf

Thymeleaf 是新一代的 Java 模板引擎,類似于 Velocity、FreeMarker 等傳統(tǒng)引擎,其語言和 HTML 很接近,而且擴(kuò)展性更高;

Thymeleaf 的主要目的是將優(yōu)雅的模板引入開發(fā)工作流程中,并將 HTML 在瀏覽器中正確顯示。同時能夠作為靜態(tài)引擎,讓開發(fā)成員之間更方便協(xié)作開發(fā);

Spring Boot 官方推薦使用模板,而且 Spring Boot 也為 Thymeleaf 提供了完整的自動化 配置解決方案;

Thymeleaf 使用教程請戳 Tutorial: Using Thymeleaf,配合 Spring 使用的教程請戳 Tutorial: Thymeleaf + Spring。

二、整合過程

準(zhǔn)備過程

正式開始整合過程之前,這里先給出本文的搭建環(huán)境,方便大家進(jìn)行后續(xù)內(nèi)容的學(xué)習(xí)。

  • JDK 11(理論上其他版本的 JDK 也是可以的,但是更為推薦 JDK 1.8 及以后的版本)
  • IDEA(這里沒有啥要求,但我個人的話是出新的版本我就會更新,雖然臃腫,但是更新了確實好用 ??)
  • SpringBoot 2.x(現(xiàn)在主流應(yīng)該都是 2.x 版本,1.x 的都是老一點(diǎn)的版本了)

添加 Thymeleaf 依賴

添加 Thymeleaf 依賴有兩種方式:

  • 第一種

在新建項目時添加,在 Templeate Engines 中勾選 Thymeleaf;

  • 第二種

對于忘記在新建項目時未添加 Thymeleaf 依賴的項目,可以直接在項目的 pom.xml 中手動添加依賴即可;

<dependency>
? ? <groupId>org.springframework.boot</groupId>
? ? <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

編寫實體類和 Controller

  • 新建實體類 User

這里因為使用 Lombok,所以省去了各種 setter、getter,同時還省去了各種構(gòu)造方法和重寫 toString() 等方法,大大簡化了代碼。而我們所要做的,僅僅是在 pom.xml 中添加 Lombok 的依賴,然后在我們的實體類中加入對應(yīng)的注解即可。

以下是在 pom.xml 中插入 Lombok 依賴的對應(yīng)代碼。

<dependency>
? ? <groupId>org.projectlombok</groupId>
? ? <artifactId>lombok</artifactId>
? ? <optional>true</optional>
</dependency>

然后我們就可以編寫我們的實體類,這里主要用到了 @Data、@Component、@AllArgsConstructor 、NoArgsConstructor 四個注解,其中各個注解的含義如下:

  • @Component:把類實例化到 Spring 容器,相當(dāng)于在配置文件中配置;
  • @Data :給類的所有屬性提供 get 和 set 方法,此外還有 equals、canEqual、hashCode、toString 方法以及 默認(rèn)參數(shù)為空的構(gòu)造方法;
  • @AllArgsConstructor:為類提供一個 全參構(gòu)造方法,但此時不再提供默認(rèn)構(gòu)造方法;
  • @NoArgsConstructor:因為使用了 AllArgsConstructor 會導(dǎo)致類沒有默認(rèn)空參構(gòu)造方法,所以此時需要它為類提供一個 無參構(gòu)造方法;
package com.cunyu.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.stereotype.Component;

/**
?* @author : cunyu
?* @version : 1.0
?* @className : User
?* @description : User 實體類
?*/

@Component
@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
? ? private int age;
? ? private String name;
? ? private String email;
}
  • 編寫 Controller

此時主要需要注意的是 setViewName() 和 addObject(),前者表示方法對應(yīng)的前端頁面,也就是我們模板中對應(yīng)文件名的 .html 文件,而后者則主要給屬性注入值,然后將屬性傳遞到前端模板。

package com.cunyu.controller;

import com.cunyu.pojo.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

/**
?* @author : cunyu
?* @version : 1.0
?* @className : UserController
?* @date : 2020/7/29 16:22
?* @description : UserController
?*/

@Controller
public class UserController {

? ? // 訪問 ip:port/index
? ? @GetMapping("/index")
? ? public ModelAndView index() {
? ? ? ? ModelAndView modelAndView = new ModelAndView();
? ? ? ? // 設(shè)置跳轉(zhuǎn)的視圖,即位于 templates/index.html
? ? ? ? modelAndView.setViewName("index");
? ? ? ? modelAndView.addObject("title", "Thymeleaf 使用");
? ? ? ? modelAndView.addObject("desc", "Spring Boot 整合 Thymeleaf");
? ? ? ? User author = new User(25);
? ? ? ? modelAndView.addObject("author", author);
? ? ? ? return modelAndView;
? ? }
}

創(chuàng)建Thymeleaf 模板

第上面的代碼中,我們設(shè)置了跳轉(zhuǎn)的視圖為 index,所以我們需要在 src/main/resources/templates 中創(chuàng)建 index.html。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
? ? ? xmlns:th="http://www.thymeleaf.org">
<head>
? ? <meta charset="UTF-8">
? ? <!-- 即 Controller 中的 title 屬性 -->
? ? <title th:text="${title}"></title>

</head>
<body>
<!-- 即 Controller 中的 desc 屬性 -->
<h1 th:text="${desc}" th:align="center"></h1>

<!-- 即 Controller 中的 author 信息 -->
<h2 th:align="center">=====作者信息=====</h2>
<p th:text="${author?.name}"></p>
<p th:text="${author?.age}"></p>
<p th:text="${author?.email}"></p>
</body>
</html>

三、測試

啟動項目,然后在瀏覽器中訪問 http://localhost:8080/index,如果出現(xiàn)下圖中的信息,說明整合成功。

注意事項:

為了方便使用,我們在使用 Thymeleaf 模板時,可以添加一些自己的配置。而添加的位置則是項目的配置文件 application.yml,項目默認(rèn)配置文件應(yīng)該是 application.properties,但 SpringBoot 更加推薦使用 yml 來配置,所以我們這里需要手動將其改為 yml 的格式。

spring:
? thymeleaf:
? ? cache: false
? ? prefix: classpath:/templates/
? ? suffix: .html
? ? mode: HTML
? ? encoding: UTF-8
? ? servlet:
? ? ? content-type: text/html

總結(jié):

本文主要介紹了 Themeleaf 的相關(guān)簡介,然后對利用 SpringBoot 整合 Thymeleaf 的過程進(jìn)行了描述,最后則是使用 Thymeleaf 中常用的一些相關(guān)配置的注意事項。

到此這篇關(guān)于Spring Boot 整合 Thymeleaf 詳情的文章就介紹到這了,更多相關(guān)Spring Boot 整合 Thymeleaf 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于Jenkins搭建.NET Core持續(xù)集成環(huán)境過程圖解

    基于Jenkins搭建.NET Core持續(xù)集成環(huán)境過程圖解

    這篇文章主要介紹了基于Jenkins搭建.NET Core持續(xù)集成環(huán)境過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-08-08
  • java 線程公平鎖與非公平鎖詳解及實例代碼

    java 線程公平鎖與非公平鎖詳解及實例代碼

    這篇文章主要介紹了java 線程公平鎖與非公平鎖詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • 利用java、js或mysql計算高德地圖中兩坐標(biāo)之間的距離

    利用java、js或mysql計算高德地圖中兩坐標(biāo)之間的距離

    最近因為工作的需求,需要計算出高德地圖中兩個坐標(biāo)的距離,通過查找相關(guān)資料發(fā)現(xiàn)了多種實現(xiàn)的方法,下面這篇文章主要給大家介紹了關(guān)于利用java、js或mysql計算高德地圖中兩坐標(biāo)之間距離的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下。
    2017-10-10
  • Springmvc攔截器執(zhí)行順序及各方法作用詳解

    Springmvc攔截器執(zhí)行順序及各方法作用詳解

    這篇文章主要介紹了Springmvc的攔截器執(zhí)行順序及各方法作用,下面講實現(xiàn)其接口的寫法,先看一下這個接口的三個方法,需要的朋友可以參考下
    2018-07-07
  • JavaWeb 網(wǎng)上書店 注冊和登陸功能案例詳解

    JavaWeb 網(wǎng)上書店 注冊和登陸功能案例詳解

    這篇文章主要介紹了JavaWeb 網(wǎng)上書店 注冊和登陸功能,結(jié)合具體案例形式詳細(xì)分析了JavaWeb 網(wǎng)上書店 注冊和登陸功能具體實現(xiàn)步驟、操作技巧與注意事項,需要的朋友可以參考下
    2019-08-08
  • Java終止正在運(yùn)行的線程的三種方法

    Java終止正在運(yùn)行的線程的三種方法

    停止一個線程意味著在任務(wù)處理完任務(wù)之前停掉正在做的操作,也就是放棄當(dāng)前的操作,停止一個線程可以用Thread.stop()方法,但最好不要用它,本文給大家介紹了Java終止正在運(yùn)行的線程的三種方法,需要的朋友可以參考下
    2025-03-03
  • Maven build 命令介紹的使用詳解

    Maven build 命令介紹的使用詳解

    這篇文章主要介紹了Maven build 命令介紹的使用詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-06-06
  • java打包文件成zip、壓縮文件及file.mkdir和mkdirs的區(qū)別詳解

    java打包文件成zip、壓縮文件及file.mkdir和mkdirs的區(qū)別詳解

    這篇文章主要給大家介紹了關(guān)于java打包文件成zip、壓縮文件及file.mkdir和mkdirs區(qū)別詳解的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-12-12
  • 詳解Jmeter線程組的設(shè)置方法

    詳解Jmeter線程組的設(shè)置方法

    本文主要介紹了Jmeter線程組的設(shè)置方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Mybatis的TypeHandler實現(xiàn)數(shù)據(jù)加解密詳解

    Mybatis的TypeHandler實現(xiàn)數(shù)據(jù)加解密詳解

    這篇文章主要介紹了Mybatis基于TypeHandler實現(xiàn)敏感數(shù)據(jù)加密詳解,Typehandler是mybatis提供的一個接口,通過實現(xiàn)這個接口,可以實現(xiàn)jdbc類型數(shù)據(jù)和java類型數(shù)據(jù)的轉(zhuǎn)換,需要的朋友可以參考下
    2024-01-01

最新評論

年辖:市辖区| 诸暨市| 岫岩| 深泽县| 汾西县| 鹿泉市| 洛浦县| 前郭尔| 交城县| 古浪县| 长沙县| 庆云县| 安庆市| 吐鲁番市| 岢岚县| 松滋市| 虎林市| 汝城县| 兴隆县| 兴文县| 邮箱| 江城| 株洲县| 武邑县| 建宁县| 霍山县| 台东县| 通渭县| 方城县| 宾阳县| 宣汉县| 东城区| 宜君县| 日喀则市| 乌兰察布市| 吉水县| 东城区| 沂源县| 上虞市| 余庆县| 自贡市|