摘要: 在Java模板引擎 FreeMarker介绍中,我们已经对freemarker有了一定的了解,这一节是FreeMarker入门教程。下载freemarker,定义模板文件,输出到控制台和文件中
下载freemarker
http://freemarker.sourceforge.net/freemarkerdownload.html
项目文件:freemarker-2.3.19.tar.gz
中文文档:FreeMarker_Manual_zh_CN.pdf
解压后把freemarker.jar加到classpath中即可完成环境的配置
定义模板文件
我们创建两个模板文件,一个是纯文本的模板文件,另一个是HTML格式的模板文件,主要是为了说明,freemarker的模板文件可以是任何格式的
01.ftl
你好:${username}
02.ftl
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>${username}</h1> </body> </html>
创建freemarker工具类
这个类,主要是获取模板定义文件,并根据输入的数据输出到控制台和文件中
package
com.naxsu.freemarker;
import
java.io.File;
import
java.io.FileWriter;
import
java.io.IOException;
import
java.io.PrintWriter;
import
java.util.Map;
import
freemarker.template.Configuration;
import
freemarker.template.Template;
import
freemarker.template.TemplateException;
public
class
FreemarkerUtil {
/**
* 获取模板
* @param name
* @return
*/
public
Template getTemplate(String name) {
try
{
//通过Freemaker的Configuration读取相应的ftl
Configuration cfg =
new
Configuration();
//设定去哪里读取相应的ftl模板文件
cfg.setClassForTemplateLoading(
this
.getClass(),
"/ftl"
);
//在模板文件目录中找到名称为name的文件
Template temp = cfg.getTemplate(name);
return
temp;
}
catch
(IOException e) {
e.printStackTrace();
}
return
null
;
}
/**
* 输出到控制台
* @param name 模板文件名
* @param root
*/
public
void
print(String name,Map<String,Object> root) {
try
{
//通过Template可以将模板文件输出到相应的流
Template temp =
this
.getTemplate(name);
temp.process(root,
new
PrintWriter(System.out));
}
catch
(TemplateException e) {
e.printStackTrace();
}
catch
(IOException e) {
e.printStackTrace();
}
}
/**
* 输出到文件
* @param name
* @param root
* @param outFile
*/
public
void
fprint(String name,Map<String,
Object> root,String outFile) {
FileWriter out =
null
;
try
{
//通过一个文件输出流,就可以写到相应的文件中
out =
new
FileWriter(
new
File(
"E:\\freemarker\\ftl\\"
+outFile));
Template temp =
this
.getTemplate(name);
temp.process(root, out);
}
catch
(IOException e) {
e.printStackTrace();
}
catch
(TemplateException e) {
e.printStackTrace();
}
finally
{
try
{
if
(out!=
null
) out.close();
}
catch
(IOException e) {
e.printStackTrace();
}
}
}
}
|
模拟数据,进行测试
public
class
TestFreemarker {
FreemarkerUtil fu;
Map<String,Object> root =
null
;
@Before
public
void
setUp() {
fu =
new
FreemarkerUtil();
root =
new
HashMap<String,Object>();
}
@Test
public
void
test01() {
//1、创建数据模型
Map<String,Object> root =
new
HashMap<String,Object>();
//2、为数据模型添加值
root.put(
"username"
,
"张三"
);
//3、将数据模型和模板组合的数据输出到控制台
fu.print(
"01.ftl"
, root);
fu.fprint(
"02.ftl"
, root,
"01.html"
);
}
}
|
下载freemarker
http://freemarker.sourceforge.net/freemarkerdownload.html
项目文件:freemarker-2.3.19.tar.gz
中文文档:FreeMarker_Manual_zh_CN.pdf
解压后把freemarker.jar加到classpath中即可完成环境的配置
定义模板文件
我们创建两个模板文件,一个是纯文本的模板文件,另一个是HTML格式的模板文件,主要是为了说明,freemarker的模板文件可以是任何格式的
01.ftl
你好:${username}
02.ftl
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>${username}</h1> </body> </html>
创建freemarker工具类
这个类,主要是获取模板定义文件,并根据输入的数据输出到控制台和文件中
package
com.naxsu.freemarker;
import
java.io.File;
import
java.io.FileWriter;
import
java.io.IOException;
import
java.io.PrintWriter;
import
java.util.Map;
import
freemarker.template.Configuration;
import
freemarker.template.Template;
import
freemarker.template.TemplateException;
public
class
FreemarkerUtil {
/**
* 获取模板
* @param name
* @return
*/
public
Template getTemplate(String name) {
try
{
//通过Freemaker的Configuration读取相应的ftl
Configuration cfg =
new
Configuration();
//设定去哪里读取相应的ftl模板文件
cfg.setClassForTemplateLoading(
this
.getClass(),
"/ftl"
);
//在模板文件目录中找到名称为name的文件
Template temp = cfg.getTemplate(name);
return
temp;
}
catch
(IOException e) {
e.printStackTrace();
}
return
null
;
}
/**
* 输出到控制台
* @param name 模板文件名
* @param root
*/
public
void
print(String name,Map<String,Object> root) {
try
{
//通过Template可以将模板文件输出到相应的流
Template temp =
this
.getTemplate(name);
temp.process(root,
new
PrintWriter(System.out));
}
catch
(TemplateException e) {
e.printStackTrace();
}
catch
(IOException e) {
e.printStackTrace();
}
}
/**
* 输出到文件
* @param name
* @param root
* @param outFile
*/
public
void
fprint(String name,Map<String,
Object> root,String outFile) {
FileWriter out =
null
;
try
{
//通过一个文件输出流,就可以写到相应的文件中
out =
new
FileWriter(
new
File(
"E:\\freemarker\\ftl\\"
+outFile));
Template temp =
this
.getTemplate(name);
temp.process(root, out);
}
catch
(IOException e) {
e.printStackTrace();
}
catch
(TemplateException e) {
e.printStackTrace();
}
finally
{
try
{
if
(out!=
null
) out.close();
}
catch
(IOException e) {
e.printStackTrace();
}
}
}
}
|
模拟数据,进行测试
public
class
TestFreemarker {
FreemarkerUtil fu;
Map<String,Object> root =
null
;
@Before
public
void
setUp() {
fu =
new
FreemarkerUtil();
root =
new
HashMap<String,Object>();
}
@Test
public
void
test01() {
//1、创建数据模型
Map<String,Object> root =
new
HashMap<String,Object>();
//2、为数据模型添加值
root.put(
"username"
,
"张三"
);
//3、将数据模型和模板组合的数据输出到控制台
fu.print(
"01.ftl"
, root);
fu.fprint(
"02.ftl"
, root,
"01.html"
);
}
}
|