您现在的位置: IT专家网 > Web服务子站 > WebService领域
Ajax的Java对象序列
在这个系列中,介绍了Ajax的构造块:如何用JavaScript XMLHttpRequest对象从Web页面向服务器发送异步请求。 如何用Javaservlet处理和响应请求(向客户机返回XML文档)。 如何在客户端用响应文档更新页面视图。
多数Java开发人员已经把模型-视图-控制器(MVC)模式应用在他们的Web应用程序上。在传统的Web应用程序中,视图组件由JSP或者其他表示技术(例如 Velocity 模板)构成。这些表示组件动态地生成全新的HTML页面,替代用户以前正在查看的页面,从而更新用户界面。但是,在Java Web应用程序使用Ajax UI 的情况下,基于从XMLHttpRequest 的响应接收到的数据,JavaScript客户端代码对于更新用户看到的内容负有最终责任。从服务器的角度来看,视图成为它响应客户机请求而发送的数据表示。
在这篇文章中,您将看到为什么 XML 并不总是最好的途径:对于简单的 Ajax 请求来说,传输纯文本更好。最后,将介绍 JavaScript 对象标注(JSON)。JSON 允许数据以序列化的 JavaScript 对象图的形式传输,在客户端代码中处理序列化的 JavaScript 对象图极为容易。

图 1. 简单的对象模型
虽然 XMLHttpRequest 对于发送数据使用的格式没有做任何限制,但是对于多数目的来说,只发送传统的表单数据是适合的,所以讨论集中在服务器的响应上。响应也可以有基于文本的格式,但是正如它的名字表示的,XMLHttpRequest 具有内置的处理 XML 响应数据的能力。这使 XML 成为 Ajax 响应的默认选择,所以我们从 XML 格式开始讨论。
从 Java 类产生 XML
把 Ajax 响应作为 XML 来传递有许多原因:每个支持 Ajax 的浏览器都有导航 XML 文档的方法,也有许多服务器端技术可以处理 XML 数据。通过制定一个方案,描述要交换的文档类型,在 Ajax 客户端和服务器端之间很容易定义合约,而且如果服务器端架构采用面向服务的方式,那么使用 XML 也可以允许非 Ajax 客户机使用您提供的数据。
自行进行序列化
首先,可以从对象图以编程的方式生成 XML。这种方式可以简单到只是在每个 JavaBean 类中实现 toXml() 方法即可。然后就可以选择合适的 XML API,让每个 bean 提供表示自己状态的元素,并递归地对自己的成员调用对象图。显然,这种方式无法扩展到大量的类,因为每个类都需要专门编写自己的 XML 生成代码。从好的方面来看,这是一个实现起来简单的方式,没有额外的配置支出或者更复杂的构建过程支出,任何 JavaBean 图都可以只用几个调用就变成 XML 文档。
清单 1 用 JDOM API 实现了在线商店示例中表示订单的类中的 toXml()(请参阅 图 1)。
清单 1. Order 类的 toXml() 的 JDOM 实现
| public Element toXml() {
Element elOrder = new Element("order"); elOrder.setAttribute("id",id); elOrder.setAttribute("cost",getFormattedCost()); Element elDate = new Element("date").addContent(date); elOrder.addContent(elDate); Element elItems = new Element("items"); for (Iterator iter = items.iterator() ; iter.hasNext() ; ) { elItems.addContent(iter.next().toXml()); } elOrder.addContent(elItems); return elOrder; } |
- 本文关键词:

