freeMarker是一个 JAVA开源模版引擎
下面以创建一个静态的HTML页面为例作为入门:
首先需要去下载freeMarker的包,地址[url]http://www.freemarker.org/index.html[/url]
该地址含有中文的pdf帮助文档
javaBean
freeMarker模版文件
下面以创建一个静态的HTML页面为例作为入门:
首先需要去下载freeMarker的包,地址[url]http://www.freemarker.org/index.html[/url]
该地址含有中文的pdf帮助文档
package freemarker;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class BuildHtml {
public static void main(String[] args) {
BuildHtml buildHtml = new BuildHtml();
// System.out.println(buildHtml);
String path = "D:\\eclipse\\myTest\\src\\freemarker\\";
Map rootMap = new HashMap();
rootMap.put("name", "aaaaaaaaaa");
User2 u2 = new User2("11111","222222222互联网的");
rootMap.put("u2",u2);
List<User2> list = new ArrayList<User2>();
for (int i = 0; i < 4; i++) {
list.add(new User2("33333_"+i,"44444_"+i));
}
rootMap.put("list",list);
rootMap.put("zs1","张三1_zs1");
rootMap.put("zs2","张三1_zs2");
buildHtml.create(path, "test1.ft", rootMap , path+"1.html");
}
/**
* 创建静态HTML页面
* @param filePath 模版路径
* @param fileName 模版文件名
* @param rootMap 参数
* @param html 生成的静态文件路径(包含文件名称)
*/
public void create(String filePath, String fileName, Map rootMap,
String html) {
Configuration cfg = new Configuration();
Template t = null;
Writer out = null;
try {
cfg.setDirectoryForTemplateLoading(new File(filePath));
t = cfg.getTemplate(fileName, "gbk");
out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(html), "gbk"));
t.process(rootMap, out);
} catch (IOException e1) {
e1.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}
javaBean
package freemarker;
public class User2 {
String id;
String name;
public User2(String id, String name) {
super();
this.id = id;
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
freeMarker模版文件
<html>
<head>
<title>Welcome!</title>
</head>
<body>
${name}<br/>
<#--访问对象的属性-->
${u2.name}<br/>
<br>
<#--条件指令-->
<#if u2.name=='222222222'>
freemark if<br>
</#if>
<table border="1">
<tr>
<td>id</td>
<td>name</td>
</tr>
<#--list指令进行迭代-->
<#list list as u>
<tr>
<td>${u.id}</td>
<td>${u.name}</td>
</tr>
</#list>
</table>
<br>
<#--不存在的变量,用默认值代替-->
<h1>${user100!"Anonymous"}</h1>
<#--通过if指令里面用??询问变量是否存在-->
<#if user100??>welcome ${user100}</#if>
<#--下面的macro定义了一个名为greet的宏,也就是一个代码片段,-->
<#macro greet>
<font size="+2">早晨好!</font><br>
</#macro>
<#--使用宏-->
<@greet/>
<@greet/>
<#--带参数的宏-->
<#macro greet2 person>
<font size="+2">Hello ${person}/>
</#macro>
<@greet2 person="张三1"/> and <@greet2 person="张三2"/>
<#--用数据替换张三1和张三2-->
<@greet2 person=zs1/> and <@greet2 person=zs2/>
</body>
</html>