`
543089122
  • 浏览: 149975 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

freeMarker入门

    博客分类:
  • java
阅读更多
freeMarker是一个 JAVA开源模版引擎

下面以创建一个静态的HTML页面为例作为入门:
首先需要去下载freeMarker的包,地址http://www.freemarker.org/index.html
该地址含有中文的pdf帮助文档
package freemarker;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
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.Template;
import freemarker.template.TemplateException;

public class BuildHtml {
	public static void main(String[] args) {
		BuildHtml buildHtml = new BuildHtml();
//		System.out.println(buildHtml);
		String path = "D:\\eclipse\\myTest\\src\\freemarker\\";
		Map rootMap = new HashMap();
		rootMap.put("name", "aaaaaaaaaa");
		User2 u2 = new User2("11111","222222222互联网的");
		rootMap.put("u2",u2);
		
		List<User2> list = new ArrayList<User2>();
		for (int i = 0; i < 4; i++) {
			list.add(new User2("33333_"+i,"44444_"+i));
		}
		rootMap.put("list",list);
		rootMap.put("zs1","张三1_zs1");
		rootMap.put("zs2","张三1_zs2");
		buildHtml.create(path, "test1.ft", rootMap , path+"1.html");
	}

	/**
	 * 创建静态HTML页面
	 * @param filePath 模版路径
	 * @param fileName  模版文件名
	 * @param rootMap  参数
	 * @param html   生成的静态文件路径(包含文件名称)
	 */
	public void create(String filePath, String fileName, Map rootMap,
			String html) {
		Configuration cfg = new Configuration();
		Template t = null;
		Writer out = null;
		try {
			cfg.setDirectoryForTemplateLoading(new File(filePath));
			t = cfg.getTemplate(fileName, "gbk");

			out = new BufferedWriter(new OutputStreamWriter(
					new FileOutputStream(html), "gbk"));
			t.process(rootMap, out);
		} catch (IOException e1) {
			e1.printStackTrace();
		} catch (TemplateException e) {
			e.printStackTrace();
		} finally {
			if (out != null) {
				try {
					out.flush();
					out.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
			}
		}
	}
}
 

javaBean
package freemarker;
public class User2 {
	String id;
	String name;

	public User2(String id, String name) {
		super();
		this.id = id;
		this.name = name;
	}

	public String getId() {
		return id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
}

freeMarker模版文件
<html>
  <head>
    <title>Welcome!</title>
  </head>
  <body>
  	${name}<br/>
  	<#--访问对象的属性-->
  	${u2.name}<br/>
  	
  	<br>
  	<#--条件指令-->
  	<#if u2.name=='222222222'>
  		freemark if<br>
  	</#if>
  	<table border="1">
  		<tr>
	  		<td>id</td>
	  		<td>name</td>
	  	</tr>
	  	<#--list指令进行迭代-->
	  	<#list list as u>
	  		<tr>
	  			<td>${u.id}</td>
	  			<td>${u.name}</td>
	  		</tr>
	  	</#list>
  	</table>
  	<br>
  	<#--不存在的变量,用默认值代替-->
  	<h1>${user100!"Anonymous"}</h1>
  	<#--通过if指令里面用??询问变量是否存在-->
  	<#if user100??>welcome ${user100}</#if>
  	
  	<#--下面的macro定义了一个名为greet的宏,也就是一个代码片段,-->
  	<#macro greet>
  		<font size="+2">早晨好!</font><br>
  	</#macro>
  	<#--使用宏-->
  	<@greet/>
  	<@greet/>
  	<#--带参数的宏-->
  	<#macro greet2 person>
  		<font size="+2">Hello ${person}/>
  	</#macro>
  	<@greet2 person="张三1"/> and <@greet2 person="张三2"/>
  	<#--用数据替换张三1和张三2-->
  	<@greet2 person=zs1/> and <@greet2 person=zs2/>
  </body>
</html>
0
5
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics