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

servlet|xml

清单 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>Sonnet 130</title>

您可以查看完整清单的 HTML 视图或直接查看 Java 源文件。
与数据库对接
我们的最后一个示例是根据数据库查询生成 XML。有许多方法可做到这一点(请参阅 developerWorks 的文章 Generating XML from a Data Store);对于本例而言,我们将使用 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);          }

要了解全部细节,您可以查看完整清单的 HTML 视图或直接查看Java 源文件。
小结
尽管这些 servlet 示例中没有一个可以改变世界,但它们确实展示了 XML 和 servlet 配合得有多么好。Servlet 是向客户发送内容的一种伟大机制,而 XML 是发送结构化数据的一种完美机制。您还可以使用 servlet 处理服务器上的 XML 文档,并将它们的内容发送给客户机。最重要的是,这两种技术都是跨平台技术,可为您的应用程序带来更大的灵活性和可移值性。
参考资料

  • 了解有关 DB2 XML Extender 的详细信息。产品附带的文档中有一个深入的教程,它可帮助您将 XML 文档带入关系数据库的世界中。
  • 了解有关 Oracle 数据库产品的详细信息。
  • 试用 WebSphere 附带的免费 servlet 教程。
  • 通过 developerWorks 的 XML programming in Java 教程深入研究如何分析 XML 文件。
  • 下载作者为 City Java 用户组制作的演示文稿的 PDF 版本。
  • 在 www.gnu.org 网站学习使用 Emacs 彩色编码代码清单。HTMLize 程序包可从网址 jagor.srce.hr 获得。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索xml
, 文档
, 数据库
, servlet
, 查询
, 清单
转xml
jsp和servlet的区别、servlet和jsp、servlet和jsp学习指南、servlet转发和重定向、spring和servlet关系,以便于您获取更多的相关知识。

时间: 2024-08-03 00:32:41

Servlet 和 XML:互为补充(二)(转)的相关文章

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

servlet|xml                                                                                                    Download it now!                                                              [/TR]                                                        

怎样在servlet把xml的数据发送到客户端?

问题描述 怎样在servlet把xml的数据发送到客户端? 解决方案 /** * @param document */private void writeXml(Document document, HttpServletResponse response) {response.setContentType("text/xml;charset=utf-8");OutputFormat format = OutputFormat.createCompactFormat();XMLWrit

怎么用jquery获取servlet中xml标签中的文本内容,

问题描述 怎么用jquery获取servlet中xml标签中的文本内容, // person.find("name").text; 这句话帮忙看下为什么返回不了文本内容? function but() { $.ajax({ type : "GET", url : "/AJAX/CServlet", dataType : "xml", success : function(data) { $(data).find("p

体育总局体育信息中心主任赵黎:电子竞技与网游互为补充

多玩网讯(记者/谢阗地)7月28日消息,在今年ChinaJoy高峰论坛上,国家体育总局体育信息中心主任赵黎发表了关于中国电子竞技运动的演讲. 在演讲中,赵黎表示电子竞技产业与网游产业一样,是创意文化产业的高价值细分领域,电子竞技与网游互为补充. 此前在数月前国家体育总局曾表示要以举国体制发展电子竞技运动,对此赵黎表示这几个月的工作卓有成效,已经确定了几个国家级的电子竞技训练基地,和一些项目的训练管理流程. 国家体育总局将在八月份组织电子竞技队伍前往德国比赛访问,在十月赴美国参加比赛. 赵黎希望中

蚂蚁金服开测信用分数,和央行报告互为补充

昨天,阿里系公司蚂蚁金融服务集团旗下的芝麻信用开始在部分支付宝用户当中开测信用分数,这也是国内首个面向个人的信用评分.芝麻信用分可以用于出行租车.住宿.购物.社交等生活场景,业内专家认为,这种民营征信可以与央行的信用报告互为补充. 分数直观表现 1月5日,央行发布允许8家机构进行个人征信业务准备工作的通知,蚂蚁金服旗下的芝麻信用位列其中.此次芝麻信用小范围公测正是准备工作的一部分.目前芝麻信用采取了和支付宝钱包合作的方式,公测用户在支付宝钱包中可看到芝麻信用分的选项.形式上,芝麻信用采用了国际上

Spring 配XML的十二种技巧!

Spring 配XML的十二种技巧! 转帖 :Spring 配XML的十二种技巧! 这篇文章写得不错,希望跟大家一起学习~~ 共同进步!! Spring 配XML的十二种技巧! Spring是一个强有力的java程序框架,其被广泛应用于java的程序中.它用POJO提供了企业级服务.Spring利用依赖注入可以获得简单而有效的测试能力.Spring beans,依赖关系,以及服务所需要的bean都将在配置文件中予以描述,配置文件一般采用XML格式.然而XML配置文件冗长而不易使用,在你进行一个使

关于Servlet的XML配置问题

问题描述 写了一个TestServlet,自己新建了一个myApp,把Tomcat的那个exmaples下面的XML复制过来,然后加上自己的,URL那些都检查了几遍都没错,就是一直报404错误,我以为是差什么其他东西,就把tomcat自带那个examles下面的东西都复制过来,结果就可以了,真是怪了,请各位高手指点一下,小弟刚刚学Servlet. 解决方案 解决方案二:访问localhost没事吧?解决方案三:引用1楼wuzhaoyoung的回复: 访问localhost没事吧? 就是访问的lo

谈谈CMS内容管理系统的两种方案:XSL+XML和HTML (二)

xml 上篇讲到了XSL和XML如何在客户端浏览.也是CMS内容管理系统内容发布的一种形式,即XSL(模版)+XML(内容).     但是现实情况是由客户端浏览器不支持,这样做还会给服务器造成一定的负载,能够减轻服务器服务负载的最好方法就是完全实现静态页面的内容访问机制,当然这样就需要再次将XSL和XML生成HTML或者SHTML.     呵呵,这就是所说的CMS内容管理系统内容发布的第二种形式HTML或者SHTML.     在Java中有很多方式来实现,首先是先产生XSL文件,即模版文件

使用Java Swing创建一个XML编辑器之二

这是本系列的第二篇文章.在上一篇文章中,我们简要地讨论了XML以及为什么一个树形结构适合显示XML.如何处理XML数据.如何使用JTree Swing 组件以及如何创建一个可重用的能够分析XML文档以及在Jtree显示数据的组件. 在本文中,我们将创建我们的XML编辑器的框架,为了达到这个目的,我们将用到许多Swing组件(包括JsplitPane.JscrollPane.Jbutton和JtextArea组件). 一.问题的提出与解决 我如何创建一个能够浏览文本和浏览视图的XML文本编辑器呢?