学习如何扩展 XML 模型,从而使用来自应用服务器的 XML 数据创建富客户机。了解如何使用 Dynamic HTML(DHTML)显示 XML 数据,用 XPath 进行导航,用 Document Object Model(DOM)修改 XML 数据、序列化并返回给应用服务器。
Web 2.0 日益流行在很大程度上是由于当代 Web 浏览器有很强的灵活性。这些浏览器使用 Ajax 与服务器通信来交换 XML 数据,然后利用 DHTML 在 XML 中导航并将数据显示给用户。浏览器的强大功能使它们能够作为基于 Web 的应用程序中的瘦客户机。
以这些技术为基础,产生了许多新技术和项目来满足 Web 2.0 的需要。新的辅助库(比如 Dojo 和 Sarissa)可以简化使用 XML 的过程,还增加了对 Scalable Vector Graphics(SVG)的支持。为了满足 Web 2.0 的需要,还开发了可嵌入的小部件(比如 Google 和 Yahoo Maps)、数据联合和集成方法(比如 RSS 和 Atom feed)以及使用数据 mashup 的新型开发方式。
如图 1 所示,连接所有这些技术的都是 XML。提要中的 XML 使提要能够通过网络发布和接收复杂的数据结构。DHTML 中的 DOM 应用程序编程接口(API)和 Sarissa 中的 XPath 支持可以在客户机中执行高效的 XML 导航,从而进行读写操作。
注意:在以提要和服务形式查看数据源的 Web 2.0 环境中,数据库驱动程序扩展为支持 REST、FEED 和 SOAP 调用。如果解决了安全隐患,就能够从应用服务器和 Web 客户机使用 SOAP 或 REST 调用直接访问数据库例程,而不必创建不必要的映射。在下一篇文章中,将为 DB2® 创建一个 SOAP 驱动程序示例。
因为许多 XML 周边技术在应用服务器和客户机上都存在,所以也可以将 第一篇文章 中的 XML 数据模型扩展到客户机。在本文中,学习如何扩展 XML 模型,从而使用来自应用服务器的 XML 数据创建功能丰富的客户机。了解如何使用 DHTML 显示 XML 数据,用 XPath 进行导航,用 DOM 修改 XML 数据、序列化并返回给应用服务器。
与在应用服务器中创建的 DOM 包装器相似,我们将为客户机创建一个 DOM 包装器。这个包装器不但将 JavaScript. 显示和业务逻辑代码与 DOM API 隔离开,还使代码与应用服务器层中的 Java ™ 代码非常相似。为此,我们将使用开放源码库 Sarissa,这个库为浏览器中运行的 JavaScript. 代码提供了 XPath API。本文后面提供了包装器代码(见 下载)。
下面几节继续使用本系列前几篇文章中的保险示例(见 参考资料)。Web 客户机提供以下功能。
1. 允许用户查看和修改个人信息中的名字和姓氏。
2. 根据用户选择的保险公司,计算购买的每个商品的保险费率。
一定要注意:本文和前几篇文章中的代码只用于解释概念。只有解释 XML 模型的部分编写了完整的代码。逻辑的其他部分是伪代码,读者可以推导出功能所需的标准代码。下一篇文章讨论一个完整的业务场景,包含完整的代码。
从应用服务器获得客户信息并在客户机上显示。
客户机 JavaScript. 代码
profilediv 用来将从 XML 数据创建的 HTML 字符串显示给用户。
当用户登录站点时,输入客户 id(cid)。当用户在客户机中选择 Update profile 时,将这个客户 id 传递给 getCustomerInfo 函数。客户机使用 Sarissa 库提供的 XMLHttpRequest API 向服务器发送一个 HTTP 请求。在这个请求中,还定义回调函数。当服务器产生响应时,会调用函数 customerInfoCallback。清单 1 演示如何获取客户信息:
|