建立一个 freemarker 的项目很简单,不用配置什么环境,只需要加上依赖的 jar 包即可: freemarker-x.x.x.jar。去 maven 库里下载。
下面建立一个小 demo:
1、新建 freemarker 工具类:
package freemarker.test.common;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.util.Map;
import freemarker.template.Configuration;
import freemarker.template.Template;
public class FreemarkerUtil {
public static String DIRECTORY = "E:\\myJava\\ssh\\src\\main\\java\\freemarker\\test\\ftl" ;
public static Template getTemplate(String name) {
try {
// 通过Freemaker的Configuration读取相应的ftl
Configuration cfg = new Configuration();
// 设定去哪里读取相应的ftl模板文件
cfg.setDirectoryForTemplateLoading( new File(DIRECTORY ));
// 在模板文件目录中找到名称为name的文件
Template temp = cfg.getTemplate( name);
return temp;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 控制台输出
*
* @param name
* @param root
*/
public static void print(String name, Map<String, Object> root) {
try {
// 通过Template可以将模板文件输出到相应的流
Template temp = getTemplate( name);
temp.process( root, new PrintWriter(System. out));
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 文件输出
*
* @param name
* @param root
* @param outFile
*/
public static void fprint(String name, Map<String, Object> root, String outFile) {
FileWriter out = null;
try {
// 通过一个文件输出流,就可以写到相应的文件中,此处用的是绝对路径
out = new FileWriter( new File( outFile));
Template temp = getTemplate( name);
temp.process( root, out);
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if ( out != null)
out.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
2、ftl模板文件:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
Hello, my name is ${name!"default"}.</br>
</body>
</html>
3、测试函数:
@Test
public void test2(){
Map root = new HashMap ();
root .put("name" , "gys");
root .put("address" , "中国-北京") ;
FreemarkerUtil. print( "person.ftl", root);
FreemarkerUtil. fprint( "person.ftl", root, "E:\\fprintResult.txt" );
}
控制台和文件均输出:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
Hello, my name is gys.</br>
</body>
</html>