Board logo

标题: J2EE 探索者 隐式对象的多种用法 [打印本页]

作者: look_w    时间: 2018-7-15 09:11     标题: J2EE 探索者 隐式对象的多种用法

隐式对象简介 JSP 架构背后的理念是提供一个 Web 组件,它允许开发人员着重关注 Web 内容的表示,而不用陷入解析、编程和数据操纵等细节。JSP                应用程序本质上是特殊的 Web 组件,在处理用户请求之前,J2EE Web 容器首先将其转换成 servlet。在每个 JSP                应用程序内部有一套完整的隐式对象。
隐式对象使得开发人员可以访问容器提供的服务和资源。这些对象之所以定义为                隐式的,是因为您不必显式地声明它们。不论您是否声明它们――虽然您不能 重复声明它们,它们在每个 JSP                页面当中都进行定义,并且在后台由容器使用。因为隐式对象是自动声明的,所以我们只需要使用与一个给定对象相关的引用变量来调用其方法。
9 个隐式对象及其功能的简单描述如下:
虽然有些隐式对象只提供单一的功能,但是几个结合起来使用就可以提供多种功能。在接下来的一节里,我们将按照功能分类来考察隐式对象:
会话管理 上个月我们提到过,为 JSP 定义的四个隐式对象可以用来在一个特定的上下文或者作用域中加入有状态数据。这四个对象是                     application 、 session 、                request 和      pageContext                。下表列出了这四个对象和它们定义的状态上下文,同时还给出了对每个对象的简单描述。
表1. JSP 状态管理隐式对象作用域描述javax.servlet.ServletContextApplication                            代表整个运行时的 Web 模块(应用程序)。作用域为 application 的数据在同一个应用程序模块的所有 Web                            组件之间共享。这很像J2EE 中提供的“全局(global)”数据javax.servlet.http.HttpSessionSession代表当前的                            HTTP 会话。除 page 作用域外,                            session                            作用域是使用最普遍的上下文。这个对象在提供跨多个请求的持久的、有状态的用户体验方面使用得最普遍 javax.servlet.http.HttpServletRequestRequest                            代表当前的 HTTP 请求。这个上下文可以跨越多个 Web 组件(servlet 和 JSP                            页面),只要这些组件属于同一原子请求的一部分。由客户机提供的特定于请求的数据(请求方法、URI、HTTP                            参数等等)都被自动地保存在一个 request  上下文中。servlet 或 JSP                            页面还可以程式化地(programmatically)将数据的作用域指定为 request                            ,以便允许同一 request  作用域中的其他 servlet 或 JSP 页面可以获取该数据                        javax.servlet.jsp.PageContextPage                            代表当前 JSP 页面的上下文。因为一个 JSP 页面的上下文包括当前的请求、会话和应用程序,所以使用                            pageContext 实例可以访问与一个JSP                            页面相关的所有命名空间。它是所有对象的默认作用域,包括 JavaBeas 对象在内。 具有                            page 作用域的对象通常会绑定到一个局部变量,以便在                            scriptlet、表达式、JavaBeans 标记和自定义标记中可以访问它
从最佳实践的立场来看,我们应该尽可能地使用 page 作用域。它简单,而且是 JSP 数据的默认作用域。                request 作用域非常适合于运行期间在组件间共享数据以处理一个特定的请求。                session 作用域被设计用来为单个用户提供持久的、有状态的体验,它可以跨越多个请求。                application 作用域只有需要在组件之间跨用户会话共享数据时才应该使用。参阅 以了解更多有关 session 作用域的信息。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0