FreeMarker简单入门

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>
updatedupdated2024-08-302024-08-30