Freemarker模板应用

来源:互联网 发布:java中电影院售票系统 编辑:程序博客网 时间:2024/05/20 21:45

一,java代码如下:


import java.io.File;
import java.io.FileWriter;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;

import org.apache.commons.io.FileUtils;

import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;

public class D {

 public static void main(String[] args) {
  try {
   String filePath = "D:\\workspaces\\oversea_project\\demo\\src\\com\\demo\\util"; //\\bo.ftl
   Configuration configuration = new Configuration();
   //设置模板的加载方式.
   configuration.setDirectoryForTemplateLoading(new File(filePath));
   //方式2:从web上下文获取
   //configuration.setServletContextForTemplateLoading(Object servletContext, String path)
   
   //设置模板共享变量,所有的模板都可以访问设置的共享变量
   configuration.setSharedVariable("auth_name", "WeiJun Hu");
   
   //指定模板如何查看数据模型
   configuration.setObjectWrapper(new DefaultObjectWrapper());
   
   // 如果从多个位置加载模板,可采用以下方式
   
   
   //获取或者创建一个模板
   Template template = configuration.getTemplate("bo.ftl");
   
   //创建数据模型
   Map root = new HashMap();
   Map map = new HashMap();
   map.put("name", "Jack");
   map.put("id", "1002");
   map.put("age", "23");
   map.put("sex", "男");
   map.put("qq", "962884205");
   root.put("user", map);
   
   //合并数据模型和模版,生成输出到控制台    
         File fileDir = new File("D:\\generate_code_file"); 
         FileUtils.forceMkdir(fileDir);   // 创建文件夹,不存在则创建 
         // 指定生成输出的文件 
         File output = new File(fileDir + "/user.java"); 
         Writer out = new FileWriter(output); 
         template.process(root, out);
         out.close();
   
  } catch (Exception e) {
   e.printStackTrace();
  }
 }
}

 

二,bo.ftl如下:


Map中的数据:

名字:${user.name}

年级:${user.age}

ID值:${user.id}

性别:${user.sex}

QQ:${user.qq}


共享变量:
${auth_name}

0 0
原创粉丝点击