freemarkの簡単な例


Java Bean:
package com.lee.freemark;

public class User {

	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
}

 
テンプレートファイル:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
${user.name}, ${web}!
</body>
</html>

テストクラス:
package com.lee.freemark;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;

public class FreemarkTest {

	/**
	 * freemark 
	 * @param args
	 * @throws IOException 
	 * @throws TemplateException 
	 */
	public static void main(String[] args) throws IOException, TemplateException {
		
		System.out.println("freemark ......");
		
		Configuration config=new Configuration();
		String templatePath = Thread.currentThread().getContextClassLoader().getResource("template").getPath().substring(1);
		config.setDirectoryForTemplateLoading(new File(templatePath)); 
		config.setSetting("defaultEncoding", "UTF-8");
		Template temp = config.getTemplate("user.ftl");
		
		Map<String,Object> datas = new HashMap<String,Object>();
		User user = new User();
		user.setName(" ");
		datas.put("web", "www.ittools.cn");
		datas.put("user", user);
		
		String outPath = System.getProperty("user.dir")+"/WebContent/";
		File outFile = new File(outPath + "user.html");
		Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outFile)));
		
		temp.process(datas, out);
		
		System.out.println("freemark !");
		
		//System.out.println(Thread.currentThread().getContextClassLoader().getResource("").getPath().substring(1));
		//System.out.println(Thread.currentThread().getContextClassLoader().getResource("template").getPath().substring(1));
		//System.out.println(FreemarkTest.class.getResource("").getPath().substring(1));

	}

}