下面以创建一个静态的HTML页面为例作为入门:
首先需要去下载freeMarker的包,地址 http://www.freemarker.org/index.html
该地址含有中文的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>