论坛登陆 用户名:  密 码:
设为首页  加入收藏
08年北京名校秋季招生
名牌院校免试入学宽进严出,突破考分限制,名校与你零距离,以下院校按报名先后顺序录取,24小时网上报名覆盖全国
  您现在的位置: 中国教育招生在线 >> IT >> JAVA认证 >> IT正文
Velocity为Java Web应用开发“增速”
 作者:佚名     2007-3-14 17:34:20        来源:不详  浏览次数:

 

 

 

 

 

 

 

 

一、模板引擎有什么用?

简单地说,模板引擎的作用就是取得数据并加以处理,最后显示出数据。例如,假设有一个企业职工的清单,我们可以用模板引擎将它以HTML页面的形式显示在企业的Intranet上,或简化后显示在管理员的手机上。使用模板引擎的好处就在于开发者和设计者能够以最合适的方式操作和利用数据,Velocity就是一个模板引擎的绝佳范例。Velocity的英文含义是“速度、流通速度、速率;迅速,快速”,也许它的作者希望Velocity能够提高人们开发Web应用的速度吧。

Velocity是一个源代码开放的Java模板引擎,属于Jakarta项目的一部分,拥有一个活跃的开发者和用户社团。Velocity最初是为了改进WebMacro Servlet框架而构建的,发展到现在已衍生出各种非Servlet环境的用途。

Velocity的优点在于其简单的模板语法以及成功实现对内容和显示方式的分离。有了Velocity,开发者可以专注于程序代码,设计者可以专注于页面的布局和视觉效果,不必再担心要在模板中嵌入各种程序代码。

与传统的用JSP和PHP构造页面的方式相比,这显然是一大进步。在传统的JSP、PHP页面中,程序逻辑嵌入到Web页面中,从而为理解和维护Web页面带来很大的麻烦。Velocity模板引擎成功地解决了这一问题,它要求至少有两个文件来显示一个页面——即一个模板和一个Java类。下面我们通过一个简单的例子了解Velocity如何分离数据本身及其显示。

二、一个简单的例子

首先要下载和安装Velocity。Velocity的最新版本是1.3.1,本文的例子就使用这个版本的Velocity。下载好之后,解开压缩,把velocity-dep-1.3.1.jar加入到CLASSPATH。

通常,Velocity模板的文件后缀是“.vm”。下面我们要创建一个hellovelocity.vm模板文件,虽然很简单,但足以证明Velocity模板引擎是否正确安装,也足以显示出Velocity模板分离内容及其表现方式的一般过程。把下面这行代码加入hellovelocity.vm模板。

Hello $name, this is Velocity working!

保存hellovelocity.vm模板,然后再新建一个HelloVelocity.java文件,这两个文件最好放入同一目录下。下面是HelloVelocity.java的代码,它显示了在Java程序中调用Velocity模板引擎的一般过程。

import java.io.StringWriter;import org.apache.velocity.app.VelocityEngine;import org.apache.velocity.Template;import org.apache.velocity.VelocityContext;public class HelloVelocity{ public static void main(String[] args) throws Exception { /* 首先创建一个模板引擎的实例,并予以初始化 */ VelocityEngine engine = new VelocityEngine(); engine.init(); /* 接着,获得一个模板 */ Template template = engine.getTemplate( "hellovelocity.vm" ); /* 创建上下文,填充数据 */ VelocityContext context = new VelocityContext(); context.put("name", "World"); /* 现在,把模板和数据合并,输出到StringWriter */ StringWriter writer = new StringWriter(); template.merge( context, writer ); /* 显示结果 */ System.out.println( writer.toString() ); } }

准备好两个文件后,编译Java文件并运行。如果一切顺利的话,你可以看到下面的输出:

Hello World, this is Velocity working!

三、VTL语言及其应用

下面我们简单地分析一下这个例子。在模板文件中,唯一特别的部分是$name。$name是Velocity模板语言(VTL,Velocity Template Language)的一个变量,VTL利用这种方法将动态内容插入到静态文本之中。

在VTL中,所有变量标识符的开头要加上$字符,变量标识符被映射到稍后即将讨论的VelocityContext对象。在模板引擎处理模板时,变量名称(如name)被替换成VelocityContext中提供的值(如World)。顺便提一下,变量还可以用一种更加明确的方法表示,例如${name}。

当然,这只能算一个对VTL的极为简要、粗略的说明。实际上,VTL还有许多强大的功能,例如迭代列表、在模板内部创建变量,甚至还允许创建宏以实现自动化。

