FreeMarker 是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生
成输出文本(HTML 网页、电子邮件、配置文件、源代码等)的通用工具。
工作原理
模板(基于freemarket语法编写的.ftl文件) + 数据模型(java对象) = 输出(html、xml、java、jsp等文件)
1. 创建工程
2. 添加依赖
<dependencies>
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
</dependencies>
3. 创建模板文件
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Freemarker 测试</title> </head>
<body>
<#--这是 freemarker注释,不会输出到文件中 -->
<h1>${name};${message}</h1>
</body>
</html>
4. 生成文件
@Test
public void test() throws Exception {
//1.创建一个 Configuration 对象, 参数是freemarker 的版本号
Configuration configuration = new Configuration(Configuration.getVersion());
//2.设置模板文件所在的路径
configuration.setClassForTemplateLoading(FreemarkerTest.class, "/ftl");
//3. 设置模板文件使用的字符集
configuration.setDefaultEncoding("utf-8");
//4. 获取模板
Template template = configuration.getTemplate("test.ftl");
//5. 创建一个模板使用的数据集,可以是 pojo 也可以是 map;一般是 Map
Map<String, Object> map = new HashMap<>();
map.put("name", "安莉莉");
map.put("message", "hello nice to meet you !");
//6. 创建一个 Writer 对象,一般创建 FileWriter 对象,指定生成的文件名
FileWriter fileWriter = new FileWriter("C:\\MyFiles\\pomelo\\test\\test.html");
//7. 调用模板对象的 process 方法输出文件
template.process(map, fileWriter);
//8. 关闭流
fileWriter.close();
}
常见符号
${ }插值;只能输出数值、日期或者字符串,其它类型不能输出。
<#freemarker 命令
<#-- 注释 -->
<@使用自定义命令
??是判断对象是否存在
?函数调用