freemarker简单的入门例子

来源:互联网 发布:期货书籍知乎 编辑:程序博客网 时间:2024/05/01 06:04

     至于什么是freemarker,百度百科可查到。至于freemarker的褒贬,本人还没入门,无从说起。玩玩而已。。。

随便建立一个XXXX应用程序,导入freemarker的第三方包。下载地址:http://freemarker.sourceforge.net/

建立文件一,代码如下:

Code:
  1. package com.zyeeda.www.Test;  
  2.   
  3. import java.io.BufferedWriter;  
  4. import java.io.File;  
  5. import java.io.FileWriter;  
  6. import java.io.IOException;  
  7. import java.io.Writer;  
  8. import java.util.ArrayList;  
  9. import java.util.HashMap;  
  10. import java.util.List;  
  11. import java.util.Map;  
  12. import freemarker.template.Configuration;  
  13. import freemarker.template.DefaultObjectWrapper;  
  14. import freemarker.template.Template;  
  15.   
  16. public class FreeMarkerTest {  
  17.     public static void main(String[] args) throws Exception {  
  18.         Configuration config = new Configuration();  
  19.         try {  
  20.             config.setDirectoryForTemplateLoading(new File("e://javasrc"));  
  21.             config.setObjectWrapper(new DefaultObjectWrapper());  
  22.             //拿到test.ftl的模板(相当于html模板)  
  23.             Template template = config.getTemplate("test.ftl""UTF-8");  
  24.             // 创建数据模型  
  25.             Map root = new HashMap();  
  26.             List<User> users = new ArrayList<User>();//方式一:List。用于包装用户信息对象列表  
  27.             User u1 = new User();  
  28.             u1.setId("123");  
  29.             u1.setName("王五");  
  30.             users.add(u1);  
  31.               
  32.             User u2 = new User();  
  33.             u2.setId("2345");  
  34.             u2.setName("张三");  
  35.             User u3 = new User();  
  36.             u3.setId("fgh");  
  37.             u3.setName("李四");  
  38.             users.add(u2);  
  39.             users.add(u3);  
  40.               
  41.             root.put("userList", users); //映射root  
  42.             Map product = new HashMap();  //方式二:单独映射键对。映射product  
  43.             root.put("lastProduct", product);  
  44.             product.put("url""http://www.google.com");  
  45.             product.put("name""green hose");  
  46.               
  47.             Map nb=new HashMap();  
  48.             nb.put("name""标");  
  49.             nb.put("add""中昱达");  
  50.             root.put("mm",nb);  
  51.               
  52.             //新建一个文件。  
  53.             File file = new File("e://javasrc//test.html");  
  54.             if (!file.exists()) {//不存在文件则创建该文件。  
  55.                 // System.out.println("file exist");  
  56.                 file.createNewFile();  
  57.             }  
  58.             //创建该文件的输出字符流。  
  59.             Writer out = new BufferedWriter(new FileWriter(file));  
  60.             template.process(root, out);  
  61.             out.flush();  
  62.         } catch (IOException e) {  
  63.             // TODO Auto-generated catch block  
  64.             e.printStackTrace();  
  65.         }  
  66.     }  
  67. }  

注释只是个人的理解而已。。。如果错误,请指出。

在相应的位置建立一个模板文件:e://javasrc    test.ftl

Code:
  1. <html>      
  2.   <head>      
  3.     <title>Welcome!</title>      
  4.   </head>      
  5.   <body>      
  6.     <#list userList as user>      
  7.         <h1>Welcome ${user.name}!  id:${user.id}</h1><br/>      
  8.     </#list>      
  9.     <p>Our latest product:      
  10.     <a href="${lastProduct.url}">${lastProduct.name}  </a>!     
  11.     <p>test1:${mm.name} test2:${mm.add}   
  12.   </body>      
  13. </html>   

还在入门的路上。。。

     晚上无聊,对模板进行了修改。 然后,输出结果,就是最近经常看的Ext.data.JsonStore格式。

Code:
  1. {userlist : [ <#list userList as user>      #有待完善
  2.                   {name : ${user.name} , id:${user.id} }    
  3.               </#list>  ],     
  4.     url : ${lastProduct.url} , name : ${lastProduct.name} }  

输出到 test.html

Code:
  1. {userlist : [ {name : 王五 , id:123 } {name : 张三 , id:2345 } {name : 李四 , id:fgh } ], url : http://www.google.com , name : green hose }  

 

 

 

原创粉丝点击