JAVA编码(23)——FreeMmarker代码实例
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'>