📄 71.html
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="description" content="Java,JDBC,EJB,Open Source,jdk,rmi">
<meta name="Keywords"
content="Java, servlets, Java servlet, Javascript, ActiveX, VRML,
applet, applets, directory, news, jdbc, applications,
Java applications, Java developer, Java development, developer,
classes, Jars.com, Jars, intranet, Java applet, Javabeans,
Java products, JDK, Java development kit, java development environment, JIT,
JavaPlan, enterprise tools, JVM, Java Virtual Machine, Java resources,
SUN, CGI, Perl, database, network, html,
xml, dhtml, rating, ratings, review, jars, cgi, programming,
software review, software rating">
<title>csdn_使用 JavaServer Pages 技术生成动态 XML</title>
<style>
.news { BACKGROUND: #007cd3; font-family: "宋体"; font-size: 9pt }
.t { font-family: "宋体"; font-size: 9pt }
.t1 { color:#007cd3; font-family: "宋体"; font-size: 9pt }
.white { font-family: "宋体"; font-size: 9pt;color:#FFFFFF }
.red { font-family: "宋体"; font-size: 9pt;color:#FF0000 }
A:visited {color:#0000FF}
A:hover {color: #ff6666; text-decoration: none}
.text {font-size: 12px; line-height: 160%; font-family: "宋体"}
.text1 {color:#000000; font-size: 12px; line-height: 130%; font-family: "宋体"; text-decoration: none}
.text1:visited {color:#000000}
.text1:hover {color: #000000}
.text2 {color:#000000; font-size: 12px; line-height: 130%; font-family: "宋体"; text-decoration: none}
.text2:visited {color:#000000}
.text2:hover {color: #000000}
.text3 {font-size: 12px; line-height: 100%; font-family: "宋体"; text-decoration: none}
.large {font-size: 14.8px; line-height: 130%}
</style>
</head>
<body
<center>
<tr>
<td WIDTH="100%" VALIGN="TOP">
<tr>
<td WIDTH="100%" CLASS="white"></td>
</tr>
<tr>
<td WIDTH="50%" bordercolor="#FFFFFF" CLASS="t1" bgcolor="#F0F0F0" align="center" nowrap>使用 JavaServer Pages 技术生成动态 XML </td>
<p> <td WIDTH="50%" bordercolor="#FFFFFF" CLASS="t1" bgcolor="#F0F0F0" align="center" nowrap>作者:lhcyf</td></p>
</tr>
<tr> <td WIDTH="100%" bordercolor="#FFFFFF" CLASS="t" bgcolor="#F0F0F0" colspan="2">
<P align=center><FONT color=#386490><B class=font1><BR>使用 JavaServer Pages
技术生成动态 XML </B></FONT></P>
<P><FONT color=#386490> <SPAN class=line>JavaServer Pages (JSP)
技术通常用于构建包含动态内容的 HTML 页面。但是您也可以使用这一技术生成其他格式(包括 XML)的动态内容。本文将用实例说明如何将 JSP
页面构建为 XML 文档模板,此模板是在请求时使用嵌在该页面中的 Java 代码"填充"的。<BR> Web 应用程序开发人员传统上使用 JSP
技术动态构建 HTML,方法是将 Java 代码包括在 HTML 源代码中。但您知道可以使用同样的方法生成 HTML
之外的动态内容吗?您可以实现这一点,而且方法比较简单。可以使用 XML 文档构建 JSP 页面,该 XML
文档将用作输出模板,然后替换必须基于基层业务逻辑动态生成的部分。为了生成文档的动态部分,您既可以使用直接编写在 JSP 页面中的 Java
代码,也可以使用从该页面外部调用的 Java 代码。<BR> 生成文档的哪些部分由您控制。例如,您可以使用 Java 代码生成两个 XML
标记之间的数据,生成 XML 文档树的各个部分(标记和数据),甚至可以生成整个文档。<BR> Java 代码被从页面中除去,并被加工成一个
servlet(称为页面 servlet),然后 Java 应用程序服务器将其作为 JSP 页面请求的一部分运行。得到的结果是纯
XML。<BR><BR><B>JSP 技术概述</B> <BR><BR> 让我们先对 JSP
页面的工作方式作一些简单的讨论。我们将力求简单,只将注意力集中于一些基本的方面。<BR>从传统意义上讲,JSP 页面与 HTML
页面很相似,只是多了一些标记。这些标记使设计人员能够将 Java 代码(不是 JavaScript)嵌入到页面中。Web 应用程序服务器(如 IBM
WebSphere Application Server)将截取对 JSP 页面的请求。页面的扩展名 .jsp(不是
.html)向应用程序服务器暗示了这些标记的存在。Web 应用程序服务器随后对 JSP 页面进行预处理,提取其中的 JSP 标记和任何内嵌的
Java 代码,而只保留 HTML。提取出来的 JSP 标记和内嵌 Java 代码用来构建 Java servlet(JSP 页面
servlet),Java servlet 运行该代码并将结果插入到原页面中 JSP 标记所在的位置。得到的结果是纯
HTML。在请求浏览器看到任何结果之前,Java 代码被剥离并在服务器上运行。<BR> 我们可以将同样的原理应用于 XML 页面。在包含 XML
的 JSP 页面的请求者(可能是一个浏览器,也可能是某个企业对企业的应用程序)看到 XML 之前,Java 代码被剥离 JSP
页面并用来生成其他内容,生成的内容被插入到 JSP
标记原来所在的页面位置。这种特性使您能够精确地控制将新内容插入到什么位置,甚至可以精确到单个字符。<BR> 过一会儿我们将考虑如何使用以上的特性。首先,让我们考虑为什么您可能会想到用
JSP 创建动态 XML。为什么不只是编写 Java 应用程序或 servlet 来生成整个文档?为什么要费心去使用 JSP
呢?最重要的原因是无须为每个请求重新生成静态内容是有意义的(假定 XML 文档只有部分内容是动态的)。通过使用 JSP 页面,页面内的静态 XML
就可以充当一个模板,该模板是用动态内容填充的。Java 代码的任务仅仅是生成可能随时间变化的内容 --
这是一种更有效的方法。<BR> 非常现实的一个问题是,JSP
页面使您能够将不同开发人员负责的任务分开。特别是,它们允许您更好地将数据与视图分离开,从而允许您在不影响逻辑的情况下添加新表示。设想这样一个
Java servlet,它执行业务逻辑,并根据请求的性质将生成的结果重定向到适当的 JSP 页面。例如,当 servlet 检测到 WAP
电话浏览器发出请求时,它就可以将数据重定向到一个包含 WML 的 JSP 页面。对于标准浏览器请求,它可以将数据重定向到包括 HTML 的 JSP
页面。<BR><BR><B>结构</B> <BR><BR> 让我们剖析一个示例,该示例将一个静态 XML 文档转换为一个 JSP
页面,该文档的部分内容被重写为要动态生成。本例基于 IBM WebSphere Transcoding Publisher 附带的一个称为
FlightInfo 的 XML 样例。此 XML 文档表示一个特定航线的信息。Transcoding Publisher
将它作为一个说明如何使用该产品以适合设备的格式再现 XML 数据的样例。但是在 Transcoding Publisher
或其他任何应用程序有机会处理该文档之前,我们希望动态构建它的某些内容。<BR>下面是原始的 XML 文档(已将 DTD
省略):<BR><?xml version="1.0" encoding="ISO-8859-1"?><Flights>
<AirCarrier>AA</AirCarrier>
<FlightNumber>700</FlightNumber> <FlightSegment>
<DepartingInfo> <City>DFW</City>
<Date>30Mar</Date> <Scheduled>0630A</Scheduled>
<Status>ON TIME</Status> <Time>0632A</Time>
<Gate>C16</Gate> <OffGateTime>0644A</OffGateTime>
<OFFGROUNDTIME>0632A< <Gate Time> <Time>1043A<
Status> TIME< <Status>ON Scheduled>
<Scheduled>1040A< Date> <Date>30Mar< City>
<City>LGA< <ArrivingInfo> DepartingInfo> <
OffGroundTime>>D5</Gate> <Baggage>B</Baggage>
<OnGroundTime>1043A</OnGroundTime> </ArrivingInfo>
</FlightSegment></Flights><BR><B>使用 .jsp 扩展名重命名该文件</B>
<BR> 首先,我们需要使用 .jsp 扩展名重命名该文件,以便 Web 服务器知道如何处理它。Web 服务器按一定的规则作用于某些 URL
模式或文件扩展名,如 .html 或 .gif。当将一个 Web 应用程序服务器添加到一个 Web 服务器中时,该应用程序服务器就会在 Web
服务器列表中添加规则,以便处理特定于该应用程序服务器的 URL 和文件扩展名。当 Web 服务器看到一个带有 .jsp
扩展名的文件时,它就会将此请求传递给 Web 应用程序服务器进行处理。<BR><BR><B>添加页面指令
</B><BR> 下一步,我们需要把将要生成的内容的格式通知 JSP 页面编译器。缺省情况下,页面编译器将假定内容的格式是
HTML。要覆盖这一设置,必须添加 JSP 页面指令来设置内容类型。对于 JSP 1.0,内容类型页面指令类似以下的形式:<BR><%@
page contentType="text/xml;charset=ISO-8859-1" %><BR> 重要的是要注意 JSP
页面编译器只会除去组成标记及其内容的字符。如果将 JSP
标记放在一个新行上,页面编译器将除去除换行符之外的任何字符(因为换行符不是标记的一部分)。例如,假定我们按以下方式将内容类型标记添加到新 JSP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -