Freemarker頁面靜態化技術
技術標籤:freemarkerfreemarker
FreeMarker 是一款 模板引擎: 即一種基於模板和要改變的資料, 並用來生成輸出文字(HTML網頁,電子郵件,配置檔案,原始碼等)的通用工具。 它不是面向終端使用者的,而是一個Java類庫,是一款程式設計師可以嵌入他們所開發產品的元件。
頁面靜態化技術:頁面靜態化其實就是將原來的動態網頁(例如通過ajax請求動態獲取資料庫中的資料並展示的網頁)改為通過靜態化技術生成的靜態網頁,這樣使用者在訪問網頁時,伺服器直接給使用者響應靜態html頁面,沒有了動態查詢資料庫的過程。
什麼時候用:當某些頁面需要經常被訪問,但是資料不會經常發生改變時,我們可以使用頁面靜態化技術靜態化頁面,減少與資料庫的互動,提升效能;
模板檔案中有四種元素:
1、文字,直接輸出的部分
2、註釋,即<#–…-->格式不會輸出
3、插值(Interpolation):即${…}部分,將使用資料模型中的部分替代輸出
4、FTL指令:FreeMarker指令,和HTML標記類似,名字前加#予以區分,不會輸出
Freemarker的模板檔案字尾可以任意,一般建議為ftl。
下面我打一套入門demo:
要使用Freemarker,首先我們要匯入依賴:
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker< /artifactId>
<version>2.3.23</version>
</dependency>
建立模板檔案,並以utf-8編碼儲存:
<html>
<head>
<meta charset="utf-8">
<title>Freemarker入門</title>
</head>
<body>
<#--我只是一個註釋,我不會有任何輸出 -->
${name}你好,${message}
</body>
< /html>
在專案中建立java類:
使用步驟:
第一步:建立一個 Configuration 物件,直接 new 一個物件。構造方法的引數就是 freemarker的版本號。
第二步:設定模板檔案所在的路徑。
第三步:設定模板檔案使用的字符集。一般就是 utf-8。
第四步:載入一個模板,建立一個模板物件。
第五步:建立一個模板使用的資料集,可以是 pojo 也可以是 map。一般是 Map。
第六步:建立一個 Writer 物件,一般建立 FileWriter 物件,指定生成的檔名。
第七步:呼叫模板物件的 process 方法輸出檔案。
第八步:關閉流。
public static void main(String[] args) throws Exception{
//1.建立配置類
Configuration configuration=new Configuration(Configuration.getVersion());
//2.設定模板所在的目錄
configuration.setDirectoryForTemplateLoading(new File("D:\\ftl"));
//3.設定字符集
configuration.setDefaultEncoding("utf-8");
//4.載入模板
Template template = configuration.getTemplate("test.ftl");
//5.建立資料模型
Map map=new HashMap();
map.put("name", "張三");
map.put("message", "歡迎光令");
//6.建立Writer物件
Writer out =new FileWriter(new File("D:\\test.html"));
//7.輸出
template.process(map, out);
//8.關閉Writer物件
out.close();
}
程式執行完成,可以看到在d盤下生成了test.html檔案。
上面的入門案例中Configuration配置物件是自己建立的,字符集和模板檔案所在目錄也是在Java程式碼中指定的。在專案中應用時可以將Configuration物件的建立交由Spring框架來完成,並通過依賴注入方式將字符集和模板所在目錄注入進去。