版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/DWL0208/article/details/82050849
FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。
FreeMarker是免费的,基于Apache许可证2.0版本发布。其模板编写为FreeMarker Template Language(FTL),属于简单、专用的语言。需要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。在模板中,主要用于如何展现数据, 而在模板之外注意于要展示什么数据 。
在开发配置报表项目时使用到了freemarker模板引擎作为报表的表格模板,所以今天写一篇博客加强一下学习效果。
1.写一个简单的模板文件table.ftl
<table>
<tr>
<td>姓名</td><td>座右铭</td>
</tr>
<tr>
<td>${name}</td><td>${msg}</td>
</tr>
</table>
2.引入freemarker
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>2.3.23</version>
</dependency>
3.编写Java方法
package com.dwl.rep.common;
import java.io.File;
import java.io.IOException;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class FreeMarkerTest {
public static void main(String[] args) {
Map<String, Object> data = new HashMap<>();
data.put("name", "daiwenlong");
data.put("msg", "hello world");
System.out.println(MakeHtml(data));
}
/**
* 生成带数据的html
* @param data 数据
* @return
*/
public static String MakeHtml(Map<String, Object> data){
// 第一步:创建一个Configuration对象。
Configuration configuration = new Configuration(Configuration.getVersion());
// 创建一个Writer对象。
StringWriter out = new StringWriter();
try {
// 第二步:设置模板文件所在的路径。
configuration.setDirectoryForTemplateLoading(new File("D:\\JavaWorkspace"));
// 第三步:设置模板文件使用的字符集。
configuration.setDefaultEncoding("utf-8");
// 第四步:加载一个模板,创建一个模板对象。
Template template = configuration.getTemplate("table.ftl");
// 第五步:调用模板对象的process将数据塞入模板中。
template.process(data, out);
//返回处理好的HTML字符串
return out.toString();
} catch (IOException|TemplateException e) {
return "error";
} finally {
try {
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
4.查看控制台输出结果