创建Configuration实例
首先必须创建一个freemarker.template.Configuration 实例并调整其设置。Configuration 实例保存freemarker的设置,同时处理预解析的模板的创建和缓存。
通常应用程序的生命周期中只会创建一个Configuration实例。
Configuration cfg = new Configuration();
// 指定模板文件的数据源,这里是一个文件目录。
cfg.setDirectoryForTemplateLoading(
new File("/where/you/store/templates"));
// 指定模板如何发现数据模型,这是一个高级主题,暂且这样使用。
cfg.setObjectWrapper(new DefaultObjectWrapper());
目前我们使用单个的Configuration实例。不过如果一个系统有多个独立的组件使用FreeMarker,它们会使用各自的Configuration 实例。
创建数据模型
我们可以简单地使用java.lang java.util 和自定义的JavaBean构建对象模型,比如我们构建数据模型如下:
(root)
|
+- user = "Big Joe"
|
+- latestProduct
|
+- url = "products/greenmouse.html"
|
+- name = "green mouse"
如下是构建数据模型的代码:
// Create the root hash
Map root = new HashMap();
// Put string ``user'' into the root
root.put("user", "Big Joe");
// Create the hash for ``latestProduct''
Map latest = new HashMap();
// and put it into the root
root.put("latestProduct", latest);
// put ``url'' and ``name'' into latest
latest.put("url", "products/greenmouse.html");
latest.put("name", "green mouse");
也可以使用一个包含url 和 name 属性的JavaBean实例表示lastestProduct。
获取模板
模板通过freemarker.template.Template实例表示。通常从Configuration 实例中获取Template实例,任何时候都可以调用getTemplate方法获取一个Template 实例。假定模板文件test.ftl 保存在先前设置的目录中:
Template temp = cfg.getTemplate("test.ftl");
上述代码将读取,解析/where/you/store/templates/test.ftl文件,创建一个对应的Template实例 。
Configuration 缓存Template 实例, 因此当需要再次获取test.ftl 文件, 将不会创建一个新的Template实例。
合并模板和数据模型
就我们所知,数据模型+模板=输出,通过调用模板的process 方法合并数据模型和模板,process. 方法接受一个数据模型根和一个writer作为参数,将结果输出到Writer。 为简化起见,这里输出到控制台。
Writer out = new OutputStreamWriter(System.out);
temp.process(root, out);
out.flush();
一旦获取一个Template 实例,可以合并不同的数据模型和一个模板(Template 实例基本上是无状态的),而test.ftl只会当Template 实例被创建的时候访问一次。
当然这里的out可以为文件,可以是XML、java等你想要的任何文件类型,这样就实现在代码的生成.
整合
这是先前代码片断的源文件,不要忘记将freemarker.jar放在CLASSPATH.中。
import freemarker.template.*;
import java.util.*;
import java.io.*;
public class Test {
public static void main(String[] args) throws Exception {
/* ------------------------------------------------------------------- */
/* You usually do it only once in the whole application life-cycle: */
/* Create and adjust the configuration */
Configuration cfg = new Configuration();
cfg.setDirectoryForTemplateLoading(
new File("/where/you/store/templates"));
cfg.setObjectWrapper(new DefaultObjectWrapper());
/* ------------------------------------------------------------------- */
/* You usually do these for many times in the application life-cycle: */
/* Get or create a template */
Template temp = cfg.getTemplate("test.ftl");
/* Create a data model */
Map root = new HashMap();
root.put("user", "Big Joe");
Map latest = new HashMap();
root.put("latestProduct", latest);
latest.put("url", "products/greenmouse.html");
latest.put("name", "green mouse");
/* Merge data model with template */
Writer out = new OutputStreamWriter(System.out);
temp.process(root, out);
out.flush();
}
}
分享到:
相关推荐
### FreeMarker 快速入门与上手教程 #### 一、FreeMarker 概览 **FreeMarker** 是一款强大的模板引擎,主要用于生成文本输出。它适用于多种用途,如生成 HTML 页面、XML 数据、电子邮件等。FreeMarker 的一大特点...
这个“Struts2快速上手(附例子)”教程显然旨在帮助开发者快速理解和应用Struts2框架。通过提供的压缩包文件“strutsDemo”,我们可以预期它包含了一个简单的Struts2示例项目,用于演示框架的基本用法和关键组件。 ...
这个"freemarker Demo"是一个适合初学者的示例项目,旨在帮助新接触Freemarker的开发者快速理解和上手。 1. **Freemarker简介** Freemarker是一个基于模板的开源模板语言,它与Java代码分离,使得开发者可以专注于...
Freemarker是一个强大的模板...对于刚接触Freemarker的人来说,这是一个很好的起点,能够帮助他们快速上手并理解模板引擎的工作原理。通过不断的实践和学习,你将能够利用Freemarker的强大功能构建出高效的Web应用。
这个“freemarker”压缩包可能包含Freemarker的JAR文件、文档、示例代码等,可以帮助初学者快速上手。在解压后,可以查阅官方文档,运行示例,或直接在项目中引入JAR来实践这些知识点。通过深入理解和熟练运用,你...
本教程旨在帮助初学者快速掌握FreeMarker的基本概念和使用方法,通过详实的讲解与实例相结合的方式,让你能够轻松上手。 1. **FreeMarker基础** - **定义**:FreeMarker是一个Java模板语言,它将数据模型与视图...
提供的"FreeMarker相关学习文档"可能包括模板语法详解、最佳实践、示例代码等内容,可以帮助初学者快速上手。通过阅读这些资料,你可以深入了解FreeMarker的各个方面,从而更好地利用这个强大的模板引擎。 总结,...
此资源包“Freemarker2.3.16_带简单教程”提供了Freemarker 2.3.16版本的相关学习材料,包括官方文档和教程,帮助初学者快速上手。 《freemarker中文手册文档.doc》是Freemarker的中文参考手册,详细介绍了...
- **基本语法及实例**:`freemarker基本语法及实例.mht`提供了一些基础示例,帮助初学者快速上手。 3. **FreeMarker的优点和缺点**: - **优点**:FreeMarker易于学习,模板语言简洁,支持多种数据类型,与Java...
JFinal的设计理念是"约定优于配置",使得开发者能够快速上手并进行项目开发。它的主要特点包括:零配置,通过注解实现MVC模式,内置丰富的插件支持,如Shiro安全框架、Quartz任务调度等,极大地简化了开发流程。 ...
Freemarker是一款强大的Java模板引擎,常用于动态生成HTML、XML等...这个教程包含了源码和详细步骤,确保你可以快速上手并实现Freemarker模板导出Word的功能。务必仔细阅读并理解每个部分,以便在实际项目中灵活应用。
Velocity也是一种高性能的Java模板引擎,它的设计初衷是为了使Java开发者能够快速地生成静态HTML页面,同时也支持生成XML、PDF等各种格式的文档。 - **优点**: - **易用性**:Velocity的模板语法简单直观,易于...
FreeMarker是一个开源的模板引擎,它基于Java语言,专门用于生成文本输出,例如HTML网页、电子邮件、...手册中的示例和说明旨在帮助用户理解FreeMarker的模板语言和API,以便快速上手并有效地使用FreeMarker完成项目。
- **FreeMarker 中文手册**:`FreeMarker+中文手册.pdf` 可能是社区编写的教程,适合初学者快速上手。 - **FreeMarker 教材**:`FreeMarker教材.docx` 提供了一种系统的学习方式,可能包含示例代码和练习题,帮助...
这份文档会详尽地解释FreeMarker的各个方面,帮助开发者快速上手并深入理解其工作原理。无论是初学者还是有经验的开发者,都能从中受益匪浅,提升自己的模板设计和编程能力。阅读这份文档,你可以学习到如何有效地...
这个“freemarker学习例子”应该包含了一些基础到进阶的Freemarker用法,帮助初学者快速上手。 在Freemarker中,主要涉及以下几个核心概念: 1. **模板(Templates)**:模板是Freemarker的核心,它是HTML或其他文本...
基于springboot+shiro+freemarker的快速开发框架,代码结构清晰,快速上手使用! 配置代码生成器,减少70%开发时间,专注业务逻辑。 前端声明式组件封装、附带文档编写 ctrl+c ctrl+v 即可使用。封装数据源,可通过...
5. **使用文档**: 文档通常包括用户指南、API参考和示例,可以帮助开发者快速上手并解决使用过程中遇到的问题。文档会详细解释如何配置Freemarker、如何创建和解析模板、如何构建数据模型等。 6. **lib目录**: 这里...
在实际开发中,根据需求选择和组合这些语法,就能快速上手并灵活运用Freemarker了。在提供的"freemarker语法完整版.txt"文档中,你会找到更多详尽的示例和说明,帮助你进一步掌握这个强大的工具。