CTOCIO IT专家网

天极传媒 比特网 | 天极网 | IT专家网 | IT商网 | 52PK游戏网 | 手机天极 | IT分众 |
IT专家网搜索

您现在的位置: IT专家网 > Web服务子站 > WebService开发

面向开发人员的Ajax: AjaxJava对象序列化

作者: 佚名,  出处:IT专家网社区, 责任编辑: 包春林, 
2008-07-23 04:00
  如果您正在使用异步JavaScript和XML(Ajax)进行Java? Web开发,那么您最关心的问题可能就是把数据从服务器传递给客户机。在面向Java开发人员的Ajax系列的第二篇文章中,Philip McCarthy介绍了Java对象序列化的五种方式,并提供了选择最适合应用程序的数据格式和技术所需要的全部信息。

  在本系列 前一篇文章的示例代码中,我把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进行初始化,格式化得非常好。在这个示例中,顾客只做了一个订单,包含两个商品。

共9页。 9 1 2 3 4 5 6 7 :

网友评论

笔名 
请您注意:遵守国家有关法律、法规,尊重网上道德,承担一切因您的行为而直接或间接引起的法律责任。    IT专家网友拥有管理笔名和留言的一切权利。
  • 周排行榜
  • 月排行榜

邮件订阅

       
天极服务 | 关于我们 | 网站律师 | 加入我们 | 联系我们 | 广告业务 | 友情链接 | 我要挑错
All Rights Reserved, Copyright 2004-2008, Ctocio.com.cn
渝ICP证B2-20030003号 如有意见请与我们联系 powered by 天极内容管理平台CMS4i