FreeMarker–頁面靜態化技術
http://freemarker.foofun.cn/
FreeMarker 是一款 模板引擎: 即一種基于模板和要改變的資料, 并用來生成輸出文本(HTML網頁,電子郵件,組態檔,源代碼等)的通用工具, 它不是面向最終用戶的,而是一個Java類別庫,是一款程式員可以嵌入他們所開發產品的組件,
FreeMarker 全稱 FreeMarker Template Language (FTL / ftl)
FreeMarker主要由 Template file (模板檔案) 和 Java object (Java資料)共同生成

Template file (模板檔案)
<html>
.........
hello ${name}
.........
</html>
Java object (Java資料)
.........
data.name = "小明";
.........
Template file (模板檔案)+ Java object (Java資料)
===>生成一個靜態化頁面
Output
<html>
.........
hello 小明;
.........
</html>
注意事項:
模板:必須是.ftl后綴結尾的檔案
資料:資料型別必須是Map物件或者Java物體類 List集合不行
FreeMarker中一些常用的標簽使用案例
if標簽
官方參考
http://freemarker.foofun.cn/ref_directive_if.html
<#if age lt 16> // lt=>小于
未成年!
<#else>
成年了!
</#if>
list標簽
官方參考
http://freemarker.foofun.cn/ref_directive_list.html
<#list users as user> // users是源資料,user是物件
${user.name}===${user.age}
</#list>
頁面靜態化技術的編程步驟
1**.匯入核心Freemarker.jar包**
**2.獲取模板物件**
獲取Configuration物件 //為了獲取模板物件
Configuration config = new Configuration(Configuration.VERSION_2_3_28); //引數是版本號
設定默認的加載路徑
File file = new File(路徑);
config.setDirectoryForTemplateLoading(file);
設定編碼集
config.setDefaultEncoding("utf-8");
獲取模板
Template template = config.getYemplate(模板名);
**3.準備資料**
時間戳(生成的模板的名字)
Long time = System.cuttentTimeMillis();
設定檔案的保存名
String url = time + suffix; //生成的檔案名 + 后綴
**4.生成靜態資源**
FileWriter Out = new FileWriter(new File(file,url));
生成靜態化頁面
template.process(obj,out); //obj = Java資料:Map/物體類
**5.關流**
out.cloes();
**6.回傳生成的檔案全名用于保存**
return url;
下面是封裝的一個FreeMarker的一個工具類 需要的小伙伴自取
方法一共需要4個引數
1.String templatePath ==>默認加載路徑
2.String templateName ==>模板名
3.Object data ==>Java資料:Map集合或者Java物體類
4.String suffix ==>生成的靜態化檔案的后綴
如:
//路徑
String Path = req.getServletContext().getRealPath("/static/template");
//模板
String url = FreeMarkerUtil.createFile(Path, "story.ftl", story, ".html");
下面是工具類的代碼
package cn.itsource.util;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import cn.itsource.domain.ArticleType;
import freemarker.template.Configuration;
import freemarker.template.Template;
public class FreeMarkerUtil {
public static String createFile(String templatePath,String templateName,Object data,String suffix){
FileWriter out = null;
try {
// 重要:模板(.ftl)和資料(Map物件或Java物體 ,但是List集合不行)
// 1.匯入freemarker.jar
// 2.獲取模板(Template)物件
// 獲取Configuration物件 -- 為了獲取模板物件
Configuration config = new Configuration(Configuration.VERSION_2_3_28);
// 設定默認加載路徑
File file = new File(templatePath);
config.setDirectoryForTemplateLoading(file);
// 設定默認編碼
config.setDefaultEncoding("utf-8");
// 獲取模板
Template template = config.getTemplate(templateName);
// 3.準備資料
// map
// java物體物件
// 時間戳
long time = System.currentTimeMillis();
String url = time+suffix;
// 4.template.process()生成靜態資源
out = new FileWriter(new File(file, url));
template.process(data, out);
return url;
// 5.創建xxx.ftl模板
// 模板中使用el運算式獲取資料
// 6.測驗運行
} catch (Exception e) {
e.printStackTrace();
}finally{
if (out!=null) {
try {
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return null;
}
}
初入小白,簡單講解,不喜勿噴,謝謝大家!
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/239550.html
標籤:其他
上一篇:Sum of Log(icpc上海站2020) 數位dp
下一篇:CMS 內容管理系統
