JavaWeb頁面靜態化之使用freemarker模板生成一個html靜態頁面


題外話:
       頁面靜態化(展示數據從JSP頁面變成HTML頁面)實現方式-->模板技術   從本質上來講,模板技術是一個占位符動態替換技術。一個完整的模板技術需要四個元素:①模板語言(使用的語法)   ②包含模板語言的模板文件(.ftl結尾)   ③模板引擎(jar包)  ④擁有動態數據的數據對象
       FreeMarker是一款模板引擎:即一種基於模板和要改變的數據,並用來生成輸出文本(HTML網頁,電子郵件,配置文件,源代碼等)的通用工具。它不是面向最終用戶的,而是一個Java類庫,是一款程序員可以嵌入他們所開發產品的組件。


靜態頁面在什么時候生成??
    數據新增,修改的時候會生成一個新的靜態化頁面, 在數據刪除的時候會將原有的靜態化頁面刪除

如何使用freemarker模板生成一個html頁面呢???
    注意:導入freemarker的jar包

點擊下載FreeMarker文檔+jar包資源   密碼:2ndt

  1. /**
  2. * 1.創建配置實例
  3. * 2.獲得模板
  4. * 3.創建數據模型[數據模型可以是List、Map對象 注意:Map類型的key必須是String類型]
  5. * 4.將模板和數據模型合並
  6. * @author 鄭清
  7. */
  8. public class FreeMarkerTest {
  9.  
  10. @ Test
  11. public void testCreateHtml() throws Exception{
  12. //①創建配置對象
  13. Configuration cfg = new Configuration(Configuration.VERSION_2_3_28);//注意:這里需要傳遞一個版本
  14. File f = new File("E:/eclipse-workspace/JavaWeb_workspace/JavaWeb/src/main/webapp/test");
  15. //②讀取模板文件夾
  16. cfg.setDirectoryForTemplateLoading(f); //設置要加載的模板文件的路徑
  17. //③設置模板的編碼格式
  18. cfg.setDefaultEncoding( "UTF-8");
  19.  
  20. //④獲取模板對象
  21. Template template = cfg.getTemplate("hello.ftl");//hello.ftl是模板名稱
  22.  
  23. //⑤創建數據模型(這里使用map類型) --[數據模型可以是List、Map對象 注意:Map類型的key必須是String類型]
  24. HashMap<String, Object> map = new HashMap<>();
  25. map.put("username", "鄭清");
  26. HashMap<String, Object> map2 = new HashMap<>();//map2存儲的是a標簽的href和顯示名字
  27. map2.put( "href","https://www.baidu.com");
  28. map2.put( "name","百度");
  29. map.put("a", map2);
  30.  
  31. //⑥將模板和數據模型合並 --> 輸出模板,生成文件
  32. PrintWriter pw = new PrintWriter(new File(f, "hello.html"));
  33. template.process(map, pw);//合並 map:數據模型 pw:輸出流對象
  34. pw.close(); //關閉流
  35. }
  36.  
  37. }

${key  }     -->   獲取數據模型中的對應值

當數據模型為對象時:

瀏覽器運行效果:


FreeMarker中的基本語法:     (更多語法在FreeMarker文檔中查看!!)
①判斷:

  1. < #if 條件></#if>
  2. </ #esleif 條件>

②遍歷:

  1. < #list 數據 as 變量>
  2. ${變量 }
  3. </ #list>

③遍歷map:  map?keys --> 獲取map中的key

  1. <#list map?keys as 變量>
  2. 輸出key:${變量}
  3. 輸出 map的值:${map[變量]}
  4. </#list>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM