首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Ajax >

[转]面临 Java 开发人员的 Ajax: Ajax 的 Java 对象序列化

2012-12-22 
[转]面向 Java 开发人员的 Ajax: Ajax 的 Java 对象序列化http://www.ibm.com/developerworks/cn/java/j-a

[转]面向 Java 开发人员的 Ajax: Ajax 的 Java 对象序列化

http://www.ibm.com/developerworks/cn/java/j-ajax2/

在这个系列的?第一篇文章?中,我介绍了 Ajax 的构造块:

  • 如何用 JavaScript?XMLHttpRequest?对象从 Web 页面向服务器发送异步请求。
  • 如何用 Java servlet 处理和响应请求(向客户机返回 XML 文档)。
  • 如何在客户端用响应文档更新页面视图。

    这一次,我将继续讨论 Ajax 开发的基础知识,但是将侧重于许多 Java Web 开发人员最关心的问题:为客户机生成数据。

    多数 Java 开发人员已经把模型-视图-控制器(MVC)模式应用在他们的 Web 应用程序上。在传统的 Web 应用程序中,视图组件由 JSP 或者其他表示技术(例如 Velocity 模板)构成。这些表示组件动态地生成全新的 HTML 页面,替代用户以前正在查看的页面,从而更新用户界面。但是,在 Java Web 应用程序使用 Ajax UI 的情况下,基于从?XMLHttpRequest?的响应接收到的数据,JavaScript 客户端代码对于更新用户看到的内容负有最终责任。从服务器的角度来看,视图成为它响应客户机请求而发送的数据表示。

    这篇文章侧重于可以用来生成 Java 对象以数据为中心的视图的技术。我将演示可以把 JavaBeans 变成 XML 文档的各种方法,并且讨论每种方法的优劣。您将看到为什么 XML 并不总是最好的途径:对于简单的 Ajax 请求来说,传输纯文本更好。最后,我将介绍 JavaScript 对象标注(JSON)。JSON 允许数据以序列化的 JavaScript 对象图的形式传输,在客户端代码中处理序列化的 JavaScript 对象图极为容易。

    虽然?XMLHttpRequest?对于发送数据使用的格式没有做任何限制,但是对于多数目的来说,只发送传统的表单数据是适合的,所以我的讨论集中在服务器的响应上。响应也可以有基于文本的格式,但是正如它的名字表示的,XMLHttpRequest?具有内置的处理 XML 响应数据的能力。这使 XML 成为 Ajax 响应的默认选择,所以我们从 XML 格式开始讨论。

    ?

    ?

    这个简洁的模板只输出订单历史视图需要的数据,不输出不相关的资料(例如商品说明)。创建产品搜索视图的定制 XML 应当同样简单,这个视图包含每个商品的完整说明和库存水平。

    ?

    既然 JSON 是一个有趣的语言特性,那么它对 Ajax 有什么意义呢?妙处在于可以用 JSON 在 Ajax 服务器响应中通过网络发送 JavaScript 对象图。这意味着在客户端可以避免使用笨拙的 DOM API 对 XML 进行导航 —— 只需要分析 JSON 响应,就会立即得到可以访问的 JavaScript 对象图。但是,首先需要把 JavaBean 变成 JSON。

    ?

    比较清单 11 和?清单 5?可以发现使用 JSON 的客户端的优势。如果在 Ajax 项目中要在客户端对许多复杂的服务器响应进行导航,那么 JSON 可能适合您的需要。JSON 和?XMLHttpRequest?结合还会让 Ajax 交互看起来更像 RPC 调用而不是 SOA 请求,这对应用程序的设计可能会有意义。在下一篇文章中,我要研究的框架,就是明确地为了让 JavaScript 代码对服务器端对象进行远程方法调用而设计的。

    结束语

    表 1 中的数据并不表明某项序列化技术比其他的技术好。毕竟,六种标准的相对重要性取决于项目的具体情况。例如,如果要处理数百种数据类型,这时想要的是可伸缩性,那么代码生成可能就是最好的选择。如果需要为同一数据模型生成多个不同视图,那么就应当使用页面模板。如果处理的是小规模项目,想降低需要编写的 JavaScript 代码数量,那么请考虑 JSON。

    希望这篇文章为您提供了选择适合自己应用程序的序列化技术所需要的信息。请参阅?参考资料?一节,学习关于这里讨论的技术的更多内容。您还应当继续关注这个系列的下一篇文章,在下一篇文章中,我将介绍如何用直接 Web 远程(DWR)编写 Java Ajax 应用程序。DWR 框架支持从 JavaScript 代码中直接调用 Java 类上的方法。换句话说,它替您负责数据序列化的工作,所以您可以在更高的抽象层次上使用 Ajax。

热点排行