JSP技术单处理和多任务处理
如前所述,理想状态下,设计师应该能够执行单独处理,只关注图形设计,而开发人员应该能够将注意力集中在编程上。因此,设计师可以在将页面转换为适合应用程序的格式后,再对其进行处理。对于 JSP 页面来说,将页面转换为适合应用程序的格式就是指向页面导入 JavaBeans、插入内联编码并添加自定义标记库。问题是有些设计师使用的是 HTML 编辑器,比如 HoTMetaL、Macromedia Dreamweaver 或 FrontPage,这些编辑器无法识别代码 scriptlets 或标记库,这意味着设计师实际上只收到了页面的一部分。想象一下,标记库或代码片段只生成了表的若干行,或是页面中其他格式化的细节,这是多么麻烦的事情。设计师使用了不兼容的 HTML 编辑器,无法看到这些元素的外观。在开发人员完成编码后,设计师不能轻松地对页面进行修改,这时,不仅没有清晰地划分角色,JSP 编码实际上将这两种角色合二为一:开发人员必须执行多个任务,必须担当开发人员、设计师以及其他角色。
如果您仍然对此表示怀疑,那么请下载 J2EE Reference Implementation 并将其中一个附带的 JSP 页面加载到一个 WYSIWYG HTML 编辑器,例如 Dreamweaver.页面立即被一些黄色区域填充,告诉您页面中包含的所有 “错误” 标记。当然,黄色内容来自于 JSP 标记和代码,而不是页面出现了什么真正的错误。
迄今为止,尚未出现支持 JSP 功能的 WYSIWYG 编辑器,我也没有听说过任何与此相关的项目。尽管模板引擎也具有相同的问题,但是很多基于 Java 的解决方案,例如我最喜欢的 Enhydra,都允许您将标记页面作为输入提供给表示技术。在这种情况下,设计师可以根据需要频繁地进行修改,并重新提供标记页面。运行表示技术的引擎或编译程序将标记页面转换为适当的格式,并且不需要修改任何代码(典型情况下)。最终获得了理想的结果:设计师和开发人员各司其职。
因此,要注意 JSP技术作出的承诺和它实际交付的实现。在实际中,要在一个 JSP技术驱动的环境下发挥功效,必须让开发人员处理大部分标记,或至少让设计师学习一些 JSP 编码。
HTML和XML
JSP技术最严重的缺陷之一(也是经常被忽视的一个缺陷)就是它与 XML 不兼容。更确切地说,并且特别针对 HTML 领域,JSP 页面不要求具备 XHTML 兼容性。XHTML 是一个 World Wide Web Consortium (W3C) 规范,目前正在取代 HTML 4.0.XHTML 在实现格式良好的 XML 文档方面定义了 HTML 标记集。例如,<br> 标记必须被转换为 <br/> 才能确保 XML 兼容性(如果这个例子没有解释清楚的话,可以查阅 参考资料 列出的 XML 规范,以及关于 XHTML 的 developerWorks 文章)。同样的规则适用于图像标记,并且在 XHTML 1.1(即将到来)中,大部分字体属性和其他样式被移入到 CSS 样式表中。另外,大多数标准 HTML 文档可以轻松地转换为 XHTML 1.0,这意味着可以使用任何与 XML 兼容的解析器读取,例如 Apache Xerces,并且可以作为 XML 进行处理。
您会问 “这有什么关系呢?”。答案是关系重大。因为 XML 正在快速成为一个在应用程序之间和应用程序内部进行通信的全球标准。使用 XML 格式传递书籍,可以让任何使用基本 XML 数据绑定功能的应用程序轻松地使用您的应用程序的数据。想象一下,通过将您的数据迁移到 XML 格式,您就可以与信用卡公司进行网上交易!多数情况下,您的数据表示还需要与其他公司进行交互。最常见的情况是门户应用程序,它接受来自各种提供者的内容(例如,天气信息、股票报价和新闻),通常附带有提供者的标记。然而,由于 JSP 页面将代码和自定义标记库相混合,因此无法在这种环境下良好地工作。
JSP 页面很少具有格式良好的 XML 文档,并且不重视是否符合 XHTML,而 XHTML 这种标记语言并不允许使用各种 JSP 自定义标记库。然而,更重要的是,插入到 JSP 页面的代码片段并不属于任何标记形式,因此当另一个应用程序处理它们时,将产生解析器加载错误。
在您提出质疑之前,让我们先了解一下整个情况。如果应用程序允许 JSP 页面由初始客户机处理,结果将产生纯 HTML(或 WML、VoXML 等)。然而,大多数请求这个数据的应用程序使用了一定程度的缓存,因为网络往返开销很昂贵。在这些情况下,缓存过的页面将返回过时的数据。因此,您可能更愿意返回与 XML 兼容的结果,最好使用静态的形式。而 JSP技术在这些情况下无能为力;JSP 页面必须始终 在运行时进行处理,以去掉 JSP 代码 scriptlets 和标记库。
看看最关键的考验:其他一些表示技术能做到这一点吗?答案是可以。这个领域最权威的领导者是 Apache Cocoon 项目,它完全建立在 XML 和一个 XSLT 样式表应用程序(可以在运行时或静态状态下应用)的基础之上。由于 XML Server Pages(在 Cocoon 框架中称为 XSP)实际上是 XML 文档,因此始终与 XML 兼容。像 Tea 和 Enhydra XMLC 等允许输入纯标记语言页面的技术也可以做到这点,虽然它们的目的并不在此。在这些情况下,用户可以使用 XHTML 或标准的 HTML.此外,这比 JSP技术要好,因为 JSP 不能 静态地实现格式良好的 XML.