1.引入freemarker.jar包
2.在项目目录下建立模板目录:templates
3.在templates目录下,建立a.ftl模板文件,内容如下:
hello,freemarker,我叫${user},这是我的第一个freemarker应用!!! ------------------------ if语句测试: ${user},<#if user=="张三">你好!</#if> ------------------------ if else 语句测试: <#if random gt 60> <#-- 不使用>,因为大部分时候,freemarker会把>解释成标签结束! --> ${random}:及格! <#else> ${random}:不及格! </#if> ------------------------ if else if else语句测试: <#if random gte 90> ${random}:优秀! <#elseif random gte 80> ${random}:良好! <#else> ${random}:一般! </#if> ------------------------ list指令测试: <#list lst as address > ${address_index + 1}.${address.country}==>${address.city}<#if address_has_next>,</#if> </#list> ------------------------ include指令测试: <#include "include.txt" /> ------------------------ 自定义宏指令(macro指令)测试: <#macro m1> <#--定义指令m1 --> <b>aaabbbccc</b> <b>dddeeefff</b> </#macro> <@m1 /> <#--调用上面的宏指令 --> ------------------------ 自定义带参的宏指令测试: <#macro m2 a b c > ${a}--${b}--${c} </#macro> <@m2 a="张三" b="李四" c="王五" /> ------------------------ nested指令测试: <#macro border> <table border=4 cellspacing=0 cellpadding=4> <tr> <td> <#nested> </td> </tr> </table> </#macro> <@border >表格中的内容!</@border> ------------------------ 测试命名空间:在a.ftl文件中引入b.ftl,从而可以使用b.ftl中定义的宏和变量: <#import "b.ftl" as bb /> <@bb.copyright date="2010-2013" /> ${bb.mail} <#assign mail="my@163.com" /> ${mail} <#assign mail="my@163.com" in bb /> ${bb.mail}
4.include.txt
这个是包含的文件include.txt中的内容!
5.b.ftl
<#macro copyright date> <p>Copyright (C) ${date} 我的网址.</p> </#macro> <#assign mail = "zhangsan@163.com">
6.Address.java
package com.test.freemarker;
public class Address {
private String country;
private String city;
public Address(String country, String city) {
super();
this.country = country;
this.city = city;
}
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}
7.建立com.test.freemarker包,然后建立FreeMarkerTest.java文件,内容如下:
package com.test.freemarker;
import java.io.File;
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 java.util.Random;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class FreeMarkerTest {
public static void main(String[] args) {
try {
// 创建freemarker配置实例
Configuration cfg = new Configuration();
cfg.setDirectoryForTemplateLoading(new File("templates"));
// 加载模板文件
Template t = cfg.getTemplate("a.ftl");
// 创建数据模型
Map<String, Object> data = new HashMap<String, Object>();
data.put("user", "张三");
data.put("random", new Random().nextInt(100));
List<Address> list = new ArrayList<Address>();
list.add(new Address("中国","北京"));
list.add(new Address("中国","上海"));
list.add(new Address("美国","纽约"));
data.put("lst", list);
// 显示生成的数据
Writer out = new OutputStreamWriter(System.out);
t.process(data, out);
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
}
}
}
8.编译和运行freeMarkerTest.java文件,控制台打印:
hello,freemarker,我叫张三,这是我的第一个freemarker应用!!! ------------------------ if语句测试: 张三,你好! ------------------------ if else 语句测试: 52:不及格! ------------------------ if else if else语句测试: 52:一般! ------------------------ list指令测试: 1.中国==>北京, 2.中国==>上海, 3.美国==>纽约 ------------------------ include指令测试: 这个是包含的文件include.txt中的内容! ------------------------ 自定义宏指令(macro指令)测试:
<b>aaabbbccc</b> <b>dddeeefff</b>
------------------------ 自定义带参的宏指令测试:
张三--李四--王五 ------------------------ nested指令测试:
<table border=4 cellspacing=0 cellpadding=4> <tr> <td> 表格中的内容! </td> </tr> </table>
------------------------ 测试命名空间:在a.ftl文件中引入b.ftl,从而可以使用b.ftl中定义的宏和变量: <p>Copyright (C) 2010-2013 我的网址.</p> zhangsan@163.com my@163.com my@163.com |