jar包地址:http://www.freemarker.org/freemarkerdownload.html
FreeMarker是一个用Java语言编写的模板引擎,它基于模板来生成文本输出。
FreeMarker与Web容器无关,即在Web运行时,它并不知道Servlet或HTTP。
它不仅可以用作表现层的实现技术,而且还可以用于生成XML,JSP或Java 等。

Demo:
一、在eclipse中创建FreeMarker模板
${user.userName}
${user.userPassword}
并将其命名为“user.ftl”

二、在eclipse中创建FreeMarker数据模型
以User为例:
 1 package test.client;
 2 
 3 /**
 4  * 用户实体类
 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数据模型不是文本文件,而是树状结构的。

三、在eclipse中填充FreeMarker数据模型
将创建好的User对象以key-value的形式封装到Map中
片段代码:
User user = new User();
        user.setUserName(
"测试");
        user.setUserPassword(
"123");

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

四、创建FreeMarker的模板引擎,解析模板
1.创建和配置Configuration对象,Configuration对象实例负责管理FreeMarker模板的路径加载及模板的创建和缓存。
  通常应用程序的生命周期中只会创建一个Configuration实例。
2.获取模板实例,即通过Configuration实例获取Template实例,调用getTemplate()方法。
3.合并数据模型和模板

该步骤完整代码:
 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      *            数据模型根对象
30      */
31     public static void analysisTemplate(String templateName,
32             String templateEncoding, Map<??> root) {
33         try {
34             /**
35              * 创建Configuration对象
36              */
37             Configuration config = new Configuration();
38             /**
39              * 指定模板路径
40              */
41             File file = new File("templates");
42             /**
43              * 设置要解析的模板所在的目录,并加载模板文件
44              */
45             config.setDirectoryForTemplateLoading(file);
46             /**
47              * 设置包装器,并将对象包装为数据模型
48              */
49             config.setObjectWrapper(new DefaultObjectWrapper());
50 
51             /**
52              * 获取模板,并设置编码方式,这个编码必须要与页面中的编码格式一致
53              */
54             Template template = config.getTemplate(templateName,
55                     templateEncoding);
56             /**
57              * 合并数据模型与模板
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 阅读(25111) 评论(8)  编辑  收藏

评论:
# re: FreeMarker入门 2012-11-08 21:56 | huimark
嗯,学习学习。。。。  回复  更多评论
  
# re: FreeMarker入门 2013-03-14 10:38 | 完全
学习  回复  更多评论
  
# re: FreeMarker入门 2013-07-12 16:21 | 柯新豪
简洁明了  回复  更多评论
  
# re: FreeMarker入门 2013-12-30 14:14 | 开发吧
挺简洁的,如果有图更清晰。  回复  更多评论
  
# re: FreeMarker入门 2014-07-19 17:46 | zuidaima
freemarker代码下载:zuidaima.com/share/search.htm?key=freemarker  回复  更多评论
  
# re: FreeMarker入门 2014-09-18 14:14 | zuidaima
# re: FreeMarker入门 2014-10-27 16:29 | e
怎么看效果  回复  更多评论
  
# re: FreeMarker入门[未登录] 2014-11-12 11:51 | 123
123  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: