• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: 小 中 大 | 推荐给好友 上一篇 | 下一篇

Servlet 和 XML:互为补充(二)(转)

发布: 2007-7-01 18:47 | 作者: admin | 来源: | 查看: 14次 | 进入软件测试论坛讨论

领测软件测试网 清单 5. printDOMTree
    if (requestedSubtree.equalsIgnoreCase("author"))      printDOMTree(author, out);    else if (requestedSubtree.equalsIgnoreCase("lines"))      printDOMTree(lines, out);    else if (requestedSubtree.equalsIgnoreCase("title"))      printDOMTree(title, out);    else       printDOMTree(doc, out);

如果 subtree 参数是 author,则结果是:
  <author>    <last-name>Shakespeare</last-name>    <first-name>William</first-name>    <nationality>British</nationality>    <year-of-birth>1564</year-of-birth>    <year-of-death>1616</year-of-death>  </author>

如果 subtree 参数是 title,则结果是:
<title>So.net 130</title>

您可以查看或直接查看 。
与数据库对接
我们的最后一个示例是根据数据库查询生成 XML。有许多方法可做到这一点(请参阅 developerWorks 的文章 );对于本例而言,我们将使用 IBM 的 XML Extender for DB2(请参阅)。这个免费产品使您能够在 DB2 中存储 XML 文档。我们的查询从 DB2 中提取这些文档,然后将其传送给用户。
如果您使用 Oracle 8i 代替 DB2,您将会发现它自称具有类似的功能(请参阅)。对于不理解 XML 的数据库,您可以将 XML 文档存储为字符大对象 (CLOB),并以文本块的方式检索文档。
但是,在安装数据库以后,您需要完成以下三件事情才能使此代码工作:
  1. 首先,将 DbOwner、DbUserid 和 DbPasswd 变量改为适合系统的适当值。
       /////////////////////////////////////////////////////////////////       // 一定要正确更改这三个字符串,否则                            //   // servlet 不会工作。                                          //   /////////////////////////////////////////////////////////////////       DbUserid = "xxxxxxxx";   DbPasswd = "xxxxxxxx";   DbOwner = "xxxxxxxx";   


  2. 下一步,使用适合您的系统的 JDBC 驱动程序。我们在使用 DB2。
        static String JDBCDriver = "COM.ibm.db2.jdbc.app.DB2Driver";    ...    try    {      Class.forName("COM.ibm.db2.jdbc.app.DB2Driver").newInstance();    }    catch (Exception e)    {      System.out.println("Can@#t get the driver!"); e.printStackTrace();    }


  3. 如果你愿意,可以改掉下面的 SQL 查询语句。为了简化示例,此处仅检索 sales_order_view 表的 order 列中的全部 XML 文档。
        // 我们在此处对 SQL 语句进行硬编码;如果根据用户输入    // 限制查询,则情况会更为复杂。    String query = "select order from " + DbOwner + ".sales_order_view";

在 service 方法中,我们的 servlet 连接 DB2,执行一个查询(其结果为一组 XML 文档),分析查询结果,并将分析过的数据写入输出流中。清单 6 显示了与此关系最密切的代码部分:
清单 6. xmlfromdb2.java
    // 我们在此处对 SQL 语句进行硬编码;如果根据用户输入    // 限制查询,则情况会更为复杂。    String query = "select order from " + DbOwner + ".sales_order_view";    res.setContentType("text/xml");    try      {        ConInfo index = new ConInfo();        Connection con = getCon(index);        Statement stmt = con.createStatement();        ResultSet rs = stmt.executeQuery(query);        ...        // 显示结果集。我们从每行取出 XML 文档,        // 对其进行分析,然后打印 DOM 树。当没有更多的行时,rs.next() 返回        // false。        while (rs.next())          {             String nextOrder = rs.getString(1).trim();            Document doc = null;            StringReader sr = new StringReader(nextOrder);            InputSource iSrc = new InputSource(sr);                        try              {                parser.parse(iSrc);                doc = parser.getDocument();              }            catch (Exception e)              {                System.err.println("Sorry, an error occurred: " + e);              }                        if (doc != null)              printDOMTree(doc, out);          }

要了解全部细节,您可以查看或直接查看。
小结
尽管这些 servlet 示例中没有一个可以改变世界,但它们确实展示了 XML 和 servlet 配合得有多么好。Servlet 是向客户发送内容的一种伟大机制,而 XML 是发送结构化数据的一种完美机制。您还可以使用 servlet 处理服务器上的 XML 文档,并将它们的内容发送给客户机。最重要的是,这两种技术都是跨平台技术,可为您的应用程序带来更大的灵活性和可移值性。
参考资料
  • 了解有关 的详细信息。产品附带的文档中有一个深入的教程,它可帮助您将 XML 文档带入关系数据库的世界中。
  • 了解有关 的详细信息。
  • 试用 WebSphere 附带的免费 。
  • 通过 developerWorks 的 教程深入研究如何分析 XML 文件。
  • 下载作者为 City Java 用户组制作的演示文稿的 版本。
  • 在 网站学习使用 Emacs 彩色编码代码清单。HTMLize 程序包可从网址 获得。

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:[email protected] 电话:010-51297073

软件测试 | 领测国际 | ISTQB | ISTQB官网 | TMMi | TMMi认证 | 国际软件测试工程师认证 | 领测软件测试网