欢迎光临
我们一直在努力

Servlet 和 XML:互为补充(一)(转)-JSP教程,Jsp/Servlet

建站超值云服务器,限时71元/月
                                 

                             [/tr]                             

                                 

                             

–>

                                                                  download it now!                                 
                                                          pdf                                  (79.4 kb)
                                 free acrobat™ reader                                 
Servlet 和 XML:互为补充(一)(转)-JSP教程,Jsp/Servlet

servlet 和 xml:互为补充
doug tidwell
developerworks 职员
2000 年 4 月

内容:
Servlet 和 XML:互为补充(一)(转)-JSP教程,Jsp/Servlet
Servlet 和 XML:互为补充(一)(转)-JSP教程,Jsp/Servlet
我们的第一个 servlet 示例
一个基本的 servlet
生成 xml 段
与数据库对接
小结
参考资料
作者简介
Servlet 和 XML:互为补充(一)(转)-JSP教程,Jsp/Servlet

研究 java servlet 和 xml 如何共同生成 xml 文档和 dom 树,以及它们如何与数据库对接。本文包括几项有用的技术:使用 http 参数控制 dom 树的处理与生成,而无需 xml 源文档。

对 java 程序员来说,servlet 和 xml 是最令人振奋的两项技术。本文是为 2000 年 2 月 17 日旧金山 city java 用户组准备的演示文稿。在本文中您将看到如何使用 servlet 组成一个简单的 xml 文档,构建一个 dom 树,并将部分内容显示在用户屏幕上,最后您将看到如何从一个数据库查询生成 xml。
对于本文讨论的示例来说,我们将扩展 httpservlet 类。httpservlet 类提供了通常与 cgi 程序相关的功能。它支持 put 和 get,并且使您的代码具有对 http 请求标头的完全访问权,包括 useragent 域。我们将创建一些简单的 servlet,并说明它们如何处理以 xml 标签标记的信息。在这一过程中我们还将说明文档对象模型 (dom) 的一些方法。这些简单的应用程序将使您了解当将 servlet 和 xml 组合在一起时您能够做哪些事情。
第一个 servlet 示例
作为开始,我们将编写一个用来生成 xml 文档的 10 行 servlet。在构建理解 xml 的 servlet 时,我们将按以下三个步骤进行:

  1. 将内容类型设为 text/xml。
  2. 创建 xml 文档。
  3. 将 xml 文档写回客户机。

在我们的大多数 servlet 中,主要精力放在第二步。我们可能根据数据库查询创建一个 xml 文档,也可能基于从客户传送来的 http 参数生成它,或者也可能使用其他类型的数据检索或生成方法。在本文的示例中,将主要考虑 http 参数和数据库查询。
一个基本的 servlet
对于第一个示例,第二步“创建 xml 文档”不是我们所关心的;我们只想生成一个有效的 xml 文档。我们已将文档硬编码到源代码中,如清单 1 所示。

color-coding our colorful coding[/b] –>
彩色编码
彩色编码清单是本文的一个特色,我们正在 dw 进行试验。为了生成我们的彩色编码清单,我正在使用一些开放源代码的工具。首先,我将文档(java、html、xml 等)载入 emacs 中。emacs 定义了关键字、注释、函数名以及其他编程语言构件(大约有十多种)的颜色。在 emacs 载入文件并为其加上颜色以后,我使用 htmlize 程序包,这是一种用曾经流行的 emacs lisp 语言编写的开放源代码实用工具。htmlize 接收一个清单(这个清单看起来与在 emacs 中完全一样),然后将其转换为 html。结果将是一个完全彩色编码的文件,它突出显示关键字、注释、函数名等。
请告拆我们您对这些新的、改进的代码清单的想法。
如果您也想这样做,请参阅参考资料中的相应链接。

清单 1. xmlfromscratch.java

public class xmlfromscratch extends httpservlet {  public void service(httpservletrequest request,                      httpservletresponse response)    throws ioexception, servletexception  {    response.setcontenttype("text/xml");    printwriter out = response.getwriter();        out.println("<?xml version=\"1.0\"?>");    out.println("<greeting language=\"en_us\">");    out.println("  hello, world!");    out.println("</greeting>");  }}

这一段令人兴奋的代码生成的结果如下所示:
清单 2. xmlfromscratch.java 的结果

<?xml version="1.0"?><greeting>  hello, world!</greeting>

您可以查看完整清单的 html 视图或直接查看 java 源文件
生成 xml 段
现在,我们已经创建了一个 servlet,它通过硬编码生成一个没有意义的简单 xml 文档。在下一个 servlet 中,我们从零开始生成一个 dom 树,然后将 dom 树的一部分显示在请求者的屏幕上。向请求者发送回的 dom 树部分取决于 servlet 接收到的 http 参数。本例展示了几项有用的技术:使用 http 参数控制 dom 树的处理与生成,而无需 xml 源文档。
清单 3 显示了处理 http 参数的代码段:
清单 3. xmlfromdom.java

  public void service(httpservletrequest request,                      httpservletresponse response)    throws ioexception, servletexception  {    response.setcontenttype("text/xml");    printwriter out = response.getwriter();        enumeration keys;    string key;    string requestedsubtree = "";    keys = request.getparameternames();    while (keys.hasmoreelements())    {      key = (string) keys.nextelement();      if (key.equalsignorecase("subtree"))        requestedsubtree = request.getparameter(key);    }

正如在上一个示例中那样,我们将内容类型设置为 text/xml。在此之后,我们使用 httpservletrequest.getparameternames 方法从 http 请求中检索所有参数。
在处理完这些参数以后,我们需要查找用户所请求的信息。我们使用的信息从对象中构建 dom 树;该 dom 树包含了莎士比亚十四行诗的文本,以及关于这首十四行诗的其他信息。我们将根据 http subtree 参数返回 dom 树的一部分。清单 4 显示了构建 dom 树的部分代码:
清单 4. 构建 dom 树

  document doc = null;  element author = null;  element lines = null;  element title = null;   public void initialize()  {      doc = (document)class.        forname("org.apache.xerces.dom.documentimpl").        newinstance();    if (doc != null)      {        element root = doc.createelement("sonnet");        root.setattribute("type", "shakespearean");          author = doc.createelement("author");          element lastname = doc.createelement("last-name");        lastname.appendchild(doc.createtextnode("shakespeare"));        author.appendchild(lastname);

我们创建了一个 java 类的实例,该类实现了 dom document 接口,然后我们要求那个节点为我们创建各种节点。您很容易重新编写这个应用程序,使它通过分析 xml 文件生成 dom 树。为了简化这个示例(并减少我的工作量),我们定义了一些实例变量来保存准备为其提供服务的节点的值。这些值在类声明顶部声明,并在 initialize 方法中初始化。
最后一步是将被请求的 dom 树部分发送给用户。为了实现这一任务,我们使用一个递归方法,printdomtree,它处理节点及其所有子节点。因为这个方法是递归的,所以我们从文档根节点还是从 dom 树的其他节点开始并不重要。如果所请求的是我们知道的一个节点,则可以将这个节点传递给方法 printdomtree。否则,我们可以传递 document 节点。清单 5 显示了这一步骤。
 

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » Servlet 和 XML:互为补充(一)(转)-JSP教程,Jsp/Servlet
分享到: 更多 (0)

相关推荐

  • 暂无文章