Freemaker中文教程
http://download.csdn.net/detail/ch656409110/4494063
这是我的代码地址
http://download.csdn.net/detail/fulq1234/9699798
0,frameMaker需要导入包,如果用maven,pom.xml
org.freemarker
freemarker
2.3.25-incubating
1,main函数执行
simpleFTL.ftl
您的年龄是${age},
您的姓名是${name}
SimpleFTL.java
package com;
import java.io.File;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
importfreemarker.template.Configuration;
importfreemarker.template.Template;
public class SimpleFTL {
publicstatic void main(String args[]) throws Exception{
//1,读取framemaker的配置文件,F:\\CODE\\test.my\\src\\main\\java\\template是template的绝对路径
Configuration cfg=new Configuration();
cfg.setDirectoryForTemplateLoading(newFile("src\\main\\java\\template"));//路径可以是绝对路径,也可以是相对路径
//2,读取模板
Template t1=cfg.getTemplate("simpleFTL.ftl");//在配置文件下面的路径,此文件的扩展名可以任意。
Map map=new HashMap();
map.put("age","1");
map.put("name","小明");
//写到控制台
Writer write=new OutputStreamWriter(System.out);
t1.process(map,write);
write.flush();
write.close();
}
}
ftl1.html
FrameMaker
label{
color:red;
}
${user}
Our lastest products:
${lastestProduct.url}
${lastestProduct.name}
<#--多级变量,取到结果-->
:${manylevel.name.name.name}
<#--if用法-->
<#if user=="Big Joe">我是自己#if>
<#--list遍历ArrayList类型的数据-->
<#list l as temp>${temp},#list>
<#--list遍历数组-->
<#listsarr as temp>${temp},#list>
<#--数组加脚标-->
${sarr[0]}
<#--遍历list-->
<#list["a","f","b"]+["aa","rr","cc"]astemp>
${temp},
#list>
<#--加号连接两个哈希表,如果有重复的话,那么选择+号右侧的优先。注意<#assign只有头,没有结尾-->
<#assignages={"Joe":21,"KK":33}+{"Joe":30,"BB":60}>
Joe:${ages.Joe}
BB:${ages.BB}
<#--加减乘除运算-->
${1+2/3}
<#--如果想获取计算的整数部分,就使用int-->
${(1+2/3)?int}
<#--使用比较-->
<#if user=="Big Joe">
It is BigJoe
<#else>
It is not BigJoe
#if>
<#--switch case方法-->
<#switch 6>
<#case 0>
I am 0
<#break>
<#case 1>
I am 1
<#break>
<#default>
I am default
#switch>
FTL1Servlet.java
package com;
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.Map;
import java.util.Set;
import java.util.TreeSet;
importjavax.servlet.ServletException;
importjavax.servlet.annotation.WebServlet;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importfreemarker.template.Configuration;
importfreemarker.template.Template;
importfreemarker.template.TemplateException;
@WebServlet(name="ftl1",urlPatterns="/ftl1")
public class FTL1Servlet extendsHttpServlet {
protectedvoid doGet(HttpServletRequest request,HttpServletResponse response) throwsServletException,IOException{
//加载配置文件
Configuration cfg=new Configuration();
cfg.setDirectoryForTemplateLoading(newFile("F:\\CODE\\test.my\\src\\main\\java\\template"));
String ftl="ftl1.html";
//获取模板
Template t1=cfg.getTemplate(ftl);
//加载数据
Map root=this.getRootMap();
Write rwriter=new OutputStreamWriter(response.getOutputStream());
try{
t1.process(root,writer);
}catch (TemplateException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
writer.flush();
writer.close();
}
protectedvoid doPost(HttpServletRequest request,HttpServletResponse response) throwsServletException,IOException{
doGet(request,response);
}
privateMap getRootMap(){
Map root=new HashMap();
root.put("user","Big Joe");
Map latest=new HashMap();
root.put("lastestProduct",latest);
latest.put("url","products/greenmouse.html");
latest.put("name","green mouse");
//加载底层数据
Map level1=new HashMap();
level1.put("name","Little people");
Map level2=new HashMap();
level2.put("name",level1);
Map level3=new HashMap();
level3.put("name",level2);
root.put("manylevel",level3);
Set set=new TreeSet();
set.add(1);
set.add(2);
set.add(11);
set.add(5);
set.add(1);
set.add(1);
set.add(1);
System.out.println("set="+set);
root.put("set1",set);
//List
ArrayList list=new ArrayList();
list.add(5);
list.add(1);
list.add(4);
list.add(5);
list.add(5);
list.add(5);
System.out.println("list="+list);
root.put("l",list);
//数组
String[] sarr=new String[]{"一","四","三"};
root.put("sarr",sarr);
return root;
}
}
注意了,标准的模板文件扩展名是ftl,但是也可以是html的扩展名。
FrameMaker可以输出到控制台System.out
也可以通过Servlet,用浏览器访问,返回个html页面。response.getOutputStream()