<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    jar包地址:http://www.freemarker.org/freemarkerdownload.html
    FreeMarker是一個(gè)用Java語(yǔ)言編寫(xiě)的模板引擎,它基于模板來(lái)生成文本輸出。
    FreeMarker與Web容器無(wú)關(guān),即在Web運(yùn)行時(shí),它并不知道Servlet或HTTP。
    它不僅可以用作表現(xiàn)層的實(shí)現(xiàn)技術(shù),而且還可以用于生成XML,JSP或Java 等。

    Demo:
    一、在eclipse中創(chuàng)建FreeMarker模板
    ${user.userName}
    ${user.userPassword}
    并將其命名為“user.ftl”

    二、在eclipse中創(chuàng)建FreeMarker數(shù)據(jù)模型
    以User為例:
     1 package test.client;
     2 
     3 /**
     4  * 用戶(hù)實(shí)體類(lèi)
     5  * 
     6  * @author Ying-er
     7  * @time 2010-2-6下午04:05:25
     8  * @version 1.0
     9  */
    10 public class User {
    11     private String userName;
    12 
    13     private String userPassword;
    14 
    15     public String getUserName() {
    16         return userName;
    17     }
    18 
    19     public void setUserName(String userName) {
    20         this.userName = userName;
    21     }
    22 
    23     public String getUserPassword() {
    24         return userPassword;
    25     }
    26 
    27     public void setUserPassword(String userPassword) {
    28         this.userPassword = userPassword;
    29     }
    30 
    31 }
    32 

    注意:注意:FreeMarker數(shù)據(jù)模型不是文本文件,而是樹(shù)狀結(jié)構(gòu)的。

    三、在eclipse中填充FreeMarker數(shù)據(jù)模型
    將創(chuàng)建好的User對(duì)象以key-value的形式封裝到Map中
    片段代碼:
    User user = new User();
            user.setUserName(
    "測(cè)試");
            user.setUserPassword(
    "123");

            Map
    <String, Object> root = new HashMap<String, Object>();
            root.put(
    "user", user);

    四、創(chuàng)建FreeMarker的模板引擎,解析模板
    1.創(chuàng)建和配置Configuration對(duì)象,Configuration對(duì)象實(shí)例負(fù)責(zé)管理FreeMarker模板的路徑加載及模板的創(chuàng)建和緩存。
      通常應(yīng)用程序的生命周期中只會(huì)創(chuàng)建一個(gè)Configuration實(shí)例。
    2.獲取模板實(shí)例,即通過(guò)Configuration實(shí)例獲取Template實(shí)例,調(diào)用getTemplate()方法。
    3.合并數(shù)據(jù)模型和模板

    該步驟完整代碼:
     1 package test.freemarker.util;
     2 
     3 import java.io.File;
     4 import java.io.IOException;
     5 import java.io.OutputStreamWriter;
     6 import java.io.Writer;
     7 import java.util.Map;
     8 
     9 import freemarker.template.Configuration;
    10 import freemarker.template.DefaultObjectWrapper;
    11 import freemarker.template.Template;
    12 import freemarker.template.TemplateException;
    13 
    14 /**
    15  * freemarker 模板工具
    16  * 
    17  * @author Ying-er
    18  * @time 2010-2-6下午04:07:27
    19  * @version 1.0
    20  */
    21 public class FreeMarkertUtil {
    22     /**
    23      * 
    24      * @param templateName
    25      *            模板文件名稱(chēng)
    26      * @param templateEncoding
    27      *            模板文件的編碼方式
    28      * @param root
    29      *            數(shù)據(jù)模型根對(duì)象
    30      */
    31     public static void analysisTemplate(String templateName,
    32             String templateEncoding, Map<??> root) {
    33         try {
    34             /**
    35              * 創(chuàng)建Configuration對(duì)象
    36              */
    37             Configuration config = new Configuration();
    38             /**
    39              * 指定模板路徑
    40              */
    41             File file = new File("templates");
    42             /**
    43              * 設(shè)置要解析的模板所在的目錄,并加載模板文件
    44              */
    45             config.setDirectoryForTemplateLoading(file);
    46             /**
    47              * 設(shè)置包裝器,并將對(duì)象包裝為數(shù)據(jù)模型
    48              */
    49             config.setObjectWrapper(new DefaultObjectWrapper());
    50 
    51             /**
    52              * 獲取模板,并設(shè)置編碼方式,這個(gè)編碼必須要與頁(yè)面中的編碼格式一致
    53              */
    54             Template template = config.getTemplate(templateName,
    55                     templateEncoding);
    56             /**
    57              * 合并數(shù)據(jù)模型與模板
    58              */
    59             Writer out = new OutputStreamWriter(System.out);
    60             template.process(root, out);
    61             out.flush();
    62             out.close();
    63         } catch (IOException e) {
    64             e.printStackTrace();
    65         } catch (TemplateException e) {
    66             e.printStackTrace();
    67         }
    68 
    69     }
    70 }
    71 




    posted on 2010-02-06 16:42 Ying-er 閱讀(25122) 評(píng)論(8)  編輯  收藏

    評(píng)論:
    # re: FreeMarker入門(mén) 2012-11-08 21:56 | huimark
    嗯,學(xué)習(xí)學(xué)習(xí)。。。。  回復(fù)  更多評(píng)論
      
    # re: FreeMarker入門(mén) 2013-03-14 10:38 | 完全
    學(xué)習(xí)  回復(fù)  更多評(píng)論
      
    # re: FreeMarker入門(mén) 2013-07-12 16:21 | 柯新豪
    簡(jiǎn)潔明了  回復(fù)  更多評(píng)論
      
    # re: FreeMarker入門(mén) 2013-12-30 14:14 | 開(kāi)發(fā)吧
    挺簡(jiǎn)潔的,如果有圖更清晰。  回復(fù)  更多評(píng)論
      
    # re: FreeMarker入門(mén) 2014-07-19 17:46 | zuidaima
    freemarker代碼下載:zuidaima.com/share/search.htm?key=freemarker  回復(fù)  更多評(píng)論
      
    # re: FreeMarker入門(mén) 2014-09-18 14:14 | zuidaima
    # re: FreeMarker入門(mén) 2014-10-27 16:29 | e
    怎么看效果  回復(fù)  更多評(píng)論
      
    # re: FreeMarker入門(mén)[未登錄](méi) 2014-11-12 11:51 | 123

    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 久久精品国产亚洲AV高清热| 四虎影视永久免费观看| 久久精品视频免费看| 免费网站观看WWW在线观看| 国产无遮挡色视频免费观看性色| 免费一级全黄少妇性色生活片 | 成人免费看片又大又黄| 91嫩草国产在线观看免费| 一级女人18毛片免费| 麻豆一区二区免费播放网站| 美女被cao免费看在线看网站| 国产精品无码免费播放| 在线免费视频一区| 亚洲av成人一区二区三区在线观看 | 亚洲黄页网在线观看| 日韩亚洲国产综合高清| 亚洲国产无线乱码在线观看| 老子影院午夜伦不卡亚洲| 边摸边脱吃奶边高潮视频免费| 免费看又黄又爽又猛的视频软件| 国产亚洲精品仙踪林在线播放| 特色特黄a毛片高清免费观看| sss日本免费完整版在线观看| 99精品视频免费| 日韩精品无码专区免费播放| 四虎最新永久免费视频| 性感美女视频免费网站午夜| 四虎永久免费地址在线网站| 亚洲区小说区图片区QVOD| 亚洲日本中文字幕区| 2020国产精品亚洲综合网| WWW国产亚洲精品久久麻豆| 国产成人精品免费视频大全| 精品免费tv久久久久久久| 成人免费黄色网址| 国产免费资源高清小视频在线观看| 国产精品亚洲αv天堂无码| 精品日韩亚洲AV无码一区二区三区| 亚洲国产区男人本色在线观看| 色吊丝免费观看网站| 久久久精品免费视频|