jar包地址:http://www.freemarker.org/freemarkerdownload.html
          FreeMarker是一個(gè)用Java語言編寫的模板引擎,它基于模板來生成文本輸出。
          FreeMarker與Web容器無關(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  * 用戶實(shí)體類
           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ù)模型不是文本文件,而是樹狀結(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í)例,即通過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      *            模板文件名稱
          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è)編碼必須要與頁面中的編碼格式一致
          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 閱讀(25127) 評(píng)論(8)  編輯  收藏

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

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 田阳县| 札达县| 会理县| 延寿县| 丰原市| 华池县| 淮滨县| 时尚| 夏邑县| 宜宾市| 屯昌县| 古丈县| 大方县| 青川县| 中方县| 博爱县| 察隅县| 沈丘县| 勃利县| 石柱| 尉犁县| 措勤县| 滁州市| 山阳县| 芦山县| 辛集市| 株洲县| 万安县| 东乡族自治县| 清涧县| 彭水| 铜山县| 新郑市| 贵州省| 德化县| 龙岩市| 浦城县| 渑池县| 蒙城县| 上虞市| 镇赉县|