FreeMarker模板引擎實現頁面靜態化

2021-10-25 21:42:51 字數 2630 閱讀 2470

一、使用情景

公司的cms產品,最近正在做功能遷移,而我正好負責將老後台的文章發布功能遷移到新後台。

文章發布使用到的核心技術是頁面靜態化。發布的時候,會生成對應的靜態頁面,並將靜態檔案儲存到指定路徑下;同時,重新整理cdn,實現修改同步。

二、頁面靜態化說明

技術原理靜態化一般使用在這種場景:將經常訪問但不常修改的頁面,轉換成靜態頁面。靜態頁面是網頁(html、htm)的**都在頁面中,不需要執行asp,php,jsp,.net等動態語言而生成客戶端網頁**的網頁,不經過資料庫查詢。常見的靜態頁面舉例:.html、.htm。

優點

① 互動性差,功能上有限制。

② 增加**的開發複雜度,不利於程式維護和管理。

③ 占用硬碟空間大。

④ 不靈活,靜態化操作需要開關的,需要我們專門的設計。

靜態化常用技術

freemarker

thymeleaf

velocity

jsp

freemarker有著良好的效能和擴充套件性等綜合優勢,且網上可供學習的資源豐富,是我本次文章發布的首選模板引擎,後文主要記錄使用freemarker實現頁面靜態化demo專案的過程。

三、freemarker實現頁面靜態化

freemarker官方手冊

freemarker官方手冊(中文版)

1、原理

模板+資料→靜態html

2、目標

通過freemarker模板引擎渲染,在指定目錄下,生成文章詳情頁的靜態html檔案;開啟檔案,模板和傳入的資料均正常顯示。

效果如下:紅框內為模板內容,藍框內為模板資料

3、步驟

說明:jdk8、不涉及資料庫(直接傳值)、springboot

實體類:article

public

class

article

3.1、引入模板引擎

org.springframework.boot<

/groupid>

spring-boot-starter-freemarker<

/artifactid>

<

/dependency>

3.2、建立模板
>

>

>

pagestatictitle

>

head

>

>

/>

/>

日期:$

/>

正文:$

/>

body

>

html

>

3.3、核心方法service

public

inte***ce

pageservice

serviceimpl

public

class

pageserviceimpl

implements

pageservice

"+ content)

;inputstream inputstream =

newbytearrayinputstream

(content.

getbytes

("utf-8"))

;// 輸出檔案(指定檔案輸出目錄)

fileoutputstream fileoutputstream =

newfileoutputstream

(new

file

("d:/huaqiyun/newpage.html"))

;ioutils

.copy

(inputstream, fileoutputstream)

;// 關閉流

inputstream.

close()

; fileoutputstream.

close();}}

controller

@controller

public

class

freemarkercontroller

}

注意:不要使用單元測試來呼叫方法,頁面是通過模板引擎來渲染的,所以必須啟動專案,模板引擎才能工作。

3.4、最終效果

參考資料

jsp、freemarker、velocity、thymeleaf頁面方案分析

thymeleaf和freemarker誰更好用?

頁面靜態化模板引擎-freemaker

springboot2 整合freemarker模板,完成頁面靜態化處理

freemarker模板引擎使用的高階技巧

assign a hello assign b world 1.字串連線 2.字串擷取 3.字串長度 4.字串大小寫 5.字串首次出現的位置 1.自定義函式實現陣列排序 宣告陣列並顯示未排序之前的陣列 assign mylist 2,3,4,5,1,8,9,8,7 未排序 list mylist a...

Freemarker模板開發1

公司最近用到freemarker來解析xml,最終要求page輸出,研究了一下 1.對於freemarker來說,模板 資料模型 輸出 簡單地說,freemarker並不關係資料的生成,freemarker只關心資料如何抓取,並以何種framework展現。freemarker將輸出真實得知來替換括...

基於FreeMarker匯出模板

今天,來簡單介紹一下基於freemarker來匯出excel 構建資料實體 4 匯出操作 總結我這裡是用的spring boot專案,首先引入依賴 org.springframework.boot groupid spring boot starter freemarker artifactid d...