freemarker--学习笔记(基础)

java工程,加入freemarker的jar包,项目目录下新建一个templates文件夹用来存放模板文件

a.ftl

你好,${user}~
**********************************************
<#if user = "lixin">hahaha</#if>
**********************************************
<#if user = "李鑫">
是好人
<#else>
是坏人
</#if>
**********************************************
<#list lst as address>
  <b>${address}</b></br>
  <b>${address.city}</b></br>
</#list>
**********************************************
<#include "include.txt">
**********************************************
自定义指令(macro指令)相当于方法
定义宏:
<#macro m1>     <#--定义指令m1-->
<b>ooooooooo</b>
</#macro>
调用宏:
<@m1/>
**********************************************
定义带参数的宏指令:
<#macro m2 a b c >
${a}--${b}--${c}
</#macro>
调用带参数的宏:
<@m2  "haha" "heihei" "baibai"/>
**********************************************
nested指令(外部传进来的数据  获取@border中的参数)
<#macro border>
<table border=4 cellspacing=0 cellpadding=4>
<tr>
<td>
<#nested>
</td>
</tr>
</table>
</#macro>
调用:
<@border>
     hahahahahahahahahahah
</@border>
**********************************************
<#macro border1 user>
<table border=4 cellspacing=0 cellpadding=4>
<tr>
<td>
${user}
</td>
</tr>
</table>
</#macro>
调用:
<@border1 "${user}"/>
**********************************************
assign定义一个变量(类似于c标签的定义)
<#assign mail = "网址">
**********************************************
测试namespace  in 直接改变引用
**********************************************
在a文件中引入b文件  从而可以使用b文件中定义的宏和变量
测试命名空间:
<#import "b.ftl" as bb />
<@bb.copyright date="19950919" />
${bb.phonenum}
<#assign phonenum = "15080176683" />
${phonenum}
测试namespace  in 直接改变引用中的变量值
<#assign phonenum="15080176684" in bb />
**********************************************
展示时间
${date?string("yyyy-MM-dd HH:mm:ss")}
**********************************************
javabean的处理和EL表达式一致
**********************************************
内建函数
${htm2?html}
**********************************************
测试空值处理:
<#--${sss} 没有定义变量  会报异常-->
${sss!} <#--没有定义变量 默认值是空字符串-->
${sss!"lixin"} <#--没有定义这个变量 默认值是字符串lixin-->
**********************************************
?? 运算符返回布尔值
<#if user??>
welcome ${user}!
</#if>

b.htl

<#macro copyright date>
<p>copyright ${date}  b.ftl</p>
</#macro>
<#assign phonenum = "15080176682">

测试类

package com.sxt.test.freemarker;

import java.io.File;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import freemarker.template.Configuration;
import freemarker.template.Template;

public class Test1 {
	public static void main(String[] args) throws Exception {
		//创建Freemarker配置实例
		Configuration cfg = new Configuration();
		
		cfg.setDirectoryForTemplateLoading(new File("templates")); 
		
		//创建数据模型
		Map root = new HashMap();
		root.put("user", "李鑫");
		List list = new ArrayList();
		list.add(new Address("辽宁","沈阳"));
		list.add(new Address("福建","厦门"));
		System.out.println(list);
		root.put("lst", list);
		root.put("date", new Date());
		root.put("htm2", "<b>粗体</b>");
		//加载模板文件
		Template t1 = cfg.getTemplate("a.ftl","utf-8");//用不设置编码的方法可能会出现乱码问题
		//显示生成的数据,//将合并后的数据打印到控制台
		Writer out = new OutputStreamWriter(System.out); 
		t1.process(root, out);
		out.flush();
		//显示生成的数据,//将合并后的数据直接返回成字符串!
//		StringWriter out = new StringWriter();   
//		t1.process(root, out);
//		out.flush();
//		String temp = out.toString();
//		System.out.println(temp);	}
}
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值