欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

SpringBoot整合Thymeleaf與FreeMarker視圖層技術

 更新時間:2022年08月13日 11:28:27   作者:一只小熊貓呀  
在目前的企業(yè)級應用開發(fā)中,前后端分離是趨勢,但是視圖層技術還占有一席之地。Spring Boot 對視圖層技術提供了很好的支持,福安防推薦使用的模板引擎是Thymeleaf,不過想FreeMarker也支持,JSP技術在這里并不推薦使用

整合Thymeleaf

Thymeleaf是新一代Java模板引擎,類似于Velocity、FreeMarker等傳統(tǒng)Java模板引擎。與傳統(tǒng)Java模板引擎不同的是,Thymeleaf支持HTML原型,既可以讓前端工程師在瀏覽器中直接打開查看樣式,也可以讓后端工程師結合真實數據查看顯示效果。同事,Spring Boot提供了Thymeleaf自動化配置解決方案,因此在Spring Boot中使用Thymeleaf 非常方便。Spring Boot整合Thymeleaf 主要可通過如下步驟

1. 創(chuàng)建工程添加依賴

新建一個Spring Boot工程,然后添加spring-boot-starter-web 和spring-boot-starter-thymeleaf 依賴

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--    整合Thymeleaf    -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>

2. 配置Thymeleaf

Spring Boot為Thymeleaf提供了自動化配置類ThymeleafAutoConfiguration,相關的配置屬性在ThymeleafProperties 類中,ThymeleafProperties類部分源碼如下:

@ConfigurationProperties(prefix = "spring.thymeleaf")
public class ThymeleafProperties {
	private static final Charset DEFAULT_ENCODING = StandardCharsets.UTF_8;
	public static final String DEFAULT_PREFIX = "classpath:/templates/";
	public static final String DEFAULT_SUFFIX = ".html";
}

由此配置可以看到,默認的模板位置在classpath:/templates/,默認的模板后綴名為.html。如果使用IDEA創(chuàng)建Spring Boot 項目,templates文件夾默認會創(chuàng)建。如需對默認的Thymeleaf 配置參數進行自定義配置,可以在application.properties 中進行配置,部分常見配置如下:

#是否開啟緩存,開發(fā)時可設置為false,默認為true
spring.thymeleaf.cache=false
#檢查模版是否存在,默認為true
spring.thymeleaf.check-template=true
#檢查模版位置是否存在,默認為true
spring.thymeleaf.check-template-location=true
#模版文件編碼
spring.thymeleaf.encoding=UTF-8
#模版文件位置
spring.thymeleaf.prefix=classpath:/templates/
#Content-Type配置
spring.thymeleaf.servlet.content-type=text/html
#模版文件后綴
spring.thymeleaf.suffix=.html

3. 配置控制器

創(chuàng)建Book實體類,然后在Controller中返回ModelAndView,如下:

public class Book {
    private int id;
    private String name;
    private String author;
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAuthor() {
        return author;
    }
    public void setAuthor(String author) {
        this.author = author;
    }
}
@RestController
public class BookController {
    @GetMapping(value = "/books")
    public ModelAndView books(){
        List<Book> books = new ArrayList<>();
        Book b1 = new Book();
        b1.setId(1);
        b1.setAuthor("唐家三少");
        b1.setName("斗羅大陸Ⅰ");
        Book b2 = new Book();
        b2.setId(2);
        b2.setAuthor("唐家三少");
        b2.setName("斗羅大陸Ⅱ");
        books.add(b1);
        books.add(b2);
        ModelAndView modelAndView = new ModelAndView();
        modelAndView.addObject("books",books);
        modelAndView.setViewName("books");
        return modelAndView;
    }
}

4. 創(chuàng)建視圖

在resources目錄下的templates目錄中創(chuàng)建books.html,如下:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>圖書列表</title>
</head>
<body>
<table border="1">
    <tr>
        <td>圖書編號</td>
        <td>圖書名稱</td>
        <td>圖書作者</td>
    </tr>
    <tr th:each="book:${books}">
        <td th:text="${book.id}"></td>
        <td th:text="${book.name}"></td>
        <td th:text="${book.author}"></td>
    </tr>
</table>
</body>
</html>

代碼解釋:

  • 首先在第二行導入Thymeleaf 的名稱空間
  • 通過遍歷將books中的數據展示出來,Thymeleaf中通過th:each進行集合遍歷,通過th:text展示數據

5. 運行

瀏覽器輸入"http://localhost:8081/books",查看運行結果,如圖:

整合FreeMarker

FreeMarker 是一個非常古老的模板引擎,可以用在Web環(huán)境或者非Web環(huán)境中。FreeMarker 需要經過解析才能在瀏覽器中展示出來。FreeMarker 不僅可以用來配置HTML頁面模板,也可以作為電子郵件模板、配置文件模板以及源碼模板。整合步驟如下:

1. 創(chuàng)建項目添加依賴

創(chuàng)建Spring Boot項目,然后添加spring-boot-starter-web和spring-boot-starter-freemarker依賴,如下:

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--    整合FreeMarker    -->
<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-freemarker</artifactId>
</dependency>

