一、使用情景
公司的cms產品,最近正在做功能遷移,而我正好負責將老後台的文章發布功能遷移到新後台。
文章發布使用到的核心技術是頁面靜態化。發布的時候,會生成對應的靜態頁面,並將靜態檔案儲存到指定路徑下;同時,重新整理cdn,實現修改同步。
二、頁面靜態化說明
技術原理靜態化一般使用在這種場景:將經常訪問但不常修改的頁面,轉換成靜態頁面。靜態頁面是網頁(html、htm)的**都在頁面中,不需要執行asp,php,jsp,.net等動態語言而生成客戶端網頁**的網頁,不經過資料庫查詢。常見的靜態頁面舉例:.html、.htm。freemarker有著良好的效能和擴充套件性等綜合優勢,且網上可供學習的資源豐富,是我本次文章發布的首選模板引擎,後文主要記錄使用freemarker實現頁面靜態化demo專案的過程。優點
① 互動性差,功能上有限制。
② 增加**的開發複雜度,不利於程式維護和管理。
③ 占用硬碟空間大。
④ 不靈活,靜態化操作需要開關的,需要我們專門的設計。
靜態化常用技術
freemarker
thymeleaf
velocity
jsp
三、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...