一,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}