freemarker是用来根据模板生成代码的,有强大的模板语言。 项目地址:http://freemarker.sourceforge.net TestFM.java 文件,放在com.fatkun目录下
package com.fatkun;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
import freemarker.cache.ClassTemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import freemarker.template.TemplateExceptionHandler;
public class TestFM {
/**
* @param args
*/
public static void main(String[] args) {
try {
Configuration cfg = new Configuration();
//相对于TestFM类目录下的templates目录,
cfg.setTemplateLoader(new ClassTemplateLoader(TestFM.class,"templates"));
//cfg.setDirectoryForTemplateLoading(new File("绝对路径"));
cfg.setObjectWrapper(new DefaultObjectWrapper());
//设置异常处理器
cfg.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER);
Template temp = cfg.getTemplate("test.ftl");
/* Create a data-model */
Map root = new HashMap();
root.put("user", "Fatkun");
Map latest = new HashMap();
latest.put("url", "products/greenmouse.html");
latest.put("name", "green mouse");
root.put("latestProduct", latest);
/* Merge data-model with template */
Writer out = new OutputStreamWriter(System.out);
temp.process(root, out);
out.flush();
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
}
}
}
模板文件,放在com.fatkun.templates目录下
<html>
<head>
<title>欢迎!</title>
</head>
<body>
<h1>
欢迎 ${user}<#if user == "Fatkun">, 你是肥坤啊!</#if>!
</h1>
<p>我们的最新产品:
<a href="${latestProduct.url}">${latestProduct.name}</a>!
</body>
</html>