velocity的开发指南 (一)

2014-11-24 11:27:38 · 作者: · 浏览: 43
1.开始入门
Velocity是一基于java语言的模板引擎,使用这个简单、功能强大的开发工具,可以很容易的将数据对象灵活的与格式化文档组装到一起;希望本文能指引使用velocity在开发基于servlet或一般java应用程序的应用上快速起步。
1.Getting Started
取得Velocity并在你的机器上开始运行很容易,以下是全部详细的说明:
取得Velocity发布版本,go here。
目录及文件说明:
Velocity-X.jar 完整的velocity jar包一般命名格式为velocity-X.jar,其中X是当前版本号。注意这个jar包不包含Velocity所必须依赖的其它jar包(具体见后)。
SRC:完整的源文件代码目录
Examples. 完整的aplication或web App例子。
docs :Veocity文档目录
build: 使用ant编译源码时所需的lib.
OK,现在就可以开始使用了.请将Velocity-x.jar放到你的classpath中或webapp的lib下。
当然,我们强烈建议你先运行其中的例子,以感受Velocity的优异之处.
2.Dependencies 依赖资源
Velocity可运行于JDK1.4或JRE1.4及其以上版本.
Velocity也依赖于其它一些jar包,在分发版本的 build/lib 有,如果你下载的是二进制分发版本,需要到以下地址下载其它依赖包.
Jakarta Commons Collections – 必须.
Jakarta Avalon Logkit – 可选,但强列建议加上,以便输出日志信息.
Jakarta ORO – 可选,仅当用到org.apache.velocity.convert.WebMacro template 这个模板转换工具时.
2.参考资源:
一些优秀的资源和例程列表如下:
开发者邮件列表 mail-lists.
邮件档案表 : http://www.mail-archive.com是很好的一个资源库.可以以’Velocity’为关键字进行搜索。
源代码(源码分发版本) : src/java/... : 含有Velocity project的所有源码
应用程序例程1 : examples/app_example1 : 一个很简单的示例如何在一般应用程序中使用Velocity.
应用程序例程1 2 : examples/app_example2 : 如何在应用程序中使用Velocity工具类.
servlet example : examples/servlet_example1 :示例如何在servlet中用Velocity 输出模板.
logger example : examples/logger_example : 如何定制Velocity的日志工具.
XML example : examples/xmlapp_example : 使用 JDOM 从 Velocity 模板读取内容. 还包含一个递归调用宏的示例.
event example : examples/event_example : 在Velocity 1.1 中使用事件处理API。
Anakia application : examples/anakia : 示例用stylesheet 美化 xml 数据。
Forumdemo web app : examples/forumdemo : 一个基于servlet的论坛功能实现示例.
templates : test/templates :全面展示VTL(Velocity Template Lanauage)功能的模板集合。
context example : examples/context_example : 两个示例如何重写(继承) Velocity context 功能的例子(针对高级用户).

3.它是如何工作的?
1.基本使用模式
在application program或servlet中使用Velocity中,一般通过如下步骤:
对于所有应用,第一步是要初始化Velocity, 一般使用唯一实例模式(Singleton),如Velocity.init().
创建一个Context object.
将你的数据对象加入到Context对象中.
使用Velocity选择一个模板.
合并模板和数据导出到输出流.
下面的代码,通过使用org.apache.velocity.app.Velocity的单实例模式,合并输出:

import java.io.StringWriter;
import org.apache.velocity.VelocityContext;
import org.apache.velocity.Template;
import org.apache.velocity.app.Velocity;
import org.apache.velocity.exception.ResourceNotFoundException;
import org.apache.velocity.exception.ParseErrorException;
import org.apache.velocity.exception.MethodInvocationException;

//初始化
Velocity.init();
//取得VelocityContext对象
VelocityContext context = new VelocityContext();
//向context中放入要在模板中用到的数据对象
context.put( "name", new String("Velocity") );
Template template = null;
//选择要用到的模板
try
{
template = Velocity.getTemplate("mytemplate.vm");
}
catch( ResourceNotFoundException rnfe )
{
// couldn't find the template
}
catch( ParseErrorException pee )
{
// syntax error : problem parsing the template
}
catch( MethodInvocationException mie )
{
// something invoked in the template
// threw an exception
}
catch( Exception e )
{}

StringWriter sw = new StringWriter();
//合并输出
template.merge( context, sw );

以上是基本的使用模式,看起来非常简洁!这些都是一般情况下使用Velocity所必须的步骤. 但你可能不想这样按部就班的编写代码 –Velocity提供了一些工具以更容易的方式在servlet或应用程序中使用。在这个指南的后面, 我们将讨论在servlet和普通应用程序中更好的用法.

4.单实例还是多实例(To Singleton Or Not To Singleton...)
1.Singleton Model
这是系统默认的模式, 这样在jvm(应用程序)或web aplication(一个web程序)中只存在一个Velocity engine实