不宜使用 JSP 技术的情形
尽管JSP技术广受欢迎,但它却不是唯一选择。而且,也有一些充分的理由不使用这项技术。在 Servlets.com 上的一篇文章中,Jason Hunter 指出了 JSP 环境的七个问题(参阅参考资料)。总结起来,那些问题是:
· 将(原始 Java 代码形式的)业务逻辑置于页面上的诱惑很大。
· 大多数普通任务的性能需要 java 代码。
· 简单的任务很难,因此,非 Java 设计者无法执行这些任务。
· JSP 环境中的循环很笨拙 — 定制标记令人信服地解决了这一问题。
· 会出现无用的错误消息。
· JSP 编程需要 Java 编译器。
· 生成的中间servlet浪费了空间。
注:自 Jason 最初写这篇文章以来,JSP技术规范已经经历了两次修订,上面的一些问题已经得到了部分解决。然而,JSP 技术仍然有其不足。
除了 Jason 列举的那些问题之外,我也想补充 JSP 技术的另一个问题:
· 很轻易由于部署一个带有错误的 JSP 页面而无意中破坏网站中的某个页面(或多个页面)。
· 一些模板引擎已经被开发出来以替代 JSP 技术。它们包括 WebMacro、Velocity、Enhydra xmlC 以及本文的主题——Tea。
介绍 Tea
Tea 是一种简单的模板语言,它已由 Walt Disney Internet Group(WDIG)作为开放源码发布。Tea 是 Disney 的许多网站背后的技术选择,这些网站包括 ESPN.com、Disney.com 和 ABCNews.com。
Tea 的目标是提供简单安全的模板引擎以便用最少的错误构建高度动态的网站。这一目标是通过最少的编程构造和更简单、更不易混淆的语言机制来实现的。Tea 留给我们的是类似于 Html 但动态性一样高的语言。由于 Tea 的简单性,Web 开发团队可以聘请专业性不太强的程序员——WDIG 称这样的人员为技术制作者——来制作站点的表示层。
使用 Tea 构建的网站有三种主要组件:
· TeaServlet
· 一个或多个 Tea 模板
· 一个或多个 Tea 应用程序
TeaServlet 是 Tea 模板编译器和执行引擎。它对于 Tea 模板就象 Tomcat 的 Jasper 对于 JSP 页面。TeaServlet 编译 Tea 模板(假如必要的话),在收到请求时执行它们。
Tea 模板是JSP页面的 Tea 等价物。然而,和 JSP 编程不一样,Tea 模板不经过到 Java Servlet 代码这一中间转换。相反,Tea 编译器直接将 Tea 模板编译成类文件。这是一项重要的差异,它直接解决了 Jason Hunter 的 JSP 问题列表中的第六和第七个问题,间接地解决了第五个问题(随后您将看到)。
Tea 应用程序是一种机制,通过这种机制使得业务逻辑可为 Tea 模板所用。Tea 应用程序通过 Tea 应用程序的上下文实现的 public 方法来暴露业务逻辑。这些方法可以作为可从任何 Tea 模板调用的函数获得。Tea 模板和 Tea 应用程序之间的交互类似于 JSP 环境中 JSP 技术和 JavaBeans 之间的交互。
安装 Tea
Tea 和 Tomcat
在为本文编写代码时,我使用 Jakarta Tomcat 4.0.4 作为我的 servlet 容器。这些安装指示信息假定您正在使用 Tomcat 4.0.4 作为您的 servlet 容器,还假定 Web 应用程序名为“teademo”。您的安装可能会有些变化,这取决于您对服务器的选择以及 Web 应用程序名称。
可以从网址为http://opensource.go.com 的 WDIG 网站下载 Tea,它可以以 Apache 样式许可证获得。除了其它内容以外,分发版中包含 TeaServlet.jar 文件,它组成了 Tea 引擎。您也可以在 WDIG 的网站上找到一个名为 Kettle 的用于 Tea 的 IDE,不过我在本文中不讨论 Kettle。
下载了 TeaServlet.zip 文件之后,将其解压缩然后把 TeaServlet.jar 文件移到 Tomcat 的webapps/teademo/WEB-INF/lib 目录。
新闻热点
疑难解答