知识大全 JSP与XML的交互有哪些
Posted 知
篇首语:注意力是智慧的门户。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 JSP与XML的交互有哪些相关的知识,希望对你有一定的参考价值。
JSP与XML的交互有哪些 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
使用JavaServer Pages有三种不同的方法用于处理XML文档 每种方法都有利于提高分离页面代码与XML数据的水平 有利于简化开发网页的复杂度并且改善提高组件与页面代码的可重用性
JavaServer Pages ( JSP)和XML是Sun的J EE的两个至关紧要的组件 JSP是用于创建应用程序服务器端程序的有效工具 而客户可以是一个浏览器 一个设备或其它的应用程序 你可以使用XML描述数据并在联系服务器与系统的其余部分之间传递 如果你仔细考虑Web服务的抽象概念的话 JSP可以被认为是实现技术而XML则是数据封装和消息传送技术 JSP页面可以通过三种方式使用XML 直接使用XML文件 使用JavaBeans来执行XML处理或者通过标记库使用XML
一 直接使用XML
我们可以在JSP页面中直接使用XML 这要分为三类
JSP可以读取XML文件并且基于这些数据执行动作 例如 一应用程序可以读取具有某些特定结构的数据的XML文件
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" /> <jsp:setProperty name=cb property="id" value=" " /> <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中 ) 一个熟悉XML的人就可以设计并使用各种各样的页面布局进行试验 而不必改变任何Java程序代码 当然 代码与数据的分离的程度还是主要依赖标记库元素设计的好坏程度
cha138/Article/program/Java/JSP/201311/20175相关参考
JSP与XML的结合 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!综述可扩展标注语言(eXtens
配置JSP交互网站的步骤 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 网络操作系统Window
Struts,JSP和XML解析三个问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!struts
解决JSP中拼装数据为XML出现的问题 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一应用背景
知识大全 Jsp结合XML+XSLT将输出转换为Html格式
Jsp结合XML+XSLT将输出转换为Html格式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
交互保险社与相互保险社的比较1.交互保险社与相互保险社都具有相互保险组织性质。两者都采用社员制。经营目的同为非营利性。社员之间互相提供保险。即每个社员为其他社员提供保险。每个社员同时又获得其他社员提供
C#与javascript简单交互 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 呼叫js R
WebBrowser页面与WinForm的交互 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!话说有
Java进阶:Java通过JNI与Delphi交互 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
使用GET方式与PHP交互[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nbs