JSP与XML的交互.doc_第1页
JSP与XML的交互.doc_第2页
JSP与XML的交互.doc_第3页
JSP与XML的交互.doc_第4页
JSP与XML的交互.doc_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

JSP与XML的交互一、JSP与XML的交互1、概述JavaServer Pages ( JSP)和XML是Sun的J2EE的两个至关紧要的组件。 JSP是用于创建服务器端应用程序的有效工具,而客户端可以是一个浏览器,一个设备或其它的应用程序。 可以使用XML描述数据并在联系服务器与系统的其余部分之间传递。以便各种基于eb的应用之间能更方便的交换数据。JSP可以被认为是实现技术而XML则是数据封装和消息传送技术。随着JAVA和XML的不断发展,二者事实上已经发展成为可移植的语言和可移植的数据实现者。在JSP页面中可以通过三种方式使用XML:l 直接使用XML文件l 使用JavaBeans来执行XML处理l 通过标记库使用XML。2、直接在JSP页面中使用XML可以在JSP页面中直接使用XML,这要分为三种不同的情况:(1) JSP可以读取XML文件并且基于这些数据执行动作。例如:一应用程序可以读取具有某些特定结构的数据的XML文件。 (2) JSP可以创建XML文件以发送数据到客户程序或其它的应用程序。注意:xml文件存储数据与数据库的对比l 对很多目前的用途来说,用数据库太过浪费了l xml文件很容易备份和共享,或下载到你的客户端。同样的,你可以方便地通过ftp上载新的数据到你的站点。l xml还有一个更抽象的优点,即作为层次型的格式比关系型的更好。 它可以用一种很直接的方式来设计数据结构来符合你的需要。(3)JSP可以转换XML文件,这个变换可以是交给XSLT处理,由JSP作为控制器,或者通过非XSLT解决方案来完成。 在这两种情况下,JSP的作用都是读取XML文件,转换它并生成一个输出。 因为JSP包含内嵌的Java程序,所以它可以直接地调用一个分析程序来读/写xml数据。 这是非常不合理的方法,因为数据和代码逻辑并不能很好的被分离开。 另外,这样的程序也很难读得懂。 所以,可以使用JavaBean。3、使用JavaBean处理XML文件JSP可以通过jsp:usebean标记与JavaBean紧密的整合起来。 并对JavaBean的属性进行操作。类XML的标记允许JSP页面访问JavaBeans。 通过尽可能多的把封装的代码转变成可重用组件(JavaBeans),就可以把JSP页面中代码优化到最小的程度。在单独的JavaBeans里与XML文件交互作用,并且你可以在不改动JSP页面的情况下改变JavaBean的程序。 此外,JavaBeans还可以使用XSLT来执行XML文件的转换。使用JSP和JavaBeans来完成的这些抽象的动作比直接在JSP页面中插入原始的Java程序要好得多,但是你仍然需要熟悉Java程序,以便随时改变JSP页面。 应用程序的一致性与条理性依靠JavaBeans合作创建一个统一的输出结果的好坏程度。 例如,JavaBean中的缺陷可能会造成整个XML输出无效。 依靠JavaBeans指定资源的方法,可能同时带来执行性能的问题。4、在JSP中通过标记库与XML进行交互通过标记库可以定义出现在JSP页面中的作为类XML元素的自定义标签,可以把特定的Java代码与每个标记都关联起来。 例如,假定你可以访问一个天气情况数据库,而且你需要输出现在的天气状况。 那么,你可以在JSP中插入JDBC程序代码直接查询数据库(虽然这并不是一个好的选择),把这些代码封装到一个JavaBean内,或者把它包装成一个标记库。使用标记库时的JSP页面内的程序代码看上去就像:%taglib uri=the TLD file prefix=foo %foo:WeatherCurrent weather is foo:Weather/ 注意在上述程序代码中看不到任何Java代码的踪迹。 作为一个页面设计人员,你使用一种熟悉的语法就像foo:weather/,这些与其它的任何标记看起来非常相似。 在页面中包含现在的天气状况的HTML字符串的地方插入它。 当使用标记库时,JSP页面看上去就非常像XML文件了。 当JSP页面被处理时,引擎执行与标记相关联的程序代码(实际上,首先调用JSP引擎把JSP页面翻译成一个servlet,然后再编译servlet。 与标记库相关联的方法都被包含在servlet中),一个熟悉XML的人就可以设计并使用各种各样的页面布局进行试验,而不必改变任何Java程序代码。当然,代码与数据的分离的程度还是主要依赖标记库元素设计的好坏程度。5、使用 JSP技术生成动态 XML通过使用 JSP 页面,页面内的静态 XML 数据就可以充当一个模板,该模板是用动态内容填充的。Java 代码的任务仅仅是生成可能随时间变化的内容 - 这是一种更有效的方法。从而无须为每个请求重新生成静态内容是有意义的(假定 XML 文档只有部分内容是动态的)。(1)对应的XMLOne.jsp文件作者姓名作者出世时间第一章本章的标题第一部分副标题本段的内容% cal.add(java.util.Calendar.MINUTE, 10);out.print(出版时间为: + cal.getTime().toString() +); %注意:l 必须放在第一行。因为在 XML 文档中,XML 版本标记必须位于第一行。l 利用Java 代码不仅可以生成 XML 标记之间的数据,也可以生成一个 XML 文档中的整个标记树。此时的Java代码除了要显示数据之外,还必须产生XML的标记。(2)对应的CSS文件为XMLOne.csschapter display:blockintrodution display:block;color:bluechap_num display:block;font-family:Comic Sans MS;font-size:20;font-style:italic;font-weight:bolder;text-align:center;margin-top:2exchap_title display:block;font-family:arial black;font-size:25;text-align:centerpart display:block;margin-top:2expart_num font-family:courier new;font-size:18;font-weight:bolderpart_title font-family:courier new;font-size:20;font-weight:bolderpara_1 display:block(3)在浏览器中的执行后的结果为(4)通过查看其源HTML代码是一个标准的XML格式的文件6、用socket发送xml文档把生成的xml文档转化成字符流,然后通过Socket输出到服务器端 Socket c = new Socket(host,port);PrintWriter pw = new PrintWriter(new OutuputStreamWriter(c.getOutputStream(),true);File f = new File(xmlFileName);BufferedReader br = new BufferedReader(new FileReader(f);String line;while(line = br.readLine() != null)pw.println(line);pw.close();br.close();二、在HTML页中绑定XML文档数据1、数据绑定通过数据绑定,可以把一个XML文档链接到一个HTML页,然后绑定标准的HTML元素(例如SPAN、TABLE等)到独立的XML元素。HTML标签元素会自动显示所绑定的XML元素的内容。2、数据绑定的方法使用数据绑定的两个主要步骤:(1)链接XML文档到想要显示XML数据的HTML页中,通过在HTML页中包括标签名为XML的HTML标签来完成。其次,给它分配一个ID。例如下面的代码实现将HTML页中的标签(ID名称为dsoBook)把XML文档Book.xml链接到该HTML页面页。 将XML中的数据绑定到HTML页面中 (2)绑定HTML标签元素到XML标签元素当绑定一个HTML标签元素到一个XML标签元素时,HTML标签元素会自动显示所绑定的XML标签元素的内容。例如: 书名 作者 出版社 书号 价格 结果将在HTML标签元素SPAN中显示出XML各个标签元素的内容,数据实际上是使用HTML标记:ALT,SPAN,DIV等等提取的;datasrc属性指定了你想从中提取数据的那个数据岛。datafld属性指定了你想要的数据的XML标记。3、应用例(1) HTML页面(文件名称为:HtmlBindingXML.htm) 将XML中的数据绑定到HTML页面中 书名 作者 出版社 书号 价格 (2)XML文件(文件名称为:Books.xml) XML编程技术 张三 清华大学出版社 100 $5.49 Java编程技术 李四 电子工业出版社 101 $8.5 (3)执行的结果三、在HTML中通过JavaScript调用XML数据1、HTML页面(文件名称为:UserXMLData.html)var xmlDoc = new ActiveXObject(Microsoft.XMLDOM);xmlDoc.async=false;xmlDoc.load(XMLData.xml);nodes = xmlDoc.documentElement.childNodes;title.innerText = nodes.item(0).text;author.innerText = nodes.item(1).text;email.innerText =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论