Author:xushuyi
项目工程中引入:freemarker-2.3.16.jar 包
后台逻辑代码:
package com.sxt;
import java.io.File;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
import org.junit.Test;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class FreeMarkerT {
@Test
public void test(){
freeMarkerSumup01();
}
/**
* 对freeMarker进行总结
*/
public void freeMarkerSumup01(){
try {
//创建freeMarker配置实例
Configuration configuration = new Configuration();
configuration.setDirectoryForTemplateLoading(new File("WebRoot/templates"));
//创建数据模型
Map<String, Object> map = new HashMap<String, Object>();
map.put("user", "徐书一");
map.put("randoms", Integer.parseInt(new Random().nextInt(100)+""));
List<Object> list = new ArrayList<Object>();
list.add(new Address("中国","001"));
list.add(new Address("美国","002"));
list.add(new Address("英国","003"));
list.add(new Address("法国","004"));
list.add(new Address("德国","005"));
list.add(new Address("日本","006"));
map.put("lst", list);
map.put("date1", new Date());
//加载模板文件
Template template = configuration.getTemplate("a.ftl");
//显示生成数据,并将数据打印到控制台
OutputStreamWriter writer = new OutputStreamWriter(System.out);
template.process(map, writer);
writer.flush();
writer.close();
} catch (IOException e) {
System.out.println(e.getLocalizedMessage());
} catch (TemplateException e) {
System.out.println(e.getLocalizedMessage());
}
}
}
a.ftl模板:
------------------------------------------
注释指令:<#-- 定义指令 -->
------------------------------------------
你好,${user},今天天气不错啊!
------------------------------------------
测试if语句:
<#if user=="徐书一">
我们的老师
<#else>
不是我们的老师
</#if>
********************
<#if randoms gte 60>
及格:${randoms}
<#else>
不及格:${randoms}
</#if>
*******************
<#if randoms gte 90>
优秀 :${randoms}
<#elseif randoms gte 80>
良好:${randoms}
<#else>
一般:${randoms}
</#if>
------------------------------------------
测试list容器语句:
<#list lst as address >
<b>${address.country}--${address.city}</b> <br/>
</#list>
-----------------------------------------
测试文件的包含指令:
<#include "included.txt"> </br>
-----------------------------------------
测试宏指令:
定义宏:
<#macro m1>
<b>aaaaaaaaaaaaa</b></br>
<b>bbbbbbbbbbbbb</b></br>
</#macro>
调用宏:
<@m1 /><@m1 /><@m1 /><@m1 />
-----------------------------------------
测试带参的宏指令:
<#macro m2 a b c>
${a}--${b}--${c}
</#macro>
调用宏:
<@m2 a='徐书一' b='老高' c='老张' />
<@m2 '徐书一' '老高' '老张' />
-----------------------------------------
测试nested指令:
<#macro border>
<table border=4 cellspacing=0 cellpadding=4>
<tr>
<td>
<#nested>
</td>
</tr>
</table>
</#macro>
调用nested指令:
<@border>aaaaaaaaaaaaaabbbbbbbbbbbbbbb</@border>
-----------------------------------------
测试命名空间指令:--用来区分文件
<#import "b.ftl" as b />
<@b.copyright date="2014-2015"></@b.copyright>
b.ftl文件中的mail属性:${b.mail}
文件中定义mail属性:
<#assign mail='my@163.com' />
${mail}
修改b.flt文件中属性的值:
<#assign mail='my@1633.com' in b />
${b.mail}
-----------------------------------------
测试数据类型:
<#assign name = "xushuyi" />
<#assign num = 123 />
${name}--${num}
-----------------------------------------
测试时间类型:
${date1?string("yyyy-MM-dd HH:mm:ss")}
-----------------------------------------
included.txt文件:
我是被包含文件!!!!!!!!!!!
b.ftl模板:
<#macro copyright date>
<p>copyright (c) ${date} 北京尚学堂.</p>
</#macro>
<#assign mail='bjsxt@163.com'>