所有FreeMarker的引用概念和说明均摘自==FreeMarker文档==

FreeMarker概念

FreeMarker是一款模板引擎:一种基于模板的、用来生成输出文本(任何来自于HTML格式的文本用来自动生成源代码)的通用工具。它是为Java程序员提供的一个开发包或者说是类库。它不是面向最终用户,而是为程序员提供的可以嵌入他们开发产品的一款应用程序。

FreeMarker设计目的

FreeMarker的设计实际上是被用来生成HTML网页,尤其是通过基于实现了MVC(Model View Controller,模型-视图-控制器)模式的Servlet应用程序。使用MVC模式的动态网页的构思使得你可以将前端设计者(编写HTML)从程序员中分离出来。所有人各司其职,发挥其擅长的一面。网页设计师可以改写页面的显示效果而不受程序员编译代码的影响,因为应用程序的逻辑(Java程序)和页面设计(FreeMarker模板)已经分开了。页面模板代码不会受到复杂的程序代码影响。这种分离的思想即便对一个程序员和页面设计师是同一个人的项目来说都是非常有用的,因为分离使得代码保持简洁而且便于维护。

FreeMarker特点

尽管FreeMarker也有编程能力,但它也不是像PHP那样的一种全面的编程语言。反而,Java程序准备的数据来显示(比如SQL查询),FreeMarker仅仅使用模板生成文本页面来呈现已经准备好的数据。

FreeMarker不是Web应用框架。它是Web应用框架中的一个适用的组件,但是FreeMarker引擎本身并不知道HTTP协议或Servlet。它仅仅来生成文本。即便这样,它也非常适用于非Web应用环境的开发。要注意的是,我们使用FreeMarker作为视图层组件,是为给如Struts这样的Model 2框架提供现成的解决方案。

FreeMarker是免费的,基于BSD规则的许可。它是OSI认证的开源软件。OSI认证是开源倡议的认证标识。

核心概念

模板

FreeMarker Template Language,简称FTL,模板文件以ftl为后缀。

组成:

  • 文本,包括HTML标签与静态文本内容,会直接输出。
  • 插值,Interpolation,这部分的输出会被计算的值来替换,使用${}这种语法
  • FTL标签,给FreeMarker的指示,可以简单与指令等同,不会打印在内容中。
  • 注释: 由<#– 和–>表示,不会处理

数据模型

  • 树状结构,HashMap、Scalar、Sequence