再来看看本例的Java代码。从上面的代码可以看出我们应该如何构造VelocityEngine对象并予以初始化,以及如何创建一个读取模板文件的Template对象。

完成这些准备工作后,我们接着创建一个VelocityContext对象,然后向这个对象插入数据。VelocityContext用一个HashMap来保存数据,这个HashMap的键总是来自模板的变量标识符,它的值可以是一个字符串,也可以是一个对象。后者充分显示出Velocity的强大功能,例如,假设有一个标识符为employee的Employee对象,且Employee对象有一个公用的getName方法,我们就可以在模板中以$employee.getName()的形式访问Employee对象内部的数据。

Employee对象可以通过访问数据库中的数据或其他办法创建,但Velocity根本不必了解这些细节,Velocity唯一关心的是要有一个创建好的Employee对象。相对于传统的JSP/PHP开发环境来说,Velocity的这一功能无疑带来很多方便。

很多人在Servlet框架下使用Velocity,但许多人发现,即使在其他环境下Velocity也很有用,Torque就是一个很好的例子。Torque是一个实现数据持久化的层,它能够根据XML配置文件自动生成SQL和Java代码,在生成代码的过程中,Torque要用到Velocity模板,从而实现了对多种不同数据库的支持。

另一个例子是Anakia,许多Jakarta项目用Anakia来创建文档。类似地,Anakia也要用到一个XML文件,它把XML文件和Velocity模板合并,从而得到最后的文档。这种处理方式方便了XML文件中的数据和模板文件中的显示方式的分离。

总地看来,Velocity非常适合于在现有代码项目的基础上改进应用的显示逻辑,因为对象的任何公用的方法都可以在VelocityContext中引用,从而可以在不修改现有的任何代码的前提下引入Velocity。模板和数据的分离方便了开发者和设计者的协作,使他们尽可能不依赖于对方。虽然你可以很快初步掌握Velocity模板语言,但就功能而言VTL并不寒酸,只要提供简单的模板,你就可以将数据以各种形式输出。


责任编辑:lss
  相关新闻
JSF经典视图技术-Facelets 实例解析
JSFToolbox--用Dreamweaver开发JSF
Java模板引擎Velocity基本语法
Spring VS. HiveMind
Wicket初次接触之HelloWorld
爽!我的Windows Server 2003学习体会
Exchange Server2003 故障诊断
VFP与EXCEL的几种交互编程方法
VFP表转换成SQL Server表的方法
在Exchange Server中建立邮箱审查索引
SQL Server对文件内容进行全文检索查询
爽!我的Windows Server 2003学习体会
通过MCDBA证书来验证你的SQL Server水平
Windows Server 2003“教父”访谈录
MCDBA 数据库设计学习BLOG
如何知道 SQL Server 2000 是不是适合你的?
在ORACLE中实现SELECT TOP N的方法
06年CCIE Lab更新实验设备和IOS版本
Wicket初次接触之HelloWorld
快速上手Spring--9.Lookup方法注入
  评论
现在有100人对本文发表评论
查看所有评论
 
推  荐
 
100本成功必读热销书
热门招生
  北京文理研修学院   前进大学
  北京明园大学   北京建设大学
  北京邮电大学世纪学院   北方工商管理学院
  联想软件定向委培班   香港数码动画学院
  青年企业管理研修学院   北京华夏管理学院
热门培训
网络化办公专家培训认证 电子科技大学软件学院
软件测试工程师培训认证 北大青鸟十大授权培训
IT硬件工程师培训认证班 北京环球雅思荷兰预科
JAVA开发工程师培训 潜能时代IT服务管理培训
网络信息化工程师培训 清华大学继续教育学院
论坛精选
 
有些细节是男人也该注意的风度!最容易读错的字
某强人手机里保存的30条短信 中国十大高薪职业
最感人的十大韩剧经典台词 嫁给工程师的N个理由
爆强!只有一句话的鬼故事 转贴教你如何做妖精
 女人一定要記住的話 女人最好别嫁给最爱的男人
城市联盟
 大连 上海 天津 广州 西安 深圳  天津  青岛  大连  福州  沈阳  青海  连云港  南京  吉林  厦门  威海  辽宁  呼和浩特
Copyright © 2006   www.edu999.com   All rights reserved. 中国教育招生在线  版权所有
北京市通信管理局[2004]字第552号函    京ICP证040442号