java代码
package 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 freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class TestFreemarker {
public static void main(String[] args) throws IOException, TemplateException {
Configuration cfg = new Configuration();
//配置ftl查找目录
cfg.setDirectoryForTemplateLoading(new File("templates"));
//配置数据的抓取模式
cfg.setObjectWrapper(new DefaultObjectWrapper());
//构建数据
Map root = new HashMap();
root.put("user", "Big Joe");
root.put("sex", "3");
root.put("ye","2");
String[] str=new String[]{"1","2","3","4"};
root.put("arr", str);
List list=new ArrayList();
User user=new User();
user.setId("1");
user.setName("张三");
list.add(user);
User user1=new User();
user1.setId("2");
user1.setName("李四");
list.add(user1);
root.put("listuser", list);
Map latest = new HashMap();
root.put("latestProduct", latest);
latest.put("url", "products/greenmouse.html");
latest.put("name", "green mouse");
//实例化模板对象
Template temp=cfg.getTemplate("helloword.ftl");
//输出控制台
Writer out=new OutputStreamWriter(System.out);
temp.process(root, out);
out.flush();
out.close();
/* //实例化模板对象
Template temp=cfg.getTemplate("helloword.ftl");
FileOutputStream for=new FileOutputStream("D:\\");
//生成html
Writer out=new OutputStreamWriter(fos);
temp.process(root, out);
out.flush();
out.close();*/
}
}
freemarker模板
<!-- if elseif else-->
<#if sex="1">
男
<#elseif sex="2">
女
<#else>
人妖
</#if>
<!-- switch case -->
<#switch ye>
<#case "1">
nihao
<#break>
<#case "2">
ok
<#break>
</#switch>
<!-- 循环 list 循环体内可以有逻辑判断-->
<!-- 循环数组 -->
<#list arr as tmp>
<!-- 判断是否有下一个元素 -->
<#if tmp_has_next>
有
</#if>
<!-- tmp_index获取下标 -->
${tmp}
</#list>
<!-- 循环集合 里面放的是一个对象 对象中有id和name属性 -->
<#list listuser as tmp1>
${tmp1.id}------${tmp1.name}
</#list>
<!-- 循环一个map集合 -->
<#list map?keys as tmp1>
获取map中的key
</#list>
<#list map?values as tmp1>
获取map中的values
</#list>
<!-- 循环1到10 -->
<#list 1..10 as i>
${i}
</#list>
<!--- 定义一个变量 中间没有内容不用写结束标签 -->
<#assign a=20>
<!-- 包含指令-----include 如果包含的两个或以上ftl有相同的变量 取最后包含进来的变量-->
<#include "include.ftl">
<#include "include1.ftl">
<!-- 包含指令-----import 如果包含的两个ftl有相同的变量 可以使用别名取任意的变量-->
<#import "include.ftl" as v>
<#import "include1.ftl" as n>
${v.a}
macro-----宏 <!-- macro 可以理解为java里的方法 在调用时才会被执行-->
<#macro mymacro p1 p2>
${p1+p2}
</#macro>
<!-- 调用macro -->
<@mymacro p1=10 p2=30 />
<!-- 简单的函数使用 -->
<#assign str='hello moto'>
<!-- 获取长度 -->
${str?length}
<!-- 转大写 -->
${str?upper_case}
<!-- 去空格 -->
${str?trim}
<!-- 判断是否存在 -->
<#if aaaa?exists>
${aaaa}
</#if>