摘要: 在Java模板引擎 FreeMarker介紹中,我們已經對freemarker有了一定的了解,這一節是FreeMarker入門教程。下載freemarker,定義模板文件,輸出到控制台和文件中
在Java模板引擎 FreeMarker介紹中,我們已經對freemarker有了一定的了解,這一節是FreeMarker入門教程。
下載freemarker
http://freemarker.sourceforge.net/freemarkerdownload.html
項目文件:freemarker-2.3.19.tar.gz
中文文檔:FreeMarker_Manual_zh_CN.pdf
解壓后把freemarker.jar加到classpath中即可完成環境的配置
定義模板文件
我們創建兩個模板文件,一個是純文本的模板文件,另一個是HTML格式的模板文件,主要是為了說明,freemarker的模板文件可以是任何格式的
01.ftl
你好:${username}
02.ftl
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<h1>${username}</h1>
</body>
</html>
創建freemarker工具類
這個類,主要是獲取模板定義文件,並根據輸入的數據輸出到控制台和文件中
package com.naxsu.freemarker;
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 {
/**
* 獲取模板
* @param name
* @return
*/
public Template getTemplate(String name) {
try {
//通過Freemaker的Configuration讀取相應的ftl
Configuration cfg = new Configuration();
//設定去哪里讀取相應的ftl模板文件
cfg.setClassForTemplateLoading(this.getClass(),"/ftl");
//在模板文件目錄中找到名稱為name的文件
Template temp = cfg.getTemplate(name);
return temp;
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
/**
* 輸出到控制台
* @param name 模板文件名
* @param root
*/
public void print(String name,Map<String,Object> root) {
try {
//通過Template可以將模板文件輸出到相應的流
Template temp = this.getTemplate(name);
temp.process(root, new PrintWriter(System.out));
} catch (TemplateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* 輸出到文件
* @param name
* @param root
* @param outFile
*/
public void fprint(String name,Map<String,
Object> root,String outFile) {
FileWriter out = null;
try {
//通過一個文件輸出流,就可以寫到相應的文件中
out = new FileWriter(
new File("E:\\freemarker\\ftl\\"+outFile));
Template temp = this.getTemplate(name);
temp.process(root, out);
} catch (IOException e) {
e.printStackTrace();
} catch (TemplateException e) {
e.printStackTrace();
} finally {
try {
if(out!=null) out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
模擬數據,進行測試
public class TestFreemarker {
FreemarkerUtil fu;
Map<String,Object> root = null;
@Before
public void setUp() {
fu = new FreemarkerUtil();
root = new HashMap<String,Object>();
}
@Test
public void test01() {
//1、創建數據模型
Map<String,Object> root = new HashMap<String,Object>();
//2、為數據模型添加值
root.put("username", "張三");
//3、將數據模型和模板組合的數據輸出到控制台
fu.print("01.ftl", root);
fu.fprint("02.ftl", root, "01.html");
}
}
好了,helloword到此為止,簡單入門就是如此簡單
本文鏈接:FreeMarker入門教程,本文由huangyineng原創,轉載請注明出處
