什么是FreeMarker(百度百科):
FreeMarker是一款
模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(
HTML网页、
电子邮件、
配置文件、
源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。
FreeMarker是
免费的,基于Apache许可证2.0版本发布。其模板编写为FreeMarker Template Language(FTL),属于简单、专用的语言。需要准备数据在真实编程语言中来显示,比如
数据库查询和业务运算, 之后模板显示已经准备好的数据。在模板中,主要用于如何展现数据, 而在模板之外注意于要展示什么数据 。
freeMarker由两部分组成:数据模型、模板文件。
写了一个简单的freeMarker应用小例子
java代码
import java.io.File;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
import freemarker.template.Configuration;
import freemarker.template.Template;
public class Test {
public static void main(String[] args)throws Exception {
//创建freeMarker配置类
Configuration conf = new Configuration(Configuration.VERSION_2_3_28);
//指定模板文件地址
conf.setDirectoryForTemplateLoading(new File("templates"));
//指定模板文件输出字符集编码
conf.setDefaultEncoding("GBK");
//创建数据模型
Map<String,Object> root = new HashMap<String, Object>();
root.put("user", "张三先生");
//定义模板类,通过配置类获取模板文件
Template template=conf.getTemplate("test.ftl");
//输出到控制台
Writer out = new OutputStreamWriter(System.out);
//执行
template.process(root, out);
out.flush();
}
}
模板文件代码
${user},freeMarker测试成功!!!
结果
张三先生freeMarker测试成功!!!
在freeMarker中数据不一定非要是Map组成
也可以使用POJO
创建User类
public class User {
private String user;
private String talk;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public String getTalk() {
return talk;
}
public void setTalk(String talk) {
this.talk = talk;
}
}
更改ftl模板文件
${user},${talk}
更改测试类中数据模型
//创建数据模型
//注释原来的Map数据模型
// Map<String,Object> root = new HashMap<String, Object>();
//使用User类做数据模型
User root = new User();
root.setUser("张三先生");
root.setTalk("freeMarker测试成功!!!");
运行结果
张三先生,freeMarker测试成功!!!