`
xiaojiit
  • 浏览: 133555 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

剖析JSP与XML的交互编程技巧

    博客分类:
  • Java
阅读更多

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中。),一个熟悉XML的人就可以设计并使用各种各样的页面布局进行试验,而不必改变任何Java程序代码。当然,代码与数据的分离的程度还是主要依赖标记库元素设计的好坏程度。

JavaServer Pages ( JSP)和XML是Sun的J2EE的两个至关紧要的组件。 JSP是用于创建应用程序服务器端程序的有效工具,而客户可以是一个浏览器,一个设备或其它的应用程序

来源:http://www.sharejava.cn/

分享到:
评论

相关推荐

    JSP解析xml成绩管理系统

    以上就是JSP解析XML成绩管理系统的核心知识点,涵盖了XML数据结构、JSP与数据库交互、用户界面设计、权限控制以及系统功能的实现。在实际开发中,还需要结合具体需求进行详细设计和编码,确保系统的稳定性和用户体验...

    JSP与XML及其在农产品交易平台中的应用

    最终,通过分析、设计和实现了一个农产品交易平台,证明了JSP与XML结合在电子商务领域的有效性和实用性。这种技术组合不仅能够提供高效、安全的服务,还能满足现代电子商务网站对于数据管理和交换的需求。

    Jsp+XML树状菜单类库源码

    **JSP+XML树状菜单类库源码详解** 在Web开发中,树状菜单是一种常见的用户界面元素,用于组织和展示层次结构的数据。JSP(JavaServer Pages)结合XML(Extensible Markup Language)可以有效地构建这样的动态菜单...

    delphi与JSP通过xml-rpc协议交换数据的例子.rar_delphi XML_delphi jsp_delphi rp

    本示例是关于如何在Delphi环境中通过XML-RPC与Java JSP应用程序进行数据交互的实例。下面将详细介绍这个主题。 1. **XML-RPC基本概念** - XML-RPC使用HTTP作为传输协议,XML作为数据格式,实现了简单且灵活的远程...

    JSP编程技巧(PDG)

    **JSP(JavaServer Pages)编程技巧** JSP是Java平台上的动态网页技术,它允许开发者将静态HTML内容与动态Java代码相结合,以创建交互式的Web应用。在JSP中,开发者可以使用脚本元素、指令元素以及JavaBean组件来...

    JSP网页编程 JSP网页编程

    ### JSP与客户端交互 - **JSP与客户的交互**:当用户填写并提交表单后,JSP页面可以接收到这些数据,处理业务逻辑,并生成相应的HTML响应返回给客户端浏览器。 ### JSP执行过程 1. 用户发起HTTP请求到服务器。 2. ...

    JSP期末编程题加源程序

    在"JSP期末编程题加源程序"的压缩包中,可能包含了一些常见的JSP编程题目和其解答示例,这对于学习者来说是宝贵的资源,可以通过分析这些示例来提升自己的JSP编程能力。通过实践,可以更好地理解和掌握JSP的特性和...

    FLEX通过JSP与数据库交互

    ### FLEX通过JSP与数据库交互的关键知识点 #### 一、背景介绍 FLEX是一种用于构建高度互动的应用程序的框架,它可以与多种后端技术相结合,实现数据的动态交互。本篇文章将详细介绍如何利用FLEX结合JSP实现与MySQL...

    Servlet与JSP核心编程第二版5

    ### Servlet与JSP核心编程第二版5:关键技术与实践解析 #### 一、Servlet概述与核心技术 ##### 1.1 Servlet简介 Servlet 是 Java 平台的一种服务器端技术,用于扩展应用程序的功能。它是一个轻量级的应用程序组件...

    Servlet与JSP核心编程第二版(含书签)

    ### Servlet与JSP核心编程知识点概述 #### 一、Servlet基础概念 - **Servlet定义**:Servlet是一种Java程序,用于扩展服务器的功能。它提供了一种方法来创建动态Web页面,并可以处理客户端请求。 - **Servlet生命...

    Servlet与JSP核心编程第二版(源码)

    《Servlet与JSP核心编程第二版》这本书深入浅出地介绍了这两个关键技术。以下是一些关键知识点: 1. **Servlet生命周期**:Servlet的生命周期包括加载、实例化、初始化、服务、销毁五个阶段。开发者可以通过覆盖`...

    一个html、Servlet、JSP、XML、javaBeen的简单例子

    在IT领域,Web开发是至关重要的部分,而HTML、Servlet、JSP、XML以及JavaBean是构建Web应用程序的基础技术。这个简单的例子展示了这些技术如何协同工作来创建动态、交互式的Web应用。 首先,HTML(HyperText Markup...

    动态Web数据库技术—基于JSP和XML技术实现教案+源码

    - **XML与数据库**:XML可以与数据库进行交互,例如使用XSLT(XSL Transformations)转换XML数据,或者通过XPath(XML Path Language)查询XML文档中的特定节点。此外,某些数据库如Oracle支持XML类型的列,可以直接...

    JSP编程指南(第二版)源代码ch06

    通过分析和学习这些源代码,开发者可以加深对JSP编程的理解,掌握如何在实际项目中应用JSP技术,同时也能锻炼问题解决和代码重构的能力。在没有原始代码结构的情况下,理解和重构这些代码将是一个挑战,但也是提升...

    《JSP网络编程从基础到实践》源码

    8. **数据库连接与JDBC**:JSP常用于处理来自数据库的数据,通过JDBC(Java Database Connectivity)接口与各种数据库进行交互,实现数据的增删改查。 9. **Web容器**:JSP需要运行在Web容器(如Tomcat, Jetty等)...

    JSP网络编程代码(随书光盘资料)

    7. **JSP与Java Bean的交互**:Java Bean作为业务逻辑组件,可以通过JSP的`jsp:useBean`标签实例化和管理,实现数据的封装和传递。 8. **JSP的缓存机制**:通过`page`指令的`cache`属性,可以控制页面是否被缓存,...

    JSP网络编程从基础到实践(第2版).rar

    《JSP网络编程从基础到实践(第2版)》是一部深入浅出的教程,旨在帮助读者掌握JSP(JavaServer Pages)技术在网络编程中的应用。JSP是Java平台上的一个重要组成部分,它允许开发者创建动态、交互式的网页,是企业级...

    JSP编程之道

    本资料"JSP编程之道"显然旨在深入探讨JSP的使用技巧和最佳实践。 1. **JSP基本结构** JSP文件本质上是一个HTML或XML文档,其中可以嵌入Java代码片段。这些代码片段可以是脚本元素(Scriptlets)、表达式、声明或...

Global site tag (gtag.js) - Google Analytics