静态化模板Freemaker的基本语法
首先,导入jar包
freemark的demo类:
1 public class FMDemo { 2 3 //实例化Freemarker 配置类 ftl freemarker templet 4 // .java .html .jsp .xml 5 // .ftl .txt 6 //dao bean xml service controller .jsp 7 public static void main(String[] args) throws IOException, TemplateException { 8 //模板 + 数据模型 = 输出 9 Configuration conf = new Configuration(); 10 //告诉conf 类 模板放在哪里 11 String dir = "C:\\Users\\cuibin\\workspace-juno\\freemarker\\ftl\\"; 12 // 模板放在哪里 13 conf.setDirectoryForTemplateLoading(new File(dir)); 14 //模板对象 15 Template template = conf.getTemplate("freemarker.html"); 16 //数据 17 Map root = new HashMap(); 18 root.put("world", "世界你好"); 19 //1 20 Person person = new Person(); 21 person.setId(1); 22 person.setName("薪水"); 23 root.put("person", person); 24 //2 List 25 List<String> persons = new ArrayList<String>(); 26 persons.add("范冰冰"); 27 persons.add("李冰冰"); 28 persons.add("何灵"); 29 root.put("persons", persons); 30 //3 Map 31 Map mx = new HashMap(); 32 mx.put("fbb","范冰冰"); 33 mx.put("lbb","李冰冰"); 34 root.put("mx",mx); 35 //4: List<Map> 36 37 List<Map> maps = new ArrayList<Map>(); 38 Map pms1 = new HashMap(); 39 pms1.put("id1", "范冰冰"); 40 pms1.put("id2", "李冰冰"); 41 Map pms2 = new HashMap(); 42 pms2.put("id1", "曾志伟"); 43 pms2.put("id2", "何炅"); 44 maps.add(pms1); 45 maps.add(pms2); 46 root.put("maps", maps); 47 48 //时间 49 root.put("cur_time", new Date()); 50 //null 51 root.put("val",null); 52 53 54 55 //输出流 最终成文件 56 Writer out = new FileWriter(new File(dir + "hello.html")); 57 58 template.process(root, out); 59 60 System.out.println("生成完毕!"); 61 62 } 63 }
模板页freemaker.html:
1 <html> 2 <head> 3 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4 <title>Insert title here</title> 5 </head> 6 <body> 7 ${world} <br/> 8 9 ${person.id}/${person.name} <br/> 10 11 <!-- 12 List<String> persons = new ArrayList<String>(); 13 persons.add("范冰冰"); 14 persons.add("李冰冰"); 15 persons.add("何灵"); 16 root.put("persons", persons); --><br/> 17 18 <#list persons as person> 19 ${person} 20 </#list> <br/> 21 22 <!-- Map mx = new HashMap(); 23 mx.put("fbb","范冰冰"); 24 mx.put("lbb","李冰冰"); 25 root.put("mx",mx); --> 26 <#list mx?keys as key> 27 ${mx[key]} 28 </#list> <br/> 29 30 ${mx.fbb}/${mx.lbb} <br/> 31 32 <!-- List<Map> maps = new ArrayList<Map>(); 33 Map pms1 = new HashMap(); 34 pms1.put("id1", "范冰冰"); 35 pms1.put("id2", "李冰冰"); 36 Map pms2 = new HashMap(); 37 pms2.put("id1", "曾志伟"); 38 pms2.put("id2", "何炅"); 39 maps.add(pms1); 40 maps.add(pms2); 41 root.put("maps", maps); --> 42 <#list maps as map > 43 <#list map?keys as key> 44 ${map[key]} 45 </#list> 46 </#list> <br> 47 <#list maps as map > 48 ${map.id1}/${map.id2} 49 </#list> 50 <br/> 51 52 <#list persons as p> 53 ${p_index} 54 </#list> 55 56 <input type="hidden" value="${world}"> 57 <#assign x='${world}' /> 58 ${x} 59 60 <#assign x>世界太好了</#assign> 61 ${x} 62 63 <#assign x> 64 <#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as n> 65 ${n} 66 </#list> 67 </#assign> 68 ${x}<br/> 69 70 <#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as n> 71 <#if n != "星期一"> 72 ${n} 73 </#if> 74 </#list> 75 <#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as n> 76 <#if n_index != 0> 77 ${n} 78 </#if> 79 </#list><br/> 80 81 <#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as n> 82 <#if (n_index == 1) || (n_index == 3)> 83 ${n} 84 </#if> 85 </#list><br/> 86 87 <#list ["星期一", "星期二", "星期三", "星期四", "星期五", "星期六", "星期天"] as n> 88 <#if (n_index == 1) || (n_index == 3)> 89 ${n} --红色 90 <#else> 91 ${n} --绿色 92 </#if> 93 </#list><br/> 94 95 ${cur_time?datetime}<br/> 96 97 ${val!} 98 99 <!-- 分页 --> 100 <#macro table pageNo> 101 ${pageNo} 102 如果是每一页 <Strong>1</Strong> 103 ... 104 </#macro> 105 <@table pageNo=8 /><br/> 106 107 <#macro table u> 108 ${u} 109 <#nested/> 110 </#macro> 111 <@table u=8 >这是8</@table> 112 113 114 115 116 117 118 119 120 121 122 </body> 123
执行demo的main方法生成输出页:
1 <html> 2 <head> 3 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 4 <title>Insert title here</title> 5 </head> 6 <body> 7 世界你好 <br/> 8 9 1/薪水 <br/> 10 11 <!-- 12 List<String> persons = new ArrayList<String>(); 13 persons.add("范冰冰"); 14 persons.add("李冰冰"); 15 persons.add("何灵"); 16 root.put("persons", persons); --><br/> 17 18 范冰冰 19 李冰冰 20 何灵 21 <br/> 22 23 <!-- Map mx = new HashMap(); 24 mx.put("fbb","范冰冰"); 25 mx.put("lbb","李冰冰"); 26 root.put("mx",mx); --> 27 李冰冰 28 范冰冰 29 <br/> 30 31 范冰冰/李冰冰 <br/> 32 33 <!-- List<Map> maps = new ArrayList<Map>(); 34 Map pms1 = new HashMap(); 35 pms1.put("id1", "范冰冰"); 36 pms1.put("id2", "李冰冰"); 37 Map pms2 = new HashMap(); 38 pms2.put("id1", "曾志伟"); 39 pms2.put("id2", "何炅"); 40 maps.add(pms1); 41 maps.add(pms2); 42 root.put("maps", maps); --> 43 李冰冰 44 范冰冰 45 何炅 46 曾志伟 47 <br> 48 范冰冰/李冰冰 49 曾志伟/何炅 50 <br/> 51 52 0 53 1 54 2 55 56 <input type="hidden" value="世界你好"> 57 世界你好 58 59 世界太好了 60 61 星期一 62 星期二 63 星期三 64 星期四 65 星期五 66 星期六 67 星期天 68 <br/> 69 70 星期二 71 星期三 72 星期四 73 星期五 74 星期六 75 星期天 76 星期二 77 星期三 78 星期四 79 星期五 80 星期六 81 星期天 82 <br/> 83 84 星期二 85 星期四 86 <br/> 87 88 星期一 --绿色 89 星期二 --红色 90 星期三 --绿色 91 星期四 --红色 92 星期五 --绿色 93 星期六 --绿色 94 星期天 --绿色 95 <br/> 96 97 2015-5-11 15:39:02<br/> 98 99 100 101 <!-- 分页 --> 102 8 103 如果是每一页 <Strong>1</Strong> 104 ... 105 <br/> 106 107 8 108 这是8 109 110 111 112 113 114 115 116 117 118 119 </body> 120 </html>