一、体验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