`
gaojingsong
  • 浏览: 1182751 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

【FreeMarker 基本功能介绍】

阅读更多

1、FreeMarker 介绍

FreeMarker是一款模板引擎: 即一种基于模板和要改变的数据, 并用来生成输出文本(HTML网页、电子邮件、配置文件、源代码等)的通用工具。 它不是面向最终用户的,而是一个Java类库,是一款程序员可以嵌入他们所开发产品的组件。类似PHP中的Smarty,Smarty是一个php模板引擎

FreeMarker是免费的,基于Apache许可证2.0版本发布。其模板编写为FreeMarker Template Language(FTL),属于简单、专用的语言。需要准备数据在真实编程语言中来显示,比如数据库查询和业务运算, 之后模板显示已经准备好的数据。在模板中,主要用于如何展现数据, 而在模板之外注意于要展示什么数据。

Apache FreeMarker is a template engine: a Java library to generate text output (HTML web pages, e-mails, configuration files, source code, etc.) based on templates and changing data. Templates are written in the FreeMarker Template Language (FTL), which is a simple, specialized language (not a full-blown programming language like PHP). You meant to prepare the data to display in a real programming language, like issue database queries and do business calculations, and then the template displays that already prepared data. In the template you are focusing on how to present the data, and outside the template you are focusing on what data to present.



 

 

 

 

2、Features

A few highlights of FreeMarker:

Powerful template language: Conditional blocks, iterations, assignments, string and arithmetic operations and formatting, macros and functions, including other templates, escaping by default (optional), and many more

Multipurpose and lightweight: Zero dependencies, any output format, can load templates from any place (pluggable), many configuration options

Internationalization/localization-aware: Locale sensitive number and date/time formatting, localized template variations.

XML processing capabilities: Drop XML DOM-s into the data-model and traverse them, or even process them declaratively

Versatile data-model: Java objects are exposed to the template as a tree of variables through pluggable adapters, which decides how the template sees them.

 

性能特点

模板并没有包含程序逻辑来查找当前的访问者是谁,或者去查询数据库获取最新的产品。显示的数据是在FreeMarker之外准备的,通常是一些“真正的”编程语言(比如Java)所编写的代码。模板作者无需知道这些值是如何计算出的。事实上,这些值的计算方式可以完全被修改,而模板可以保持不变,而且页面的样式也可以完全被修改而无需改动模板。当模板作者(设计师)和程序员不是同一人时,显示逻辑和业务逻辑相分离的做法是非常有用的,即便模板作者和程序员是一个人,这么来做也会帮助管理应用程序的复杂性。保证模板专注于显示问题(视觉设计,布局和格式化)是高效使用模板引擎的关键[11]  。

MyEclipse工具下的编辑界面

MyEclipse工具下的编辑界面

1. 通用性

  能够生成各种文本:HTML、XML、RTF、Java源代码等等。

  易于嵌入到产品中:轻量级;不需要Servlet环境。

  插件式模板载入器:可以从任何源载入模板,如本地文件、数据库等等。

  可以按所需生成文本:保存到本地文件;作为Email发送;从Web应用程序发送它返回给Web浏览器。

2. 模板语言

  所有常用的指令:include、if/elseif/else、循环结构。

  在模板中创建和改变变量。

  几乎在任何地方都可以使用复杂表达式来指定值。

  命名的宏,可以具有位置参数和嵌套内容。

  名字空间有助于建立和维护可重用的宏库,或者将一个大工程分成模块,而不必担心名字冲突。

  输出转换块:在嵌套模板片段生成输出时,转换HTML转义、压缩、语法高亮等等;可以定义自己的转换。

3. 通用数据模型

  FreeMarker不是直接反射到Java对象,Java对象通过插件式对象封装,以变量方式在模板中显示。

  可以使用抽象(接口)方式表示对象(JavaBean、XML文档、SQL查询结果集等等),告诉模板开发者使用。方法,使其不受技术细节的打扰。

xml配置

xml配置

4. 为Web准备

  在模板语言中内建处理典型Web相关任务(如HTML转义)的结构。

  能够集成到Model2 Web应用框架中作为JSP的替代。

  支持JSP标记库。

  为MVC模式设计:分离可视化设计和应用程序逻辑;分离页面设计员和程序员。

5. 智能的国际化和本地化

  字符集智能化(内部使用UNICODE)。

  数字格式本地化敏感。

  日期和时间格式本地化敏感。

  非US字符集可以用作标识(如变量名)。

  多种不同语言的相同模板。

6. XML处理能力

  <#recurse> 和<#visit>指令(2.3版本)用于递归遍历XML树。

  在模板中清楚和直接的访问XML对象模型

  • 大小: 11.6 KB
0
0
分享到:
评论

相关推荐

    freemarker基本语法整理

    Freemarker 基本语法整理 作为一款流行的模板引擎,Freemarker 在...以上就是 Freemarker 的基本语法整理,我们可以看到,Freemarker 提供了多种输出、逻辑判断、循环遍历和宏等功能,非常适合在 Struts2 框架中使用。

    FreeMarker模板基本语法

    ### FreeMarker模板基本语法 #### 一、FreeMarker概述与基本用法 **FreeMarker**是一种强大的、基于...上述介绍仅涵盖了FreeMarker模板引擎的一部分基础内容,更多的高级特性还需要开发者在实践中不断探索和学习。

    freemarker Demo 适用于freemarker初学

    这个"freemarker Demo"项目应该包含了基本的模板文件、Struts2配置以及相关的Java代码,通过实际运行和修改这些文件,初学者可以更好地理解Freemarker的工作原理和使用方法。在学习过程中,可以逐步尝试不同的表达式...

    FreeMarker使用介绍

    ### FreeMarker使用详解 #### 一、快速入门:模板+数据模型=输出 FreeMarker是一种强大的模板引擎,专为Web开发设计,它...掌握FreeMarker的基本概念和使用方法,对于提高Web开发效率和提升用户体验具有重要意义。

    freemarker 源码、中文API、 freemarker Myeclipse 编辑器

    同时,手册还会详细介绍如何配置和优化Freemarker以适应你的项目需求。 其次,`freemarker 插件 安装提示.txt`文件很可能是MyEclipse编辑器中安装Freemarker插件的步骤指南。MyEclipse是一款集成开发环境,对于Java...

    freemarker

    Freemarker是一个强大的模板引擎,常用于Java Web开发中,生成动态HTML或其他格式的文本输出。它是基于模板的,允许开发者将逻辑与...通过不断的实践和学习,你将能够利用Freemarker的强大功能构建出高效的Web应用。

    FreeMarker实例教程,手把手教你FreeMarker的方方面面

    - **简介**:介绍了FreeMarker的基本概念和工作原理,包括如何使用模板语言来结合数据模型生成最终的输出文件。 - **模板+数据模型=输出**:阐述了FreeMarker的核心思想——通过模板与数据模型的结合来生成最终的...

    freemarker-2.3.22

    `freemarker.jar`是Freemarker库的二进制文件,它是实际运行时需要导入到Java项目的类路径中的,以便使用Freemarker的功能,如创建模板、解析数据模型并生成最终输出。 `source`目录可能包含了Freemarker 2.3.22的...

    freemarker各种版本的jar包

    - 这个版本可能包含了一些基本的功能,如模板语言的语法,变量、表达式和控制结构。 - 它可能已经支持了数据模型绑定,允许开发者将Java对象的数据传递给模板进行渲染。 - 可能包括了基本的错误处理机制和调试...

    freemarker编辑插件

    在实际开发中,我们还应了解Freemarker的基本语法,如变量表达式、控制结构(if、else、foreach)、导入模板、宏定义等。同时,熟悉如何将Freemarker与后端数据模型绑定,以及如何在Spring MVC或其他Web框架中配置和...

    freemarker 导出word功能

    1. **Freemarker基本概念**: - **模板语言**: Freemarker使用一种简单的模板语言,由变量、控制结构(如条件和循环)组成,这些元素用于构建动态文档。 - **数据模型**: 这是Java对象集合,包含要显示在模板中的...

    FreeMarker中文版word文档

    - **手册结构**:根据给出的文档目录部分,我们可以看出FreeMarker手册包含了前言、FreeMarker介绍等内容。这表明文档会从基础知识入手,逐步深入讲解FreeMarker的各种特性和用法。 - **阅读建议**:对于初学者而言...

    Velocity 和 FreeMarker区别

    主要原因是FreeMarker内置了更多的功能,例如自动转义机制、丰富的内置函数等,这使得开发者无需额外编写工具类或方法即可完成许多常见的任务。而使用**Velocity**时,为了达到类似的效果,则可能需要开发者自己编写...

    velocity和freemarker的比较

    以上是对Velocity和FreeMarker的基本介绍和比较,它们都是Java Web开发中的重要工具,理解它们的特性和应用场景有助于选择最适合项目的技术栈。对于标签“源码”和“工具”,我们可以进一步研究这两个模板引擎的源...

    Freemarker通用select下拉框

    Freemarker是一个强大的模板引擎,常用于...在实际项目中,你可能会遇到更复杂的情况,如分页、级联选择等,但基本原理是相同的:使用Freemarker动态生成HTML,结合后端服务提供数据,最后通过测试确保功能的正确性。

    FreeMarker

    FreeMarker 是一款功能强大的模板引擎,能够帮助开发者高效地生成输出文本。通过了解其工作原理、优势、局限性以及基本使用方法,可以更好地利用这一工具提高开发效率和项目的可维护性。尽管存在一些挑战,如学习新...

    FreeMarker相关学习文档

    3. 强大的文本处理:FreeMarker提供了丰富的文本操作功能,如字符串拼接、格式化日期和数字等。 4. 国际化支持:通过使用`&lt;#t&gt;`标签,FreeMarker可以轻松实现多语言环境下的文本处理。 三、FreeMarker的常用语法 1....

    freemarker代码

    一、Freemarker基本概念 1. 模板:Freemarker的核心是模板,模板是HTML或其他文本文件,其中包含Freemarker表达式和指令,这些元素会被解释并替换为实际值。 2. 数据模型:数据模型是Java对象集合,它们提供给模板...

    Freemarker 实例,Freemarker 实例

    Freemarker基本语法** - **变量(Variables)**: `${variable}` 用于输出变量值,如 `${user.name}`。 - **表达式(Expression)**:支持算术运算、比较、逻辑运算等,如 `${list.size() &gt; 5 ? 'big' : 'small'}`。 - ...

Global site tag (gtag.js) - Google Analytics