快速业务通道

使用Velocity实现客户端和服务器端模板 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-16
件: velocity-dep---?.jar (其中的 --? 是版本号信息)和 velocity---?.jar 。velocity-dep---?.jar 文件包括所有的外部依赖(Jakarta common-collections、Avalon Logkit 和 ORO 正则表达式库),可以直接使用。如果您的 classpath 中已经有一些这样的库,您可能希望使用 velocity---?.jar 文件来代替。如果这些 JAR 组成都不能满足您的需要,可以很容易地按照需要的方式重新建立 Velocity。Velocity 发行包中包括一个 ant 脚本,可以为不同的应用场景建立 7 种不同的 JAR 配置。

为了便于上手,Velocity 预设了一些默认配置属性,对于多数应用而言,这都是合理的和可以接受的。这就避免了开发人员从一开始就忙于复杂的配置选项,让他们能马上体验到这种模板引擎。

服务器上的 Velocity 与 JSP 技术

在服务器端可以使用 Velocity 处理模板和生成的动态内容(HTML、XML等)。这和 JSP 技术的目标非常接近。但是,JSP 模型可以毫无阻碍地访问底层的 Servlet API 和 Java 编程语言。事实上,为了避免访问这些固有的特性,您在编码中必须严格约束(只是使用 EL、标签库和类似的特性)。它基本上是一种在很大程度上开放的访问模型。

拿 Velocity 与之比较。作为一种完全自包含的模板引擎和脚本解释器,Velocity 拥有完全封闭的模型。任何针对系统和/或 Java 编程语言的访问都必须明确地启用。默认情况,Velocity 模板中不能访问 Java 编程语言的任何方面。这种封闭的模型使 Velocity 能够提供分离的模板表示层,与任何应用程序业务逻辑或者数据管理代码清晰地划分开。

现在让我们把这种模板引擎与 Tomcat 5 的最新版本集成在一起,看一看 Velocity 在服务器端的应用。

与 Tomcat 5 一起部署 Velocity

Velocity 发行包带有一个 org.apache.velocity.servletVelocityServlet 库类,扩展它可以很快地创建一个模板处理 servlet。作为独立的客户机应用程序测试的任何模板都可以使用 VelocityServlet 部署在服务器上。把独立的 Velocity 模板转移到 Web 应用程序中相对比较简单。只需要以下几个步骤:

Velocity 中的工具

工具是在模板中可以通过 Velocity 上下文使用的实用 Java 对象。虽然可以手工把这些对象附加到上下文中,但 VelocityViewServlet 工具箱管理器可通过更加灵活和结构化的方式完成。在模板中一般是通过调用工具的方法来使用它们。VelocityViewServlet 与 VelocityStruts 都提供了非常有价值的经过测试的工具,在作为一种视图技术部署 Velocity 时极其有用。

从 org.apache.velocity.servlet.VelocityServlet 类派生一个 Servlet 类。

重写并实现其中的一个 handleRequest() 方法。

在 handleRequest() 的实现中,添加希望在模板中作为上下文属性使用的数据或工具(请参阅 Velocity 中的工具)。

在 handleRequest() 的实现中,从文件或资源(如 JAR 文件)中取得模板并返回它。

在示例代码包中, com.ibm.dvworks.velocity.VelTestServlet 就是按照上述步骤创建的一个 servlet。您可以查看 webapps\vservlet\WEB-INF\src 目录下的代码。如果改变了这些代码,一定要使用 compile.bat 批处理文件重新编译它。

部署描述符(web.xml 文件)定义了该 servlet 并把它映射到 /vServlet URL 模式中,如清单 19 所示:

清单 19. 自定义基于 Velocity 的 servlet 的 Tomcat 部署描述符

<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE web-app     PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"    "http://java.sun.com/dtd/web-app_2_3.dtd"> <web-app>   <servlet>    <servlet-name>vServlet</ser

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号