1、快速入门
(1)模板 + 数据模型 = 输出
l????????
FreeMarker基于设计者和程序员是具有不同专业技能的不同个体的观念
l????????
他们是分工劳动的:设计者专注于表示——创建HTML文件、图片、Web页面的其它可视化方面;程序员创建系统,生成设计页面要显示的数据
l????????
经常会遇到的问题是:在Web页面(或其它类型的文档)中显示的信息在设计页面时是无效的,是基于动态数据的
l????????
在这里,你可以在HTML(或其它要输出的文本)中加入一些特定指令,FreeMarker会在输出页面给最终用户时,用适当的数据替代这些代码
l????????
下面是一个例子:
? Welcome!
? Welcome ${user}! ? Our latest product: ? ${latestProduct.name}!
?
l????????
这个例子是在简单的HTML中加入了一些由${…}包围的特定代码,这些特定代码是FreeMarker的指令,而包含FreeMarker的指令的文件就称为模板(Template)
l????????
至于user、latestProduct.url和latestProduct.name来自于数据模型(data model)
l????????
数据模型由程序员编程来创建,向模板提供变化的信息,这些信息来自于数据库、文件,甚至于在程序中直接生成
l????????
模板设计者不关心数据从那儿来,只知道使用已经建立的数据模型
l????????
下面是一个可能的数据模型:
(root) ? | ? +- user = "Big Joe" ? | ? +- latestProduct ????? | ????? +- url = "products/greenmouse.html" ????? | ????? +- name = "green mouse"
l????????
数据模型类似于计算机的文件系统,latestProduct可以看作是目录,而user、url和name看作是文件,url和name文件位于latestProduct目录中(这只是一个比喻,实际并不存在)
l????????
当FreeMarker将上面的数据模型合并到模板中,就创建了下面的输出:
? Welcome!
? Welcome Big Joe! ? Our latest product: ? green mouse!
?
(2)数据模型
l????????
典型的数据模型是树型结构,可以任意复杂和深层次,如下面的例子:
(root) ? | ? +- animals ? |?? | ? |?? +- mouse ? |?? |?? |?? ??|?? |?? +- size = "small" ? |?? |?? |?? ??|?? |?? +- price = 50 ? |?? | ? |?? +- elephant ? |?? |?? |?? ??|?? |?? +- size = "large" ? |?? |?? |?? ??|?? |?? +- price = 5000 ? |?? | ? |?? +- python ? |?????? |?? ??|?????? +- size = "medium" ? |?????? |?? ??|?????? +- price = 4999 ? | ? +- test = "It is a test" ? | ? +- whatnot ????? | ????? +- because = "don't know"
l????????
类似于目录的变量称为hashes,包含保存下级变量的唯一的查询名字
l????????
类似于文件的变量称为scalars,保存单值
l????????
scalars保存的值有两种类型:字符串(用引号括起,可以是单引号或双引号)和数字(不要用引号将数字括起,这会作为字符串处理)
l????????
对scalars的访问从root开始,各部分用“.”分隔,如animals.mouse.price
l????????
另外一种变量是sequences,和hashes类似,只是不使用变量名字,而使用数字索引,如下面的例子:
(root) ? | ? +- animals ? |?? | ? |?? +- (1st) ? |?? |?? | ? |?? |?? +- name = "mouse" ? |?? |?? | ? |?? |?? +- size = "small" ? |?? |?? | ? |?? |?? +- price = 50 ? |?? | ? |?? +- (2nd) ? |?? |?? | ? |?? |?? +- name = "elephant" ? |?? |? ?| ? |?? |?? +- size = "large" ? |?? |?? | ? |?? |?? +- price = 5000 ? |?? | ? |?? +- (3rd) ? |?????? | ? |?????? +- name = "python" ? |?????? | ? |?????? +- size = "medium" ? |?????? | ? |?????? +- price = 4999 ? | ? +- whatnot ????? | ????? +- fruits ?? ???????| ????????? +- (1st) = "orange" ????????? | ????????? +- (2nd) = "banana"
l????????
这种对scalars的访问使用索引,如animals[0].name
(3)模板
l????????
在FreeMarker模板中可以包括下面三种特定部分:
?????????
${…}:称为interpolations,FreeMarker会在输出时用实际值进行替代
?????????
FTL标记(FreeMarker模板语言标记):类似于HTML标记,为了与HTML标记区分,用#开始(有些以@开始,在后面叙述)
?????????
注释:包含在<#--和-->(而不是<!--</span><span style="font-family: 宋体;">和</span><span lang="EN-US">-->)之间
l????????
下面是一些使用指令的例子:
?????????
if指令
<#if animals.python.price < animals.elephant.price> ? Pythons are cheaper than elephants today. <#else> ? Pythons are not cheaper than elephants today. </#if>?
?????????
list指令
We have these animals:
? NamePrice? <#list animals as being> ? ${being.name} | ${being.price} Euros? </#list>
| ?
输出为:
We have these animals:
? NamePrice? mouse | 50 Euros? elephant | 5000 Euros? python | 4999 Euros
| | | ?
?????????
include指令
? Test page
? Test page ? Blah blah... <#include "/copyright_footer.html">
?
?????????
一起使用指令
We have these animals:
? NamePrice? <#list animals as being> ? ??? ????? <#if being.size = "large"></#if> ????? ${being.name} ????? <#if being.size = "large"></#if> ??? ${being.price} Euros? </#list>
| | ?
|
相关推荐
FreeMarker概述、FreeMarker特性、FreeMarker应用指南
### FreeMarker概述与核心知识点详解 #### 一、FreeMarker简介 FreeMarker是一个非常流行的开源模板引擎,主要用于根据模板和数据生成文本输出。它是由Java编写而成,因此可以在任何支持Java运行环境的地方运行。...
FreeMarker的核心是基于模板(Template)的,这些模板是由非编程人员编写的,然后在运行时由FreeMarker引擎动态地合并数据模型来生成最终的输出。 FreeMarker的API主要包括以下几个关键部分: 1. **`Configuration...
### FreeMarker概述 #### 一、FreeMarker简介 FreeMarker是一个功能强大的模板引擎,主要用于根据提供的数据生成文本输出。该工具完全用Java编写,并且设计初衷是为了生成HTML Web页面,尤其是在MVC(Model-View-...
FreeMarker的核心特性包括: 1. **通用目标**:FreeMarker能够生成各种文本格式,如HTML、XML、RTF等,并且可以通过自定义模板加载器从各种来源获取模板。 2. **强大的模板语言**:提供了丰富的指令,如`include`...
### FreeMarker 概述 FreeMarker 是一款模板引擎,它主要功能是基于模板和变动的数据来生成输出文本,这些文本可以是 HTML 网页、电子邮件、配置文件、源代码等。这款工具并非面向最终用户,而是作为一个 Java 类库...
在这个版本中,它可能概述了如何在项目中引入Freemarker 2.3.22,以及如何运行示例或查看API文档。 `NOTICE.txt`文件则通常包含项目的版权信息、许可声明和其他法律相关的细节,帮助开发者了解使用此软件的法律限制...
- **基本内容**:概述了配置FreeMarker的基本步骤。 - **共享变量**:介绍了如何在多个模板间共享变量。 - **配置信息**:描述了如何设置和读取FreeMarker的配置选项。 - **模板加载**:讲解了模板文件的加载机制。 ...
FreeMarker概述 FreeMarker是一个模板引擎,一个基于模板生成文本输出的通用工具,使用纯Java编写 FreeMarker被设计用来生成HTML Web页面,特别是基于MVC模式的应用程序 虽然FreeMarker具有一些编程的能力...
### FreeMarker概述与核心知识点 #### 一、FreeMarker简介 FreeMarker是一个强大的模板引擎,主要用于Web应用程序中生成动态HTML页面以及其他格式的文档。它支持多种编程语言如Java、Python等,并且可以在不同的...
标题与描述概述的知识点主要集中在Freemarker模板引擎在实现分页功能时的应用,特别是当后端数据库为MySQL的情况下。Freemarker是一个用于生成动态文本的模板引擎,它被广泛应用于Web开发中,用于将数据模型转换成...
综上所述,"FreeMarker设计指南+概述.doc"提供了全面的学习材料,无论是对于初学者还是有经验的开发者,都能从中获取到宝贵的指导。通过深入学习和实践,你可以充分利用FreeMarker的强大功能,为你的Web应用创建灵活...
#### 一、Freemarker 概述 Freemarker 是一种用于生成动态页面的模板引擎。它不依赖任何 Web 容器,可以在任何 Java 应用程序中使用。Freemarker 的核心优势在于其简单易学且功能强大,能够很好地满足 Web 开发中的...
#### 一、FreeMarker概述与组成部分 FreeMarker是一种强大的模板引擎,主要用于生成动态HTML页面或其他格式的文档。它通过结合预定义的数据模型与模板文件来生成最终输出。FreeMarker模板文件相对简单直观,其结构...
#### 一、Freemarker 概述 - **定义与功能**:Freemarker 是一款用纯 Java 编写的模板引擎,它主要用于根据模板生成文本输出,如 HTML 网页、XML 文件、电子邮件等。其核心优势在于能够高效地将动态数据转化为静态...
#### 一、FreeMarker概述与基本用法 **FreeMarker**是一种强大的、基于Java的模板引擎,主要用于动态生成HTML页面,但也支持其他类型的文本格式(如XML、JavaScript、电子邮件等)。它通过将数据模型与表现层分离的...
#### FreeMarker 概述 - **定义**: FreeMarker 是一个用纯 Java 编写的模板引擎,它主要用于基于模板生成文本输出。 - **用途**: 主要设计用于生成 HTML Web 页面,尤其是在 MVC (Model-View-Controller) 模式的应用...