`

FreeMarker快速上手

阅读更多

创建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");  

 

也可以使用一个包含urlname 属性的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 概览 **FreeMarker** 是一款强大的模板引擎,主要用于生成文本输出。它适用于多种用途,如生成 HTML 页面、XML 数据、电子邮件等。FreeMarker 的一大特点...

    struts2快速上手(附例子)(例子已修改)

    这个“Struts2快速上手(附例子)”教程显然旨在帮助开发者快速理解和应用Struts2框架。通过提供的压缩包文件“strutsDemo”,我们可以预期它包含了一个简单的Struts2示例项目,用于演示框架的基本用法和关键组件。 ...

    freemarker Demo 适用于freemarker初学

    这个"freemarker Demo"是一个适合初学者的示例项目,旨在帮助新接触Freemarker的开发者快速理解和上手。 1. **Freemarker简介** Freemarker是一个基于模板的开源模板语言,它与Java代码分离,使得开发者可以专注于...

    freemarker

    Freemarker是一个强大的模板...对于刚接触Freemarker的人来说,这是一个很好的起点,能够帮助他们快速上手并理解模板引擎的工作原理。通过不断的实践和学习,你将能够利用Freemarker的强大功能构建出高效的Web应用。

    freemarker 2.3.10架包

    这个“freemarker”压缩包可能包含Freemarker的JAR文件、文档、示例代码等,可以帮助初学者快速上手。在解压后,可以查阅官方文档,运行示例,或直接在项目中引入JAR来实践这些知识点。通过深入理解和熟练运用,你...

    FreeMarker教程+快速入门

    本教程旨在帮助初学者快速掌握FreeMarker的基本概念和使用方法,通过详实的讲解与实例相结合的方式,让你能够轻松上手。 1. **FreeMarker基础** - **定义**:FreeMarker是一个Java模板语言,它将数据模型与视图...

    FreeMarker相关学习文档

    提供的"FreeMarker相关学习文档"可能包括模板语法详解、最佳实践、示例代码等内容,可以帮助初学者快速上手。通过阅读这些资料,你可以深入了解FreeMarker的各个方面,从而更好地利用这个强大的模板引擎。 总结,...

    Freemarker2.3.16_带简单教程

    此资源包“Freemarker2.3.16_带简单教程”提供了Freemarker 2.3.16版本的相关学习材料,包括官方文档和教程,帮助初学者快速上手。 《freemarker中文手册文档.doc》是Freemarker的中文参考手册,详细介绍了...

    FreeMarker 2.3.18

    - **基本语法及实例**:`freemarker基本语法及实例.mht`提供了一些基础示例,帮助初学者快速上手。 3. **FreeMarker的优点和缺点**: - **优点**:FreeMarker易于学习,模板语言简洁,支持多种数据类型,与Java...

    freemarker模板导出word循环图片表格源码和详细教程

    Freemarker是一款强大的Java模板引擎,常用于动态生成HTML、XML等...这个教程包含了源码和详细步骤,确保你可以快速上手并实现Freemarker模板导出Word的功能。务必仔细阅读并理解每个部分,以便在实际项目中灵活应用。

    jfinal freemarker mysql

    JFinal的设计理念是"约定优于配置",使得开发者能够快速上手并进行项目开发。它的主要特点包括:零配置,通过注解实现MVC模式,内置丰富的插件支持,如Shiro安全框架、Quartz任务调度等,极大地简化了开发流程。 ...

    jsp、freemarker、velocity简介和对比

    Velocity也是一种高性能的Java模板引擎,它的设计初衷是为了使Java开发者能够快速地生成静态HTML页面,同时也支持生成XML、PDF等各种格式的文档。 - **优点**: - **易用性**:Velocity的模板语法简单直观,易于...

    FreeMarker_Manual_zh_CN.pdf

    FreeMarker是一个开源的模板引擎,它基于Java语言,专门用于生成文本输出,例如HTML网页、电子邮件、...手册中的示例和说明旨在帮助用户理解FreeMarker的模板语言和API,以便快速上手并有效地使用FreeMarker完成项目。

    freemarker.zip

    - **FreeMarker 中文手册**:`FreeMarker+中文手册.pdf` 可能是社区编写的教程,适合初学者快速上手。 - **FreeMarker 教材**:`FreeMarker教材.docx` 提供了一种系统的学习方式,可能包含示例代码和练习题,帮助...

    FreeMarker中文版文档2

    这份文档会详尽地解释FreeMarker的各个方面,帮助开发者快速上手并深入理解其工作原理。无论是初学者还是有经验的开发者,都能从中受益匪浅,提升自己的模板设计和编程能力。阅读这份文档,你可以学习到如何有效地...

    freemarker学习例子

    这个“freemarker学习例子”应该包含了一些基础到进阶的Freemarker用法,帮助初学者快速上手。 在Freemarker中,主要涉及以下几个核心概念: 1. **模板(Templates)**:模板是Freemarker的核心,它是HTML或其他文本...

    FreeMarker简体中文参考手册

    通过以上知识点的总结可以看出,《FreeMarker简体中文参考手册》是一份非常全面且详尽的文档,不仅适合初学者快速上手,也适合有经验的开发者深入研究FreeMarker的各项高级功能。无论是从模板语法还是程序开发的角度...

    基于springboot+shiro+freemarker的快速开发框架

    基于springboot+shiro+freemarker的快速开发框架,代码结构清晰,快速上手使用! 配置代码生成器,减少70%开发时间,专注业务逻辑。 前端声明式组件封装、附带文档编写 ctrl+c ctrl+v 即可使用。封装数据源,可通过...

    freemarker-2.3.15

    5. **使用文档**: 文档通常包括用户指南、API参考和示例,可以帮助开发者快速上手并解决使用过程中遇到的问题。文档会详细解释如何配置Freemarker、如何创建和解析模板、如何构建数据模型等。 6. **lib目录**: 这里...

    freemarker语法完整版

    在实际开发中,根据需求选择和组合这些语法,就能快速上手并灵活运用Freemarker了。在提供的"freemarker语法完整版.txt"文档中,你会找到更多详尽的示例和说明,帮助你进一步掌握这个强大的工具。

Global site tag (gtag.js) - Google Analytics