Velocity是什么?
Velocity 是一个基于java 的模板引擎(template engine)。它允许任何人仅仅简单的使
用模板语言(template language)来引用由java 代码定义的对象。
当Velocity 应用于web 开发时,界面设计人员可以和java 程序开发人员同步开发一个遵
循MVC 架构的web 站点,也就是说,页面设计人员可以只关注页面的显示效果,而由java
程序开发人员关注业务逻辑编码。Velocity 将java 代码从web 页面中分离出来,这样为
web 站点的长期维护提供了便利,同时也为我们在JSP 和PHP 之外又提供了一种可选的方
案。
Velocity 的能力远不止web 站点开发这个领域,例如,它可以从模板(template)产生
SQL 和PostScript、XML,它也可以被当作一个独立工具来产生源代码和报告,或者作为
其他系统的集成组件使用。Velocity 也可以为Turbine web 开发架构提供模板服务
(template service)。Velocity+Turbine 提供一个模板服务的方式允许一个web 应用
以一个真正的MVC 模型进行开发。
Velocity能为我们作什么?
假设你是一家专门出售Mud 的在线商店的页面设计人员,让我们暂且称它为“在线
MUD 商店”。你们的业务很旺,客户下了各种类型和数量的mud 订单。他们都是通
过输入用户名和密码后才登陆到你的网站,登陆后就允许他们查看订单并购买更多的
mud。现在,一种非常流行的mud 正在打折销售。另外有一些客户规律性的购买另外
一种也在打折但是不是很流行的Bright Red Mud,由于购买的人并不多所以它被安置
在页面的边缘。所有用户的信息都是被跟踪并存放于数据库中的,所以某天有一个问题
可能会冒出来:为什么不使用velocity 来使用户更好的浏览他们感兴趣的商品呢?
Velocity 使得web 页面的客户化工作非常容易。作为一个web site 的设计人员,你
希望每个用户登陆时都拥有自己的页面。
你会见了一些公司内的软件工程师,你发现他们每个人都同意客户应该拥有具有个性化
的信息。那让我们把软件工程师应该作的事情发在一边,看一看你应该作些什么吧。
你可能在页面内嵌套如下的VTL 声明:
<html>
<body>
Hello $customer.Name!
<table>
#foreach( $mud in $nudsOnSpecial )
#if ( $customer.hasPurchased( $mud ) )
<tr>
<td>
$flogger.getPromo( $mud )
<td>
<tr>
#end
#end
</table>
Velocity Template Language(VTL):AN introduction
VTL 意味着提供最简单、最容易并且最整洁的方式合并页面动态内容。
VTL 使用references 来在web site 内嵌套动态内容,一个变量就是一种类型的
reference。变量是某种类型的refreence,它可以指向java 代码中的定义,或者从当前
页面内定义的VTL statement 得到值。下面是一个VTL statement 的例子,它可以被嵌
套到HTML 代码中:
#set ( $a = “Velocity” )
和所有的VTL statement 一样,这个statement 以#字符开始并且包含一个directive:
set。当一个在线用户请求你的页面时,Velocity Templating Engine 将查询整个页面以
便发现所有#字符,然后确定哪些是VTL statement,哪些不需要VTL 作任何事情。
#字符后紧跟一个directive:set 时,这个set directive 使用一个表达式(使用括号封
闭)――一个方程式分配一个值给变量。变量被列在左边,而它的值被列在右边,最后他们
之间使用=号分割。
在上面的例子中,变量是$a,而它的值是Velocity。和其他的references 一样以$字符开
始,而值总是以双引号封闭。Velocity 中仅有String 可以被赋值给变量。
记住以下的规则:
使用$字符开始的references 用于得到什么;使用#字符开始的directives 用于作些什么。
Hello Velocity World!
一旦某个变量被分配了一个值,那么你就可以在HTML 文件的任何地方引用它。在下面的
例子中,一个值被分配给$foo 变量,并在其后被引用。
<html>
<body>
#set ( $foo = “Velocity” )
Hello $foo World!
</body>
</html>
上面的实现结果是在页面上打印“Hello Velocity World!”
注解
单行注释:
## This is a single line comment.
多行注释:
#*
Thus begins a multi-line comment. Online visitors won’t
see this text because the Velocity Templating Engine will
ignore it.
*#
文档格式:
#**
This is a VTL comment block and
may be used to store such information
as the document author and versioning
information:
@version 5
@author
*#
References
在VTL 中有三种类型的references: 变量(variables) 、属性(properties) 、方法
(methods)。作为一个使用VTL 的页面设计者,你和你的工程师必须就references 的名
称达成共识,以便你可以在你的template 中使用它们。
Everything coming to and from a reference 被作为一个String 对象处理。如果有一
个对象$foo 是一个Integer 对象,那么Velocity 将调用它的toString()方法将这个对象
转型为String 类型。
变量
格式要求同java。
属性
例子:
$customer.Address
$purchase.Total
$customer.Address 有两种含义。它可以表示:查找hashtable 对象customer 中
以Address 为关键字的值;也可以表示调用customer 对象的getAddress()方法。
当你的页面被请求时,Velocity 将确定以上两种方式选用那种,然后返回适当的值。
方法
一个方法就是被定义在java 中的一段代码,并且它有完成某些有用工作的能力,例如
一个执行计算和判断条件是否成立、满足等。方法是一个由$开始并跟随VTL 标识符组
成的References,一般还包括一个VTL 方法体。例如:
$customer.getAddress()
$purchase.getTotal()
$page.setTitle( “My Home Page” )
$person.setAttributes( [“Strange”, “Weird”, “Excited”] )
前两个例子$customer.getAddress()和$purchase.getTotal()看起来挺想上面的
属性$customer.Address 和 $purchase.Total。如果你觉得他们之间有某种联系的
话,那你是正确的。
VTL 属性可以作为VTL 方法的缩写。$customer.Address 属性和使用
$customer.getAddress()方法具有相同的效果。如果可能的话使用属性的方式是比
较合理的。属性和方法的不同点在于你能够给一个方法指定一个参数列表。
正式reference标记
reference 的正是格式如下:
${mudSlinger} 变量
${customer.Address} 属性
${purchase.getTotal()} 方法
非正是格式更见常用,但是有时还是使用正是格式比较适合。例如:你希望通过一个变量
$vice 来动态的组织一个字符串。
Jack is a $vicemaniac.
本来变量是$vice 现在却变成了$vicemaniac,这样Veloctiy 就不知道您到底要什么了。
所以,应该使用正是格式书写
Jack is a ${vice}maniac
现在Velocity 知道变量是$vice 而不是$vicemaniac
Quiet reference notation
例如:
<input type=”text” name=”email” value=”$email” />
当页面的form 被初始加载时,变量$email 还没有值,这时你肯定是希望它能够显示一个
blank text 来代替输出”$email”这样的字段。那么使用quiet reference notation 就比
较合适。
<input type=”text” name=”email” value=”$!email”/>
这样文本框的初始值就不会是email 而是空值了。
正式和quiet 格式的reference notation 也可一同使用,像下面这样:
<input type=”text” name=”email” value=”$!{email}”/>
相关推荐
### Velocity简介与精确解析 **Velocity**是一种基于Java的模板引擎,主要用于动态页面的生成,尤其是在Web应用开发中。它允许开发人员将业务逻辑与显示层分离,使得代码更加清晰和易于维护。Velocity通过简单的...
### jsp、freemarker、velocity简介和对比 在Java Web开发领域,模板引擎是连接后端业务逻辑与前端展示层的重要桥梁。本文将重点介绍三种常用的Java Web模板引擎:JSP(Java Server Pages)、Freemarker以及...
**Velocity简介** Velocity是Apache软件基金会的一个开源项目,它是一个基于Java的模板引擎,用于生成动态网站内容。Velocity被设计成一个轻量级的、快速的、非侵入式的模板语言,使得开发者能够将HTML页面的展示...
l velocity 简介 l 快速入门 l vtl 模板语法 l 代码生成器案例 第二部分 : velocity tools 高级进阶 l velocity tools 介绍 l GenericTools使用 l Velocity View 使用 l 自定义tools工具类 l springmvc整合...
Velocity简介 Velocity是由Apache软件基金会开发的一个开源项目,它最初设计用于生成静态网站内容,但后来被广泛应用于各种Java应用中,如电子邮件模板、报告生成、XML文档构建等。Velocity的核心理念是“分离展示...
** Velocity简介 ** Velocity是Apache软件基金会下的一个开源项目,它是一个基于Java的模板引擎,主要用在Web应用中生成动态内容。Velocity通过简单的语法,将业务逻辑与表现层分离,使得开发者可以专注于业务逻辑...
**Velocity简介** Velocity是一款开源的Java模板引擎,它允许开发者将HTML页面的呈现逻辑与业务逻辑分离,使得网页设计人员可以专注于页面的布局和样式,而程序员则专注于编写应用程序的后端逻辑。Velocity由Apache...
** Velocity简介 ** Velocity作为Apache软件基金会的一个开源项目,是一个用于生成动态Web内容的模板引擎。它的设计目标是使开发者可以专注于内容,而不是HTML布局。Velocity模板语言(VTL)简单易用,支持条件语句...
** Velocity简介 ** Velocity是一个强大的模板引擎,它的设计目标是使开发者能够专注于内容和结构,而不是HTML或其他标记语言的细节。通过Velocity,程序员可以在模板中引用Java对象,模板则负责将这些对象的属性...
#### 一、Velocity简介与应用场景 Velocity是一种基于Java的模板引擎,其主要作用在于简化Web应用程序的开发过程。该工具能够帮助前端开发者轻松地引用后端Java代码中定义的方法,实现前后端开发的并行化,提高了...
# Velocity简介及简单示例 Velocity是Apache软件基金会下的一个开源项目,它是一个基于Java的模板引擎,主要用于生成动态Web内容。Velocity通过简单的语法和强大的数据整合能力,使得开发者能够将注意力集中在数据...
#### 一、Velocity简介与环境搭建 **Velocity**是一种基于Java的模板引擎,用于生成动态HTML页面或其他文本格式的文档。它提供了一种简单而强大的方式来分离业务逻辑与显示逻辑,使得开发者能够更专注于业务处理,...
**Velocity简介** Velocity是Apache软件基金会的一个开源项目,它是一个基于Java的模板引擎,用于生成动态Web内容。Velocity通过将内容展示与业务逻辑分离,帮助开发者专注于内容的编写,而无需关心HTML或者其他...
一、Velocity简介 Velocity是一个Java模板引擎,它的设计目标是将呈现逻辑从应用业务逻辑中分离出来。通过使用简单的语法, Velocity允许开发者在HTML、XML或其他类型的文档中插入Java代码,使得模板和业务逻辑解耦...
#### 一、Apache Velocity简介 Apache Velocity 是一款基于 Java 的模板引擎,由 Apache 软件基金会维护和支持。它主要应用于 Web 应用开发领域,用于实现视图层(View Layer)的逻辑处理。通过 Velocity,开发者...
**Velocity简介** Velocity是一款强大的Java模板引擎,由Apache软件基金会开发并维护,是Apache Jakarta项目的一部分。它旨在将呈现逻辑从应用程序代码中分离出来,使开发者可以专注于业务逻辑,而设计师则可以专注...
**一、Velocity简介** Velocity的核心概念是模板语言,它通过特殊的指令(称为Velocity模板语言,VTL)来控制内容的生成。VTL是设计用来嵌入到HTML或其他类型的文档中的,这样就可以在运行时根据数据动态生成文档。...