由于项目IBR的前台要用到Velocity模板,所以……come on
按照以往的套路来:
1 下载jar http://velocity.apache.org/download.cgi
目录及文件说明:
Velocity-X.jar 完整的velocity jar 包一般命名格式为velocity-X.jar,其中X 是当前版本号。
SRC:完整的源文件代码目录
Examples. 完整的aplication 或web App 例子。
docs :Veocity 文档目录
build: 使用ant 编译源码时所需的lib.
. OK,现在就可以开始使用了.请将Velocity-x.jar 放到你的classpath 中或webapp 的lib 下。
2 大体介绍
Velocity 是一处基于java 语言的模板引擎, 使用这个简单、功能强大的开发工具,可以很容易的将数据对象灵活的与格式化文档组装到一起;希望本文能指引使用velocity 在开发基于servlet 或一般java 应用程序的应用上快速起步。
3 它是如何工作的?
在application program 或servlet 中使用Velocity 中,一般通过如下步骤:
1. 对于所有应用,第一步是要初始化Velocity, 一般使用唯一实例模式(Singleton),如
Velocity.init().
2. 创建一个Context object.
3. 将你的数据对象加入到Context 对象中.
4. 使用Velocity 选择一个模板.
5. 合并模板和数据导出到输出流.
先来看个例子:
例子1
myTemplate.vm文件:
hello $name
将这个文件放在项目根目录下下:
代码:
public class Single { public static void main(String[] args) throws Exception { Velocity.init(); VelocityContext ctx = new VelocityContext(); ctx.put("name", new String("world")); Template tem = null; tem = Velocity.getTemplate("myTemplate.vm"); StringWriter writer = new StringWriter(); tem.merge(ctx, writer); System.out.println(writer.toString()); /* 输出流输出到文件*/ PrintWriter filewriter = new PrintWriter(new FileOutputStream("E:/i.html"), true); filewriter.print(writer.toString()); filewriter.close(); } }
hello world
因为$name已经被world所替代!
以上是基本的使用模式,看起来非常简洁!这些都是一般情况下使用Velocity 所必须的步骤. 但你可能不想这样按部就班的编写代码–Velocity 提供了一些工具以更容易的方式在servlet 或应用程序中使用。在这个指南的后面, 我们将讨论在servlet 和普通应用程序中更好的用法.
4.单实例还是多实例
(1).Singleton Model
这是系统默认的模式, 这样在jvm(应用程序)或web aplication(一个web 程序)中只存在一个Velocityengine 实例共享使用。. 这对于配置和共享资源来说非常方便. 比如, 这非常适合用于支持Servlet2.2+ 的web application 中,每一个web app 持有它自己的唯一Velocity 实例, 它们可以共享templates, a logger 等资源. Singleton 可以直接通过使用org.apache.velocity.app.Velocity 类,
如下例子:
Velocity.setProperty( Velocity.RUNTIME_LOG_LOGSYSTEM, this);
Velocity.init();
Template t = Velocity.getTemplate("foo.vm");
(2).Separate Instance
在1.2 版本以后, 可以在JVM (or web application.)创建,配置,使用多个Velocity 实例;当你希望在同一程序中,对每个实例独立配置时它们的template directories, loggers 等资源时,这是非常方便的. 多实例化时,我们要用到org.apache.velocity.app.VelocityEngine 类. 下面是一个例子,请注意和上面singleton example 同法时的不同:
VelocityEngine ve = new VelocityEngine(); /* * configure the engine. In this case, we are using * ourselves as a logger (see logging examples..) */ ve.setProperty( VelocityEngine.RUNTIME_LOG_LOGSYSTEM, this); /* * initialize the engine */ ve.init(); ... Template t = ve.getTemplate("foo.vm");
对于开发人员而言, 你应在以下两个类中二者择一的使用
org.apache.velocity.app.Velocity 应用于singleton model,
org.apache.velocity.app.VelocityEngine 一般用于non-singleton model ('separate instance').
继续下一篇。。。。