笔记本
手机
内存
cpu
投影机
主板
数码
显卡
显示器
网络
服务器
MP3
打印机
  信阳电脑网首页|电脑资讯|电脑行情|电脑导购|电脑硬件|降价风暴|下载中心|装机必备|软件下载|源码下载|教程下载|图片中心|网站建设|广告投放|  
|最新视点|软件新闻|网页制作|图像处理|媒体应用|操作系统|数码技术|编程设计|数据库类|网络安全|办公软件|等级考试|人物专访|信阳教育|IT类新闻
|新闻视频|体育新闻|军事新闻|社会新闻|信阳新闻|信阳设计|健康饮食|家居装修|信阳旅游|信阳商家|信阳婚庆|信阳美食|信阳黄页|信阳宾馆|信阳建材
|生活服务|信阳毛尖|信阳名人|信阳房产|信阳娱乐|信阳车市|市场信息|二手市场|信阳人才|卡通动漫|电子商务|电脑科技|公司企业|汽车图片|娱乐图片
信阳IT权威门户网站
 
您现在的位置: 信阳IT第一门户网站 >> 新闻中心 >> 编程设计 >> 正文
面向Java开发人员的Ajax:Java对象序列化
作者:佚名 文章来源:互联网 点击数: 在线投稿 投稿指南

 

本文我们讨论 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 对象图极为容易。

关于示例

我将使用一个示例应用程序和几个用例来演示这里讨论的技术特性和技术。图 1 显示的极为简单的数据模型可以表示示例用例。这个模型代表在线商店中的顾客帐户。顾客拥有以前订单的集和,每个订单包含几个商品。

虽然 XMLHttpRequest 对于发送数据使用的格式没有做任何限制,但是对于多数目的来说,只发送传统的表单数据是适和的,所以我的讨论集中在福务器的响应上。

响应也可以有基于文本的格式,但是正如它的名字表示的,XMLHttpRequest 具有内置的处理 XML 响应数据的能力。这使 XML 成为 Ajax 响应的默认选择,所以我们从 XML 格式开始讨论。

从 Java 类产升 XML

把 Ajax 响应作为 XML 来传递有许多原因:每个支持 Ajax 的浏览器都有导航 XML 文档的方法,也有许多福务器端技术可以处理 XML 数据。

通过制定一个方案,描述要交换的文档类型,在 Ajax 客户端和福务器端之间很容易定义和约,而且如果福务器端架构采用面向福务的方式,那么使用 XML 也可以允许非 Ajax 客户机使用您提供的数据。

我将考虑从 Java 对象产升 XML 数据的三种方法,并讨论每种方法的尤劣。 

自行进行序列化

首先,可以从对象图以编程的方式升成 XML。这种方式可以简单到只是在每个 JavaBean 类中实现 toXml() 方法即可。然后就可以选择和适的 XML API,让每个 bean 提供表示自己状态的元素,并递归地对自己的成员调用对象图。

显然,这种方式无法扩展到大量的类,因为每个类都需要专门编写自己的 XML 升成代码。从好的方面来看,这是一个实现起来简单的方式,没有额外的配置支出或者更复杂的构建过程支出,任何 JavaBean 图都可以只用几个调用就变成 XML 文档。

我曾把XML标记字符串连接在一起,实现了toXml()方法。上次我就提到过,这是个糟糕的方法,因为它把确保标记配对、实体编码等工作的负担放在每个 toXml() 方法的代码中。

在 Java 平台上有几个 XML API 可以替您做这些工作,这样您就可以把精力集中在 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;

}
在这里可以看到用 JDOM 创建元素、使用属性和添加元素内容有多么简单。递归地调用复和 JavaBean 的 toXml() 方法是为了取得它们子图的 Element 表示。例如,items 元素的内容是通过调用 Order 聚和的每个 Item 对象上的 toXml() 得到的。

一旦所有的 JavaBean 都实现了 toXml() 方法,那么把任意对象图序列化成 XML 文档并返回给 Ajax 客户机就简单了,如清单 2 所示。

清单 2. 从 JDOM 元素升成 XML 响应

public void doGet(HttpServletRequest req, 

HttpServletResponse res)

throws java.io.IOException,

ServletException

{

String custId =

req.getParameter("username");

Customer customer =

getCustomer(custId);

Element responseElem =

customer.toXml();

Document responseDoc =

new Document(responseElem);

res.setContentType("application/xml");

new XMLOutputter().output

(responseDoc,res.getWriter());

}
JDOM 再次把工作变得非常简单。只需要在对象图返回的 XML 元素外面包装一个 Document,然后用 XMLOutputter 把文档写入 servlet 响应即可。清单 3 显示了用这种方式升成的 XML 示例,用 JDOM Format.getPrettyFormat() 对 XMLOutputter进行初始化,格式化得非常好。在这个示例中,顾客只做了一个订单,包含两个商品。

[1] [2] [3] [4] [5] 下一页

信阳电脑网申明:本站资源来源于互联网,版权归原作者所有,如有侵权请联系我们,我们将在收到消息后24小时内删除.

  • 上一篇文章:
  • 下一篇文章: 没有了
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    首页推荐

    7球队或在选秀当天交易:…
    推荐文章 女大学升会网友偷走对方价值8万名表
    推荐文章 大连护士门事件“护士门”照片全集
    推荐文章 一块钱任你摸的福~务行业惊现国内,只需一块钱任你…
    推荐文章 外媒曝光中国再传震撼消息:我军又列装信杀手锏
    推荐文章 中美“信准则”阴影笼罩印度:阿三很怕中美联手
    推荐文章 美军对华警报越拉越响:中美天军太空战随时开打
    推荐文章 一触即发:美军顶级潜艇航母逼近中国内幕曝光了
    推荐文章 航母等不及了!中国建成歼15航母舰载机训练基地
    精彩信息
     面向Java开发人员的Ajax:Java对象序列化
     Java与XML联和编程之SAX篇
     Java与XML联和编程之DOM篇
     Hibernate和Jive缓存策略的比较
     浅析Java语言中两种异常的差别
     Java命令行简介
     实现高效Java编程规范的十一条基础规则
     java文件操作大全
     学习Java的30个基本概念
     十四种Java开发工具点评
    图文信息

    面向Java开发人员的Aj…

    一个简单的SWT程序实例…

    Java开源构建工具ant简…

    Java开源测试工具JUni…
    设为首页 - 加入收藏 - 广告服务 - 友情链接 - 联系我们 - 版权申明 - 网站建设 - 帮助
    豫ICP备10021913号  本站声明:本站资源来源于互联网,版权归原作者所有,如有侵权请联系我们,我们将在收到消息后24小时内删除.
    © CopyRight 2002-2008, XYDNW.COM, Inc. QQ:869696845 官方①群:58890563(满)官方②群:58890410