快速业务通道

J2EE探索者: 隐式对象的多种用法 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-18

J2EE探索者: 隐式对象的多种用法

时间:2011-03-14 IBM Kyle Gabhart

本期的 J2EE探索者是上个月的 正确处理会话作用域入门 的续篇。除了访问会话作用域之外,JSP 隐式对象还可以用来处理 HTML 参数,转发请求到一个 Web 组件,包括组件的内容、通过 JSP 容器的日志数据、控制输出流,处理异常,等等。

本月,您将学到在 JSP 页面中使用隐式对象。我们首先简要概括 JSP 架构,其中包括了隐式对象。然后,我将介绍每个对象并描述它的核心功能。最后,我们将给出使用每种类型的对象和它提供的容器管理服务的一些最佳实践。

隐式对象简介

JSP 架构背后的理念是提供一个 Web 组件,它允许开发人员着重关注 Web 内容的表示,而不用陷入解析、编程和数据操纵等细节。JSP 应用程序本质上是特殊的 Web 组件,在处理用户请求之前,J2EE Web 容器首先将其转换成 servlet。在每个 JSP 应用程序内部有一套完整的隐式对象。

隐式对象使得开发人员可以访问容器提供的服务和资源。这些对象之所以定义为 隐式的,是因为您不必显式地声明它们。不论您是否声明它们――虽然您不能 重复声明它们,它们在每个 JSP 页面当中都进行定义,并且在后台由容器使用。因为隐式对象是自动声明的,所以我们只需要使用与一个给定对象相关的引用变量来调用其方法。

9 个隐式对象及其功能的简单描述如下:

Application 是使用范围最广的上下文状态。它允许 JSP 页面的 servlet 与包括在同一应用程序中的任何 Web 组件共享信息。

Config 允许将初始化数据传递给一个 JSP 页面的 servlet。

Exception include 含有只能由指定的 JSP“error pages”访问的异常数据。

Out 提供对 servlet 的输出流的访问。

Page 是JSP页面的处理当前请求的 servlet 的实例。一般来说,JSP 页面作者不使用该对象。

PageContext 是 JSP 页面本身的上下文。它提供惟一一个 API 来管理具有不同作用域的属性。这个 API 在实现 JSP 自定义标记处理程序时使用得非常多。

Request 提供对 HTTP 请求数据的访问,同时还提供用于加入特定于请求的数据的上下文。

Response 允许直接访问 HTTPServletResponse 对象,JSP 程序员很少使用该对象。

Session 可能是状态管理上下文中使用得最多的对象。“会话”的概念是指单个用户与 Web 应用程序在几个请求上进行交互。

虽然有些隐式对象只提供单一的功能,但是几个结合起来使用就可以提供多种功能。在接下来的一节里,我们将按照功能分类来考察隐式对象:

会话管理: application , session , request , pageContext

流控制: application , config , pageContext , request , session

日志记录和异常: application , config , exception , pageContext , request , session

输入/输出控制: request , response , out

初始化参数: config

会话管理

上个月我们提到过,为 JSP 定义的四个隐式对象可以用来在一个特定的上下文或者作用域中加入有状态数据。这四个对象是 application 、 session 、 request 和 pageContext 。下表列出了这四个对象和它们定义的状态上下文,同时还给出了对每个对象的简单描述。

表1. JSP 状态管理

隐式对象 作用域 描述
javax.servlet.ServletContext Application 代表整个运行时的 Web 模块(应用程序)。作用域为 application 的数据在同一个应用程序模块的所有 Web 组件之间共享。这很像J2EE 中提供的“全局(global)”数据
javax.servlet.http.HttpSession Session 代表当前的 HTTP 会话。除 page 作用域外, session 作用域是使用最普遍的上下文。这个对象在提供跨多个请求的持久的、有状态的用户体验方面使用得最普遍
javax.servlet.http.HttpServletRequest Request 代表当前的 HTTP 请求。这个上下文可以跨越多个 Web 组件(servlet 和 JSP 页面),只要这些组件属于同一原子请求的一部分。由客户机提供的特定于请求的数据(请求方法、URI、HTTP 参数等等)都被自动地保存在一个 request 上下文中。servlet 或 JSP 页面还可以程式化地(programmatically)将数据的作用域指定为 request ,以便允许同一 request 作用域中的其他 servlet 或 JSP 页面可以获取该数据
javax.servlet.jsp.PageContext Page 代表当前 JSP 页面的上下文。因为一个 JSP 页面的上下文包括当前的请求、会话和应用程序,所以使用 pageContext 实例可以访问与一个JSP 页面相关的所有命名空间。它是所有对象的默认作用域,包括 JavaBeas 对象在内。 具有 page 作用域的对象通常会绑定到一个局部变量,以便在 scriptlet、表达式、JavaBeans 标记和自定义标记中可以访问它

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号