`

Freemarker设计之南(一)

阅读更多

1 、快速入门

1 )模板 + 数据模型 = 输出

l FreeMarker 基于设计者和程序员是具有不同专业技能的不同个体的观念

l 他们是分工劳动的:设计者专注于表示——创建 HTML 文件、图片、 Web 页面的其它可视化方面;程序员创建系统,生成设计页面要显示的数据

l 经常会遇到的问题是:在 Web 页面(或其它类型的文档)中显示的信息在设计页面时是无效的,是基于动态数据的

l 在这里,你可以在 HTML (或其它要输出的文本)中加入一些特定指令, FreeMarker 会在输出页面给最终用户时,用适当的数据替代这些代码

l 下面是一个例子

<html>

  <head>  
   <title>Welcome!</title>  
  </head>  
  <body>  
   <h1>Welcome ${user}!</h1>  
   <p>Our latest product:  
   <a href="${latestProduct.url}">${ latestProduct.name } </a>!  
  </body>  
  </html>  

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 数据模型类似于计算机的文件系统.

2 、数据模型

1 )基础

l 在快速入门中介绍了在模板中使用的三种基本对象类型: scalars hashes sequences ,其实还可以有其它更多的能力:

Ø scalars :存储单值

Ø hashes :充当其它对象的容器,每个都关联一个唯一的查询名字

Ø sequences :充当其它对象的容器,按次序访问

Ø 方法:通过传递的参数进行计算,以新对象返回结果

Ø 用户自定义 FTL 标记:变换器

l 通常每个变量只具有上述的一种能力,但一个变量可以具有多个上述能力,如下面的例子:

  (root)  
  |  
  +- mouse = "Yerri"  
   |  
   +- age = 12  
   |  
   +- color = "brown">    

l mouse既是scalars 又是 hashes ,将上面的数据模型合并到下面的模板:

  ${mouse}<#-- use mouse as scalar -->  
  ${mouse.age}<#-- use mouse as hash -->  
  ${mouse.color} <#-- use mouse as hash -->    

l 输出结果是:

  Yerri  
  12  
  brown    

2 Scalar 变量

l Scalar 变量存储单值,可以是:

Ø 字符串:简单文本,在模板中使用引号(单引号或双引号)括起

Ø 数字:在模板中直接使用数字值

Ø 日期:存储日期 / 时间相关的数据,可以是日期、时间或日期 - 时间( Timestamp );通常情况,日期值由程序员加到数据模型中,设计者只需要显示它们

Ø 布尔值: true false ,通常在 <#if …> 标记中使用

3 hashes sequences 和集合

l 有些变量不包含任何可显示的内容,而是作为容器包含其它变量,者有两种类型:

Ø hashes :具有一个唯一的查询名字和它包含的每个变量相关联

Ø sequences :使用数字和它包含的每个变量相关联,索引值从 0 开始

l 集合变量通常类似 sequences ,除非无法访问它的大小和不能使用索引来获得它的子变量;集合可以看作只能由 <#list …> 指令使用的受限 sequences

4 )方法

l 方法变量通常是基于给出的参数计算值

l 下面的例子假设程序员已经将方法变量 avg 放到数据模型中,用来计算数字平均值:

  The average of 3 and 5 is: ${avg(3, 5)}  
  The average of 6 and 10 and 20 is: ${avg(6, 10, 20)}  
  The average of the price of python and elephant is: ${avg(animals.python.price, animals.elephant.price)}  

5 )宏和变换器

l 宏和变换器变量是用户自定义指令(自定义 FTL 标记),会在后面讲述这些高级特性

6 )节点

l 节点变量表示为树型结构中的一个节点,通常在 XML 处理中使用,会在后面的专门章节中讲

分享到:
评论

相关推荐

    freemarker操作手册-完整freemarker教程

    Freemarker是一个强大的模板引擎,常用于Web应用中的视图层开发,特别是在Java环境中,它作为MVC设计模式的一部分,负责生成动态HTML或其他格式的文本。本教程将深入讲解Freemarker的核心概念、语法和实际应用,帮助...

    FreeMarker中文版word文档

    6. **性能优化**:FreeMarker在设计时考虑到了性能问题,通过缓存机制等手段来提高渲染速度,尤其是在处理大量数据时能够保持高效的响应能力。 #### 四、FreeMarker的基本语法与使用方法 - **变量引用**:在模板中...

    FreeMarker

    FreeMarker 手册2.3.19版是由Nan Lei南磊翻译的中文版本,遵循Creative Commons Attribution 3.0 Unported 许可协议。此版本仅供中文阅读,不涉及原始英文手册的版权。手册旨在帮助开发者理解和使用FreeMarker模板...

    FreeMarker_Manual_zh_CN

    #### 一、FreeMarker概述 **FreeMarker** 是一款用Java编写的强大且功能丰富的模板引擎,适用于多种应用场景,包括但不限于Web应用中的动态页面生成。其核心设计目标是易于使用,同时提供高度灵活性和强大的功能。 ...

    《FreeMarker 手册》

    手册中提到的FreeMarker手册由南磊翻译,版权遵循Creative Commons Attribution 3.0 Unported License,仅适用于中文版翻译,不涉及原英文版手册。 手册内容基于FreeMarker 2.3.19版本编写,因此提及的功能和指令都...

    FreeMarker 中文手册

    FreeMarker中文手册是由南磊翻译的官方指南,涵盖了FreeMarker的各个方面,从基础的模板开发,到高级的XML处理,再到内建函数和特殊变量的使用。手册的每个部分都有详细的章节,对FreeMarker的每个功能和特性都进行...

    FreeMarker中文手册

    模板引擎是一种用于分离业务逻辑和展示格式的技术,这使得设计人员可以专注于设计,而程序员专注于编码,提高了开发效率并降低了维护成本。 FreeMarker的核心在于模板,它通过将数据模型与模板结合产生最终的文本...

    freemarker pdf

    Freemarker分离了逻辑编码(由Java等编程语言完成)与页面设计,使得Web应用程序的界面维护变得简单。 2. **版本**:此份资料针对的是Freemarker 2.3.19版本,由南磊翻译成中文,并根据Creative Commons ...

    FreeMarker_Manual

    FreeMarker手册是由南磊翻译的,用于FreeMarker 2.3.16版本。手册的内容涉及模板开发、程序开发和XML处理等各个方面,是学习FreeMarker的有力工具。手册的版权采用Creative Commons Attribution 3.0 Unported ...

    freemarker中文手册

    FreeMarker中文手册是南磊编译的一份详尽教程,旨在帮助开发者更高效地学习和掌握这一技术。 手册主要涵盖以下知识点: 1. **基础概念**:首先介绍FreeMarker的基本概念,包括模板、数据模型、指令和表达式等。...

    Freemarker中文教程

    在Web开发中,它能有效地将业务逻辑与界面设计分离,使得模板设计者可以专注于页面设计,而不必关心数据处理的细节。Freemarker支持自定义指令和表达式,允许开发者扩展模板语言的能力,以适应不同的业务需求。 该...

    《Java Web程序设计任务教程》-教材源码第7章.rar

    《Java Web程序设计任务教程》是一本专注于教授Java Web开发技术的教材,其源码第7章的内容可能涉及了Web应用程序的关键概念和技术。在这一章节中,学生通常会接触到诸如Servlet、JSP(JavaServer Pages)、MVC...

    基于PHP的店家服务与管理交互平台.doc

    PHP是目前最流行的Web开发语言之一,本科论文基于PHP开发的店家服务与管理交互平台,以满足店家服务和管理的需求。下面是基于PHP的店家服务与管理交互平台的详细知识点。 一、相关技术 PHP是 Hypertext ...

    struts2 jar包

    Struts2是一个基于MVC(Model-View-Controller)设计模式的Java web应用程序框架,它极大地简化了在Java EE平台上构建动态web应用的过程。在Java社区中,Struts2因其强大的功能、高度可扩展性和丰富的插件库而备受...

    Struts2教程

    - **Interceptor(拦截器)**:拦截器是Struts2的核心特性之一,它们在Action执行前后进行预处理和后处理,可以实现如日志、权限控制、事务管理等功能。 - **Result(结果)**:定义了Action执行后的结果如何呈现,...

    kotlin-docs.pdf

    - kotlinx.html:这是一个构建HTML的DSL(领域特定语言),它允许开发者以声明式的方式编写HTML代码,可以作为传统模板系统(如JSP和FreeMarker)的替代品。 在与数据库交互方面,Kotlin提供了多种选项,包括直接...

Global site tag (gtag.js) - Google Analytics