一、体验FreeMarker
FreeMarker是一个非常优秀的模板引擎,它能以非常简单的方式来输出数据显示。FreeMarker负责将一个数据模型(通常是一个Map对象)中的数据合并到模板中,从而生成输出。从而可以极好地分离显示逻辑和数据逻辑的设计,允许界面设计者更专注于显示逻辑的设计,而程序员则专注于提供逻辑数据。
二、FreeMarker在java项目中的应用示例
1、從官網下载FreeMarker所依赖的jar包 [http://www.freemarker.org ]
目录:
docs:包含FreeMarker的相关文档,用法和API文档
examples:FreeMarker的各种demo
lib:FreeMarker核心类库
src:各种源文件
2、將jar包導入到classpath中;
3、在Java程序中使用FreeMarker;
模板文件: myFreemarker.ftl
文件內容:
<#-- 简单的FreeMarker模板 -->
${name},你好!${msg}
在項目中新建一個文件夾:templates,將模板文件放進去;
4、Java文件
package com.freenarker;
import java.io.File;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.Map;
import freemarker.template.Configuration;
import freemarker.template.Template;
/**
* @ClassName: FreemarkTest
* @Description: 模板處理類
* @author Liyongbin
* @date 2011-2-15 下午08:40:18
* @version V1.0
*/
public class FreeMarkerTest {
// 负责管理FreeMarker模板文件的Configuration实例
private Configuration cfg;
// 负责初始化Configuration实例
private void init() throws Exception {
// 初始化FreeMarker配置,創建一個Configuration實例
cfg = new Configuration();
// 设置模板文件位置
cfg.setDirectoryForTemplateLoading(new File("templates"));
}
// 负责合并的方法
private void process() throws Exception {
Map<String,String> root = new HashMap<String,String>();
root.put("name", "FreeMarker!");
root.put("msg", "first FreeMarker demo");
// 使用Configuration实例来加载指定模板
Template t = cfg.getTemplate("myFreemarker.ftl");
// 处理合并
t.process(root, new OutputStreamWriter(System.out));
}
public static void main(String[] args) throws Exception {
FreeMarkerTest ft = new FreeMarkerTest();
ft.init();
ft.process();
}
}
5. 運行結果:
FreeMarker!,你好,first FreeMarker demo