第一个FreeMarker程序

公式:模板+数据=输出

模板文件即静态的html代码。数据是从后台得到的数据。

基本使用方法:

(1)导入jar包​

要使用freemarker得先在程序中导入相应的jar包,2.3版本之后的freemarker是比较成熟的。这里使用freemarker2.3.16的jar包。

 (2)创建配置实例

//创建Freemarker配置实例

Configuration cfg = new Configuration();

//指定模板文件从何处加载的数据源,这里设置成一个文件目录(可自定义)

cfg.setDirectoryForTemplateLoading(new File("/file/ftl"));

(3)创建数据模型

一般使用HashM

ap来构建数据,放入map中的值可以是int/String/list/自定义类的实例,等等。

//创建数据模型

Map root = new HashMap();

root.put("username", "freeMK");

 

(4)获得模板

​典型的做法是从第二步中的配置实例中获取一个 Template 模板实例。在之前设置的目录中,用模板文件的命名,例如“ 01.ftl”来获取模板。

//加载模板文件

Template t1 = cfg.getTemplate("01.ftl");

 (5)合并模板和数据模型

这里给出两种输出方式:1.以控制台打印的方式输出;2.以html文件的形式输出。

//1.控制台打印显示生成的数据

Writer out = new OutputStreamWriter(System.out);

t1.process(root, out);

//2.以html文件输出生成的数据

FileWriter out = new FileWriter(new File("html\\"+"01.html"));

t1.process(root, out);


实例:

目录结构:​

//FreeMarkerUtil.java

package com.freemarker.util;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.Map;
import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class FreeMarkerUtil { 
public Template getTemplate(String name){  
try{   
//创建Freemarker配置实例​
Configuration cfg = new Configuration();  
//指定模板文件从何处加载的数据源,这里设置成一个文件目录(可自定义)
//这里是从ftl文件加载(如上图)
cfg.setDirectoryForTemplateLoading(new File("ftl"));  
//加载模板文件​
 Template temp =cfg.getTemplate(name);   
return temp; 
 }catch(IOException e){   
e.printStackTrace();  
}  
return null; 
}  
//从控制台打印​
public void print(String ftlName,Map data){ 
 try {  
 Template temp =this.getTemplate(ftlName);
   temp.process(data, new PrintWriter(System.out));  
} catch (TemplateException e) {   
// TODO Auto-generated catch block   
e.printStackTrace();  
} catch (IOException e) {   
// TODO Auto-generated catch block   e.printStackTrace();  
}}<p><span style="color:rgb(85,164,85)">//以html文件输出</span>​</p><p>public void fprint(String ftlName,Map data,String outFilename){  </p><p>FileWriter out = null;  </p><p>try {   </p><p>out = new FileWriter(new File("html\\"+outFilename));   </p><p>Template temp = this.getTemplate(ftlName);   </p><p>temp.process(data, out);  </p><p>} catch (IOException e) {  </p><p> // TODO Auto-generated catch block   e.printStackTrace();  </p><p>} catch (TemplateException e) {   </p><p>// TODO Auto-generated catch block   e.printStackTrace(); </p><p> }   </p><p>}</p><p>}
</p>
</pre><p></p><pre class="java" name="code">//FreeMK022.java
package com.fremarker.second;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.freemarker.util.FreeMarkerUtil;
public class FreeMK022 { 
public static void main(String[] arg){  
FreeMarkerUtil fu = new FreeMarkerUtil();  
Map data = new HashMap();    
List list = new ArrayList();  
list.add(new Country("中国","北京"));  
list.add(new Country("英国","伦敦"));  
list.add(new Country("美国","纽约"));  
list.add(new Country("法国","巴黎"));  
data.put("list",list);   
 fu.print("022.ftl", data);  
fu.fprint("022.ftl", data, "022.html"); } }


//Country.java
package com.fremarker.second;
public class Country { 
private String country; 
private String city; 
Country(String country,String city){  
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; }}

//022.ftl

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<#list list as coun >
	<b>${coun.country}的首都是${coun.city}</b> <br/>
</#list>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值