一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

使用FreeMarker生成靜態(tài)頁原理和實例

 hmtomyang 2015-09-22

上次我們探討了FreeMarker的模板組成,今天我們就來探討一下FreeMarker生成靜態(tài)頁原理。簡單說就是“模板”+“數(shù)據(jù)”=“靜態(tài)頁面輸出”,也就是將頁面中所需要的樣式放入FreeMarker模板文件中,然后將頁面所需要的數(shù)據(jù)動態(tài)綁定,并放入Map中,通過調(diào)用FreeMarker模板文件解析類process()方法完成靜態(tài)頁面的生成。如圖所示:

“模板”+“數(shù)據(jù)”=“靜態(tài)頁面輸出”

了解過FreeMarker生成靜態(tài)頁的原理之后,我們就來通過一個實例更直觀的去剖析一下。

一、 創(chuàng)建一個簡單的FreeMarker模板文件user.ftl

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3. <head>
  4. <meta http-equiv=Content-Type content="text/html; charset=utf-8">
  5. <title>user.ftl</title>
  6. </head>
  7. <body>
  8. ${user.userName}
  9. ${user.userPassword}
  10. </body>
  11. </html>

二、 創(chuàng)建FreeMarker模板文件動態(tài)綁定的數(shù)據(jù)的對象類User.java

  1. public class User{
  2. private String userName;
  3. private String userPassword;
  4.  
  5. public String getUserName(){
  6. return userName;
  7. }
  8. public void setUserName(String userName){
  9. this.userName=userName;
  10. }
  11.  
  12. public String getUserPassword(){
  13. return userPassword;
  14. }
  15. public void setUserName(String userPassword){
  16. this.userPassword=userPassword;
  17. }
  18. }

三、 創(chuàng)建FreeMarker模板文件解析器工具類FreeMarkertUtil.java

  1. //省略包的導(dǎo)入
  2. Public class FreeMarkerUtil{
  3. //templatePath模板文件存放路徑
  4. //templateName 模板文件名稱
  5. //filename 生成的文件名稱
  6. public static void analysisTemplate(String templatePath,String templateName,
  7. String fileName,Map<?,?>root){
  8. try {
  9. Configuration config=new Configuration();
  10. //設(shè)置要解析的模板所在的目錄,并加載模板文件
  11. config.setDirectoryForTemplateLoading(new File(templatePath));
  12. //設(shè)置包裝器,并將對象包裝為數(shù)據(jù)模型
  13. config.setObjectWrapper(new DefaultObjectWrapper());
  14. //獲取模板,并設(shè)置編碼方式,這個編碼必須要與頁面中的編碼格式一致
  15. //否則會出現(xiàn)亂碼
  16. Template template=config.getTemplate(templateName,“UTF-8”);
  17. //合并數(shù)據(jù)模型與模板
  18. FileOutputStream fos = new FileOutputStream(fileName);
  19. Writer out = new OutputStreamWriter(fos,“UTF-8”);
  20. template.process(root, out);
  21. out.flush();
  22. out.close();
  23. } catch (IOException e) {
  24. e.printStackTrace();
  25. }catch (TemplateException e) {
  26. e.printStackTrace();
  27. }
  28. }
  29. }


四、 創(chuàng)建FreeMarker生成靜態(tài)頁面測試類ClientTest.java

  1. //省略包的導(dǎo)入
  2. public class ClientTest{
  3. public static void main(String[] args){
  4. //生成數(shù)據(jù)Map,實際使用中這里可以是數(shù)據(jù)庫查詢出的數(shù)據(jù)
  5. User user=new User();
  6. user.setUserName("Csyor");
  7. user.setUserPassword("123456");
  8. Map<String,Object> root=new HashMap<String, Object>();
  9. root.put("user", user);
  10. //下面是你定義模板的路徑
  11. String templatesPath="D:/MyEclipse/workspaces/freeMaker/templates";
  12. //下面是模板的名稱
  13. String templateFile="/user.ftl";
  14. //下面是靜態(tài)頁面輸出路徑
  15. String htmlFile=templatesPath+"/user.html";
  16. //根據(jù)模板生成靜態(tài)頁面
  17. FreeMarkertUtil.analysisTemplate(templatesPath,templateFile,htmlFile,root);
  18. }
  19. }

至此,一個簡單的FreeMarker生成靜態(tài)頁面的實例已經(jīng)完成,在你指定的靜態(tài)頁面路徑(htmlFile)中已經(jīng)有一個和你定義的模板(user.ftl)格式一樣的靜態(tài)文件。當(dāng)然實際使用過程中不要忘記導(dǎo)入freemarker.jar,而且FreeMarker不只是能夠生產(chǎn)前臺view頁面,也可以根據(jù)實際情況生產(chǎn).java、.jsp、.xml等文件。

本文固定鏈接: http://www./185.html - 穿梭于偶然

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    五月综合婷婷在线伊人| 在线观看国产成人av天堂野外| 亚洲中文在线观看小视频| 日本精品中文字幕在线视频| 午夜精品麻豆视频91| 成人国产一区二区三区精品麻豆| 亚洲av首页免费在线观看| 大尺度激情福利视频在线观看| 国产欧美高清精品一区| 精品国产日韩一区三区| 日韩精品小视频在线观看| 国产精品激情对白一区二区| 色狠狠一区二区三区香蕉蜜桃| 亚洲视频在线观看你懂的| 国产精品免费无遮挡不卡视频| 欧美尤物在线观看西比尔| 国产日韩欧美在线播放| 最新国产欧美精品91| 韩日黄片在线免费观看| 丝袜美女诱惑在线观看| 丰满熟女少妇一区二区三区| 成人精品视频在线观看不卡| 欧美日韩亚洲巨色人妻| 黄色片一区二区在线观看| 91欧美一区二区三区| 十八禁日本一区二区三区| 欧美国产亚洲一区二区三区| 日本淫片一区二区三区| 亚洲婷婷开心色四房播播| 丝袜诱惑一区二区三区| 国产精品久久香蕉国产线| 精品精品国产欧美在线| 日本二区三区在线播放| 日韩性生活视频免费在线观看| 九九九热在线免费视频| 国产综合香蕉五月婷在线| 精品国产av一区二区三区不卡蜜 | 精品国自产拍天天青青草原| 国产综合欧美日韩在线精品| 日本女人亚洲国产性高潮视频| 日韩精品综合免费视频|