ajax 的 java 对象序列化

ajax 的 java 对象序列化

ID:8253984

大小:88.50 KB

页数:14页

时间:2018-03-13

ajax 的 java 对象序列化_第1页
ajax 的 java 对象序列化_第2页
ajax 的 java 对象序列化_第3页
ajax 的 java 对象序列化_第4页
ajax 的 java 对象序列化_第5页
资源描述:

《ajax 的 java 对象序列化》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Ajax的Java对象序列化2005-11-1716:37出处:developerWorks如果您正在使用异步JavaScript和XML(Ajax)进行Java™Web开发,那么您最关心的问题可能就是把数据从服务器传递给客户机。在面向Java开发人员的Ajax系列的文章中,PhilipMcCarthy介绍了Java对象序列化的五种方式,并提供了选择最适合应用程序的数据格式和技术所需要的全部信息。本文将侧重于许多JavaWeb开发人员最关心的问题:为客户机生成数据。多数Java开发人员已经把模型-视图-控制器(MVC)模式应用在他们的Web

2、应用程序上。在传统的Web应用程序中,视图组件由JSP或者其他表示技术(例如Velocity模板)构成。这些表示组件动态地生成全新的HTML页面,替代用户以前正在查看的页面,从而更新用户界面。但是,在JavaWeb应用程序使用AjaxUI的情况下,基于从XMLHttpRequest的响应接收到的数据,JavaScript客户端代码对于更新用户看到的内容负有最终责任。从服务器的角度来看,视图成为它响应客户机请求而发送的数据表示。这篇文章侧重于可以用来生成Java对象以数据为中心的视图的技术。我将演示可以把JavaBeans变成XML文档的各种

3、方法,并且讨论每种方法的优劣。您将看到为什么XML并不总是最好的途径:对于简单的Ajax请求来说,传输纯文本更好。最后,我将介绍JavaScript对象标注(JSON)。JSON允许数据以序列化的JavaScript对象图的形式传输,在客户端代码中处理序列化的JavaScript对象图极为容易。关于示例我将使用一个示例应用程序和几个用例来演示这里讨论的技术特性和技术。图1显示的极为简单的数据模型可以表示示例用例。这个模型代表在线商店中的顾客帐户。顾客拥有以前订单的集合,每个订单包含几个商品。图1.简单的对象模型虽然XMLHttpReques

4、t对于发送数据使用的格式没有做任何限制,但是对于多数目的来说,只发送传统的表单数据是适合的,所以我的讨论集中在服务器的响应上。响应也可以有基于文本的格式,但是正如它的名字表示的,XMLHttpRequest具有内置的处理XML响应数据的能力。这使XML成为Ajax响应的默认选择,所以我们从XML格式开始讨论。从Java类产生XML把Ajax响应作为XML来传递有许多原因:每个支持Ajax的浏览器都有导航XML文档的方法,也有许多服务器端技术可以处理XML数据。通过制定一个方案,描述要交换的文档类型,在Ajax客户端和服务器端之间很容易定义合

5、约,而且如果服务器端架构采用面向服务的方式,那么使用XML也可以允许非Ajax客户机使用您提供的数据。我将考虑从Java对象产生XML数据的三种方法,并讨论每种方法的优劣。自行进行序列化首先,可以从对象图以编程的方式生成XML。这种方式可以简单到只是在每个JavaBean类中实现toXml()方法即可。然后就可以选择合适的XMLAPI,让每个bean提供表示自己状态的元素,并递归地对自己的成员调用对象图。显然,这种方式无法扩展到大量的类,因为每个类都需要专门编写自己的XML生成代码。从好的方面来看,这是一个实现起来简单的方式,没有额外的配置

6、支出或者更复杂的构建过程支出,任何JavaBean图都可以只用几个调用就变成XML文档。在前一篇文章的示例代码中,我把XML标记字符串连接在一起,实现了toXml()方法。上次我就提到过,这是个糟糕的方法,因为它把确保标记配对、实体编码等工作的负担放在每个toXml()方法的代码中。在Java平台上有几个XMLAPI可以替您做这些工作,这样您就可以把精力集中在XML的内容上。清单1用JDOMAPI实现了在线商店示例中表示订单的类中的toXml()(请参阅图1)。清单1.Order类的toXml()的JDOM实现publicElementto

7、Xml(){ ElementelOrder=newElement("order");elOrder.setAttribute("id",id); elOrder.setAttribute("cost",getFormattedCost()); ElementelDate=newElement("date").addContent(date);elOrder.addContent(elDate); ElementelItems=newElement("items");for(Iteratoriter=items.iterator(

8、);iter.hasNext();){elItems.addContent(iter.next().toXml());}elOrder.addContent(elItems); 

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。