您现在的位置: IT专家网 > Web服务子站 > WebService开发
面向开发人员的Ajax: AjaxJava对象序列化
如果您正在使用异步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 items.iterator() ; iter.hasNext() ; ) { elItems.addContent(iter.next().toXml()); } elOrder.addContent(elItems); return elOrder; } |
一旦所有的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()); } |
- 本文关键词:

