題外話:
頁面靜態化(展示數據從JSP頁面變成HTML頁面)實現方式-->模板技術 從本質上來講,模板技術是一個占位符動態替換技術。一個完整的模板技術需要四個元素:①模板語言(使用的語法) ②包含模板語言的模板文件(.ftl結尾) ③模板引擎(jar包) ④擁有動態數據的數據對象
FreeMarker是一款模板引擎:即一種基於模板和要改變的數據,並用來生成輸出文本(HTML網頁,電子郵件,配置文件,源代碼等)的通用工具。它不是面向最終用戶的,而是一個Java類庫,是一款程序員可以嵌入他們所開發產品的組件。
靜態頁面在什么時候生成??
數據新增,修改的時候會生成一個新的靜態化頁面, 在數據刪除的時候會將原有的靜態化頁面刪除
如何使用freemarker模板生成一個html頁面呢???
注意:導入freemarker的jar包
點擊下載FreeMarker文檔+jar包資源 密碼:2ndt
-
/**
-
* 1.創建配置實例
-
* 2.獲得模板
-
* 3.創建數據模型[數據模型可以是List、Map對象 注意:Map類型的key必須是String類型]
-
* 4.將模板和數據模型合並
-
* @author 鄭清
-
*/
-
public class FreeMarkerTest {
-
-
@ Test
-
public void testCreateHtml() throws Exception{
-
//①創建配置對象
-
Configuration cfg = new Configuration(Configuration.VERSION_2_3_28);//注意:這里需要傳遞一個版本
-
File f = new File("E:/eclipse-workspace/JavaWeb_workspace/JavaWeb/src/main/webapp/test");
-
//②讀取模板文件夾
-
cfg.setDirectoryForTemplateLoading(f); //設置要加載的模板文件的路徑
-
//③設置模板的編碼格式
-
cfg.setDefaultEncoding( "UTF-8");
-
-
//④獲取模板對象
-
Template template = cfg.getTemplate("hello.ftl");//hello.ftl是模板名稱
-
-
//⑤創建數據模型(這里使用map類型) --[數據模型可以是List、Map對象 注意:Map類型的key必須是String類型]
-
HashMap<String, Object> map = new HashMap<>();
-
map.put("username", "鄭清");
-
HashMap<String, Object> map2 = new HashMap<>();//map2存儲的是a標簽的href和顯示名字
-
map2.put( "href","https://www.baidu.com");
-
map2.put( "name","百度");
-
map.put("a", map2);
-
-
//⑥將模板和數據模型合並 --> 輸出模板,生成文件
-
PrintWriter pw = new PrintWriter(new File(f, "hello.html"));
-
template.process(map, pw);//合並 map:數據模型 pw:輸出流對象
-
pw.close(); //關閉流
-
}
-
-
}
${key } --> 獲取數據模型中的對應值
當數據模型為對象時:
瀏覽器運行效果:
FreeMarker中的基本語法: (更多語法在FreeMarker文檔中查看!!)
①判斷:
-
<
-
</
②遍歷:
-
< #list 數據 as 變量>
-
${變量 }
-
</ #list>
③遍歷map: map?keys --> 獲取map中的key
-
<#list map?keys as 變量>
-
輸出key:${變量}
-
輸出 map的值:${map[變量]}
-
</#list>