Spring?Boot?整合?FreeMarker?實例分享
一、前言
在之前的文章Spring Boot 整合 Thymeleaf 實例分享中,我們學(xué)習(xí)了如何將模板 Thymeleaf 整合到 Spring Boot 中,那今天我們就來看看,另一個老牌的開源免費(fèi)模板引擎 - FreeMarker!
二、FreeMarker 簡介
FreeMarker 是一款模板引擎:即一種基于模板和要改變的數(shù)據(jù),并用來生成輸出文本(HTML網(wǎng)頁,電子郵件,配置文件,源代碼等)的通用工具。 它不是面向最終用戶的,而是一個Java類庫,是一款程序員可以嵌入他們所開發(fā)產(chǎn)品的組件。
以上就是出自 FreeMarker 的官方定義,我們通過使用 FreeMarker,可以將我們所需的模板何數(shù)據(jù)渲染成 HTML,從而實現(xiàn)我們想要的效果。通過將模板與數(shù)據(jù)分開,讓分工更加明確,模板方面則專注于如何將數(shù)據(jù)進(jìn)行展現(xiàn),而在數(shù)據(jù)方面,我們就可以專注于展示何種數(shù)據(jù),下圖就是我們以上所描述的 FreeMarker 的功能。
那接下來,我們就來看看,如何將 FreeMarker 像 Thymeleaf 一樣整合到我們的 Spring Boot 中,讓我們的開發(fā)更加簡單。
三、準(zhǔn)備工作
環(huán)境準(zhǔn)備
正式開始之前,依然給出本文所基于的環(huán)境,避免環(huán)境問題可能給大家?guī)淼挠绊憽?/p>
- JDK 17(理論上推薦不低于 1.8 版本)
- IDEA
- SpringBoot 2.x
添加 FreeMarker 依賴
開始之前,我們需要添加 FreeMarker 的相關(guān)依賴,同樣這里我們可以選擇兩種方式。一種是在創(chuàng)建項目時就添加上,另一種則是創(chuàng)建項目后在項目 pom.xml
文件中手動添加,接下來我們分別來看看兩種不同的方式應(yīng)該如何添加。如果還不清楚如何創(chuàng)建 Spring Boot 項目,可以參照我之前的一篇文章:Spring Boot 教程之創(chuàng)建項目的三種方式
- 第一種
在使用 IDEA 創(chuàng)建 Spring Boot 新項目時,添加依賴時將模板引擎中的 Apache FreeMarker
勾選上。
2.第二種
如果在創(chuàng)建時未添加 FreeMarker 模板引擎依賴,或者在項目開始創(chuàng)建之初并未有此需求,但后續(xù)過程中又增加了該需求,則此時可以直接在項目 pom.xml
中手動添加 FreeMarker 依賴即可。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-freemarker</artifactId> </dependency>
添加 FreeMarker 相關(guān)配置
添加依賴后,我們需要在項目配置文件 application.yml
中添加 FreeMarker 的相關(guān)配置。
spring: freemarker: # 模板后綴名 suffix: .ftl # 文檔類型 content-type: text/html # 頁面編碼 charset: UTF-8 # 頁面緩存 cache: false # 模板路徑 template-loader-path: classpath:/templates/
四、編寫實體類和 Controller
編寫實體類
創(chuàng)建一個 User
類,并將其各種 setter
、getter
、構(gòu)造方法等完成,這里我依然使用了 Lombok 插件,以便簡化我們的代碼。關(guān)于該插件的更多用法,可以參照我之前的文章:Lombok 安裝和使用小技巧
package com.cunyu.springbootfreemarkerdemo.entity; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.springframework.stereotype.Component; @Component @Data @AllArgsConstructor @NoArgsConstructor public class User { private int age; private String name; private String email; }
編寫 Controller
這里我們創(chuàng)建一個 User
對象,然后設(shè)置其年齡、Email、姓名等相關(guān)信息,然后將其加到屬性中,方便傳輸?shù)角岸诉M(jìn)行展示。
package com.cunyu.springbootfreemarkerdemo.controller; import com.cunyu.springbootfreemarkerdemo.entity.User; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.GetMapping; @Controller public class UserController { @GetMapping("/index") public String index(Model model) { User user = new User(); user.setAge(26); user.setEmail("747731461@qq.com"); user.setName("村雨遙"); model.addAttribute("user", user); return "index"; } }
數(shù)據(jù)渲染
當(dāng)完成實體類和 Controller 編寫后,我們就可以利用模板來進(jìn)行展示了。我們在項目的 resources/templates
路進(jìn)行新建一個 index.ftl
文件,注意這里文件名要保持和 Controller 中 index
方法所返回的字符串一致。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>FreeMarker 實驗</title> </head> <body> <table> <tr> <td>姓名</td> <td>年齡</td> <td>Email</td> </tr> <tr> <td>${user.name}</td> <td>${user.age}</td> <td>${user.email}</td> </tr> </table> </body> </html>
五、總結(jié)
我們可以結(jié)合之前的文章:Spring Boot 整合 Thymeleaf 實例分享共同閱讀,對比 Thymeleaf 和 FreeMarker 在整合過程中的一些共同點和不同點,相信你會有更多的收獲。
到此這篇關(guān)于Spring Boot 整合 FreeMarker 實例分享的文章就介紹到這了,更多相關(guān)Spring Boot 整合 FreeMarker 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Nebula?Graph介紹和SpringBoot環(huán)境連接和查詢操作
Nebula?Graph?是一款開源的、分布式的、易擴(kuò)展的原生圖數(shù)據(jù)庫,能夠承載包含數(shù)千億個點和數(shù)萬億條邊的超大規(guī)模數(shù)據(jù)集,并且提供毫秒級查詢,這篇文章主要介紹了Nebula?Graph介紹和SpringBoot環(huán)境連接和查詢,需要的朋友可以參考下2022-10-10Java數(shù)據(jù)結(jié)構(gòu)二叉樹難點解析
樹是一種重要的非線性數(shù)據(jù)結(jié)構(gòu),直觀地看,它是數(shù)據(jù)元素(在樹中稱為結(jié)點)按分支關(guān)系組織起來的結(jié)構(gòu),很象自然界中的樹那樣。樹結(jié)構(gòu)在客觀世界中廣泛存在,如人類社會的族譜和各種社會組織機(jī)構(gòu)都可用樹形象表示2021-10-10可能是全網(wǎng)最詳細(xì)的springboot整合minio教程
MinIO是全球領(lǐng)先的對象存儲先鋒,在標(biāo)準(zhǔn)硬件上,讀/寫速度上高達(dá)183 GB/秒和171 GB/秒,下面這篇文章主要給大家介紹了關(guān)于springboot整合minio的相關(guān)資料,這個教程可能是全網(wǎng)最詳細(xì)的,需要的朋友可以參考下2022-06-06Spring Profile與PropertyPlaceholderConfigurer項目多環(huán)境配置切換
這篇文章主要介紹了Spring Profile與PropertyPlaceholderConfigurer項目多環(huán)境配置切換方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09基于FlashPaper實現(xiàn)JSP在線閱讀代碼示例
這篇文章主要介紹了基于FlashPaper實現(xiàn)JSP在線閱讀代碼示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10