- 7
- 0
- 约1.98万字
- 约 8页
- 2017-12-16 发布于河南
- 举报
使用 Velocity 实现客户端和服务器端模板
使用 Velocity 实现客户端和服务器端模板
灵活的模板引擎为 JSP 技术提供一种没有遗产负担的选择
文档选项
将此页作为电子邮件发送
未显示需要 JavaScript 的文档选项
级别: 初级
Sing Li (westmakaha@), 作家, Wrox Press
2004 年 3 月 13 日
Velocity 是一种通用的、开放源代码的模板解决方案,可以在报告生成/数据转换应用程序中独立使用,也可以在 MVC 模型框架中作为视图组件。本文中,Sing Li 介绍了 Velocity,并说明如何将其模板处理功能集成到客户端独立应用程序、服务器端 Web 应用程序或者 Web 服务中。
在 HTML 或者 XML 这样的标准表示或交换格式中,文本性数据的操作和转换是一种频繁而且通常非常单调的活动,每个开发人员都会遇到。模板引擎可以改善这个过程,它在模板中保留输出中的静态部分,而动态生成和安排变化的部分。Velocity 是一种高度实用的、开放源代码的模板引擎,可以方便地集成到其他客户端或服务器端应用程序中。
对于服务器端应用程序,如果与兼容 Servlet 2.3+ 的 Web 层容器集成,Velocity 为 JSP 技术提供了一种可行的替代方案,可以强制实施表示逻辑与应用程序业务逻辑的清晰划分。事实上,Velocity 支持的模板语言非常简单,形成的模板也十分清晰,Web 站点设计人员和样式开发人员可以学习和维护这些模板。
本文中将考察 Velocity 的简单模板语言、创建一些模板并将其用于独立的客户应用程序。然后我们将把这个模板引擎集成到 Struts MVC 框架中作为视图组件。
基本模板引擎操作
基本模板引擎操作非常简单。首先看一看清单 1 中的模板:
清单 1. 基本的 Velocity 模板
html
head
titleA Template Based Page/title
/head
body
pThis is a page generated by $generatedBy./p
pThe customers name is $customerName./p
/body
/html
这个模板是一个完整的 HTML 文件。您可以使用文本编辑器或者喜欢的图形化可视网页编辑器创建该文件。创建的简易性是基于模板的系统的主要好处和要求。
当模板引擎运行时,清单 1 中彩色显示的部分将被实际的数据替换。获取数据并与模板结合的过程称为 合并。看一看清单 2 中的脚本所表示的数据:
清单 2. 为模板合并设置数据值
#set ($generatedBy = Velocity)
#set ($customerName = John Doe)
现在,如果清单 1 中的模板与清单 2 中的数据合并,将得到清单 3 所示的结果:
清单 3. 合并到模板中的数据
html
head
titleA Template Based Page/title
/head
body
pThis is a page generated by Velocity./p
pThe customers name is John Doe./p
/body
/html
您可能发现,这种特性和字处理程序中的邮件合并功能类似。在字处理程序中,信函结构与来自邮件列表的名称和地址合并。和邮件合并一样,这种应用程序最适用于要合并的数据源非常大而且有变化的情况。
从这个单纯的意义上讲,Velocity 是一个模板引擎。Velocity 的输出格式仅受文本模板中所能放置的内容的限制。包括现在最流行的格式(HTML、XML、SQL,等等)。
使用 Velocity 模板语言创建模板
Velocity 模板是文本文件(HTML、XML 等等),其中包括:
照原样合并的静态部分
将被要合并的数据替代的占位符
脚本语言中的指示符和指令
Velocity 模板使用的脚本语言称为 Velocity 模板语言(VTL)。和其他脚本语言相比,VTL 语法相对而言不是很丰富。任何具有编程背景的人都可以非常快地学会 VTL。
占位符与引用
VTL 中的引用是一个命名元素,如 $customerName 。引用可以在 Velocity 模板中作为占位符。在模板合并过程中,这些占位符将被替换成相应的文本值,从而形成最终的输出。比如,在 清单 1 中,我们可以看到使用了两个 VTL 引用( $generatedBy 和 $customerName )已生成最终输出结果。
变量在 VTL 中是一种引用类型。您可以使用 #set() 指示符为变量赋值。清单 4 给出了一些例子:
清单 4. 变量类型的 VTL 引用
#set( $this = Velocity
原创力文档

文档评论(0)