2. 配置FreeMarker

Spring Boot對FreeMarker 也提供了自動化配置類FreeMarkerAutoConfiguration,相關的配置屬性在FreeMarkerProperties中,F(xiàn)reeMarkerProperties的部分源碼如下:

@ConfigurationProperties(prefix = "spring.freemarker")
public class FreeMarkerProperties extends AbstractTemplateViewResolverProperties {
	public static final String DEFAULT_TEMPLATE_LOADER_PATH = "classpath:/templates/";
	public static final String DEFAULT_PREFIX = "";
	public static final String DEFAULT_SUFFIX = ".ftl";
    ...
}

FreeMarker 默認模板位置和Thymeleaf 一樣,都在classpath:/templates/中,默認文件后綴是.ftl,開發(fā)者可以在application.properties 中對這些默認配置進行修改,如下:

3. 控制器

控制器和Thymeleaf 中的控制器一樣,這里不再重復

4. 創(chuàng)建視圖

在resources目錄下的templates目錄中創(chuàng)建books.ftl 文件,如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>圖書列表FreeMarker</title>
</head>
<body>
<table border="1">
    <tr>
        <td>圖書編號</td>
        <td>圖書名稱</td>
        <td>圖書作者</td>
    </tr>
    <#if books ?? && (books?size>0)>
    <#list books as book>
        <tr>
            <td>${book.id}</td>
            <td>${book.name}</td>
            <td>${book.author}</td>
        </tr>
    </#list>
    </#if>
</table>
</body>
</html>

代碼解釋:

先判斷model中的books部位可控并且books中有數據,然后再進行遍歷

5. 運行

瀏覽器輸入"http://localhost:8081/books",查看運行結果,如圖:

到此這篇關于SpringBoot整合Thymeleaf與FreeMarker視圖層技術的文章就介紹到這了,更多相關SpringBoot整合視圖層內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java線程池運行狀態(tài)監(jiān)控實現(xiàn)解析

    Java線程池運行狀態(tài)監(jiān)控實現(xiàn)解析

    這篇文章主要介紹了Java線程池運行狀態(tài)監(jiān)控實現(xiàn)解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-10-10
  • springboot整合Quartz實現(xiàn)動態(tài)配置定時任務的方法

    springboot整合Quartz實現(xiàn)動態(tài)配置定時任務的方法

    本篇文章主要介紹了springboot整合Quartz實現(xiàn)動態(tài)配置定時任務的方法,非常具有實用價值,需要的朋友可以參考下
    2017-10-10
  • 關于Java垃圾回收開銷降低的幾條建議

    關于Java垃圾回收開銷降低的幾條建議

    垃圾回收(Garbage Collection)是Java虛擬機(JVM)垃圾回收器提供的一種用于在空閑時間不定時回收無任何對象引用的對象占據的內存空間的一種機制,下面這篇文章主要介紹了關于Java垃圾回收開銷降低的幾條建議,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • Java貪心算法超詳細講解

    Java貪心算法超詳細講解

    人之初性本善,但是隨著自身的經歷、生活環(huán)境等因素的影響,人逐漸會生出貪嗔癡。實際上不光人有貪念,我們的算法也會有貪念,今天就和大家介紹下一個有貪念的算法模型---貪心算法,看看一個算法是怎么產生貪念的
    2022-05-05
  • 基于Spring整合mybatis的mapper生成過程

    基于Spring整合mybatis的mapper生成過程

    這篇文章主要介紹了Spring整合mybatis的mapper生成過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • mybatis中的延遲加載類型及設定詳解

    mybatis中的延遲加載類型及設定詳解

    這篇文章主要介紹了mybatis中的延遲加載類型及設定詳解,MyBatis中的延遲加載,也稱為懶加載,是指在進行關聯(lián)查詢時,按照設置延遲規(guī)則推遲對關聯(lián)對象的select查詢,延遲加載可以有效的減少數據庫壓力,需要的朋友可以參考下
    2023-10-10
  • MyBatis一對一映射初識教程

    MyBatis一對一映射初識教程

    MyBatis是一個支持普通SQL查詢,存儲過程和高級映射的優(yōu)秀持久層框架。在我們生活中一對一的例子很多見,下面通過本文給大家?guī)砹薽ybatis一對一映射初識教程,感興趣的朋友一起看下吧
    2016-08-08
  • Java線程基本使用之如何實現(xiàn)Runnable接口

    Java線程基本使用之如何實現(xiàn)Runnable接口

    這篇文章主要介紹了Java線程基本使用之如何實現(xiàn)Runnable接口問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • java實現(xiàn)猜數字小游戲(Swing版)

    java實現(xiàn)猜數字小游戲(Swing版)

    這篇文章主要介紹了java實現(xiàn)猜數字小游戲,Swing編程版的猜數字游戲,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • springmvc直接不經過controller訪問WEB-INF中的頁面問題

    springmvc直接不經過controller訪問WEB-INF中的頁面問題

    這篇文章主要介紹了springmvc直接不經過controller訪問WEB-INF中的頁面問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02

最新評論