全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JavaServer Pages (JSP)和XML是Sun的J2EE的两个至关紧要的组件。JSP是用于创建应用程序服务器端程序的有效工具,而客户可以是一个浏览器,一个设备或其它的应用程序。你可以使用XML描述数据并在联系服务器与系统的其余部分之间传递。如果你仔细考虑Web服务的抽象概念的话,JSP可以被认为是实现技术而XML则是数据封装和消息传送技术。JSP页面可以通过三种方式使用XML:直接使用XML文件,使用JavaBeans来执行XML处理或者通过标记库使用XML. 一、直接使用XML 我们可以在JSP页面中直接使用XML,这要分为三类: 1. JSP可以读取XML文件并且基于这些数据执行动作。例如:一应用程序可以读取具有某些特定结构的数据的XML文件。 2. JSP可以创建XML文件以发送数据到客户程序或其它的应用程序。JSP可以转换XML文件,这个变换可以是交给XSLT处理,由JSP作为控制器,或者通过非XSLT解决方案来完成。在这两种情况下,JSP的作用都是读取XML文件,转换它并生成一个输出。 因为JSP包含内嵌的Java程序,所以它可以直接地调用一个分析程序来读/写xml数据。这是非常不合理的方法,因为数据和代码逻辑并不能很好的被分离开。另外,这样的程序也很难读得懂。所以,下面我将介绍第二方法:使用JavaBeans. 二、使用JavaBeans JSP可以通过jsp:usebean标记与JavaBeans紧密的整合起来。下面的程序片段示范了如何使用在JSP页面中的一个JavaBean来设置并获取属性。 jsp:useBean id=“cb” scope=“session” class=“xmlrep.Customer”/ jsp:setProperty name=“cb” property=“id” value=“45”/ B First Name is: /B %=cb.getFname() % p B Last Name is:./B %= cb.getLname() % JSP与JavaBeans整合的特征就是可以自动把超文本标志语言的表单元素翻译成JavaBean属性。如果有一个HTML表单并且想让它向JavaBean提交表单内容,你可以写下面的代码: jsp:setProperty name=“cb” property=“*” / name属性包含JSP页面已经引用Bean的值。前面jsp:useBean标记设置名称为“ cb ”.与设置单独的Bean属性不同,你可以使用星号来标志“全部的”属性。JSP页面自动地映射HTML表单值为同名的Bean属性。如果你读取每个HTML表单元素,然后调用相应属性的Bean设置方法,那么结果也将是相同的。 可以看到,类XML的标记允许JSP页面访问JavaBeans.我们通过尽可能多的把封装的代码转变成可重用组件(JavaBeans),就可以把JSP页面中代码优化到最小的程度。你可以使用通用的语法分析程序,像Xerces或者JAXPI,在单独的JavaBeans里与XML文件交互作用-并且你可以在不改动JSP页面的情况下改变分析程序。此外,Beans还可以使用XSLT来执行XML文件的转换。 使用JSP和JavaBeans来完成的这些抽象的动作比直接在JSP页面中插入原始的Java程序要好得多,但是你仍然需要熟悉Java程序,以便随时改变JSP页面。应用程序的一致性与条理性依靠JavaBeans合作创建一个统一的输出结果的好坏程度。例如,Bean中的缺陷可能会造成整个XML输出无效。依靠Beans指定资源的方法,可能同时带来执行性能的问题。 三、通过标记库JSP与XML交互 这也就是在前文中重点提到的,但是因为它实在太重要了,所以在本文中我必须也要提到。标记库可以定义出现在JSP页面中的作为类XML元素的自定义标签,可以把特定的Java代码与每个标记都关联起来。例如,假定你可以访问一个天气情况数据库,而且你需要输出现在的天气状况。那么,你可以在JSP中插入JDBC程序代码直接查询数据库(虽然这并不是一个好的选择),把这些代码封装到一个JavaBean内,或者把它包装成一个标记库。使用最后一个选择,你的JSP页面内的程序代码看上去就像: %taglib uri=“the TLD file” prefix=“foo” % Current weather is foo:Weather/ 注意在上述程序代码中看不到任何Java代码的踪迹。作为一个页面设计人员,你使用一种熟悉的语法就像foo:weather/,这些与其它的任何标记看起来非常相似。在页面中包含现在的天气状况的HTML字符串的地方插入它。 标记库有一个关联的XML格式的描述符文件,名叫Tag Library Descriptor(标记库描述符,TLD)。在TLD文件中的每个标记都有一个条目,包括它的名称,版本和其它的任选信息。在JSP页面内,你可以用“%_taglib prefix = ” foo “ %”指令指定TLD文件。属性“ prefix ”用来指定一个前缀,用来在JSP页面内使用特定的库来引用任何标记。那为什么我们要使用标记foo:Weather/而不仅仅是Weather/。TLD文件的精确位置依赖于正在使用的应用程序服务器。 一个标记库标记可以代替为了完成这段程序逻辑的相应的Java程序代码。每个标记都相当于一个相同名称的Java类。这个类必须实现TagSupport接口,包含捕获事件触发器方法作为处理这个页面的JSP引擎。当它第一次遇到这个标记的时候,引擎就会调用doStartTag ()方法。可以使这个方法为空或者当需要的时候才执行应用程序逻辑。 当该方法返回SKIP_BODY时,那么引擎跳过这个标记体。当它返回EVAL_BODY_INCLUDE时,引擎将会处理这个标记以及它的子标记。类似地,JSP引擎在分析了结束标记之后就会调用doEndTag ()方法。doAfterBody ()方法让你可以在引擎处理元素体之后执行动作,但是必须在doEndTag ()方法作用之前。下面就是实现天气状况的Weather类的一个样本程序代码: import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; import java.io.*; public class Weather extends TagSupport public int doStartTag() try JspWriter out = pageContext.getOut(); out.print(“ sunny and cloudy mixed with ” + “rain and sunshine. ”); catch (IOException e) System.out.println(“Error ” + e); return (SKIP_BODY); 当引擎遇到“somePrefix:Weather/”标记的时候,它会在标记库内搜索一个同名的类。如果doStartTag ()方法被实现的话(在本例中是这样的),它就会被调用。这就使字符串包含适应显示的天气情况。因为方法返回了SKIP_BODY,JSP读取器移动到标记的末尾。 最简单的使用JSP和标记库的方法就是使用Apache Tomcat引擎。这个引擎也充当Servlet和JSP应用程序接口的引用实现。 当使用标记库时,JSP页面看上去就非常像XML文件了。当JSP页面被处理时,引擎执行与标记相关联的程序代码(实际上,首先调用JSP引擎把JSP页面翻译成一个servlet,然后再编译servlet.与标记库相关联的方法都被包含在servlet中。),一个熟悉XM
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年护理质量安全模拟试题及参考答案
- 2026年监理工程师《案例分析【水利】》真题及答案解析
- 2026年建筑施工现场职业病防护考试试题及答案
- 2026年节水知识竞赛模拟题库【含答案】
- 2026年老年痴呆护理常规考试试卷试题及答案
- 2026年每年卫生资格考试试卷及答案
- 2026年母婴保健考试考试题及答案
- 2026年企业人力资源管理师三级理论知识考试真题含答案
- 2026年全省医疗器械检查员培训班考核试题及答案
- 2026年人工智能训练师(三级)职业道德考试题库及答案
- 2026年红河州弥勒市城发悦途旅行社有限公司招聘(5人)笔试参考题库及答案详解
- 2026稀土储氢材料行业市场发展分析及前景趋势与投融资战略研究报告
- 2026中国现代农业服务行业市场现状农业生产分析研究规划报告
- 2026版公路水运工程试验检测专业技术人员职业资格考试《交通工程一本通》
- (2025版)基层医师2型糖尿病患者胰岛素应用专家共识解读课件
- 探索openEHR模型:原理、方法与系统实现的深度剖析
- 《智能网联汽车规划与决策技术》课件 项目4 常见的行为决策方法
- 2026年智慧海洋产业园区规划:功能布局与产业协同设计
- 个人暗股合同协议书
- 基础机械结构知识培训课件
- 2025-2026学年人美版(2024)小学美术三年级上册《果篮传情谊》教学设计
评论
0/150
提交评论