1. 程式人生 > 其它 >Freemarker頁面靜態化技術

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框架來完成,並通過依賴注入方式將字符集和模板所在目錄注入進去。