freeMarker入门

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文件,控制台打印:

hellofreemarker,我叫张三,这是我的第一个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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值