快速业务通道

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

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

从最佳实践的立场来看,我们应该尽可能地使用 page 作用域。它简单,而且是 JSP 数据的默认作用域。 request 作用域非常适合于运行期间在组件间共享数据以处理一个特定的请求。 session 作用域被设计用来为单个用户提供持久的、有状态的体验,它可以跨越多个请求。 application 作用域只有需要在组件之间跨用户会话共享数据时才应该使用。参阅 参考资料以了解更多有关 session 作用域的信息。

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

时间:2011-03-14 IBM Kyle Gabhart

流控制

面向对象设计方法的最大好处是可重用性。特别是,J2EE 系统将它们借用到模块化风格的开发中,其中组件可以在其他应用程序中重新安排、重新打包和重新使用。即使您对设计可重用的 Web 模块不感兴趣,也很可能会发现您的 J2EE 应用程序由几个部分组成。任何时候使用多个 servlet 或者 JSP 页面(也就是组件)完成一个请求的时候,都需要使用某种类型的流控制技术。Servlet 架构提供两种这样的技术:forward(转发) 和 include(包括)。

在 J2EE Web 开发中, forward会把处理用户请求的控制权转交给到其他 Web 组件。forward 在有些时候会比较有用,比如说需要用一个组件设置一些 JavaBean、打开或关闭资源、认证用户,或者在将控制权传递给下一个组件之前需要执行一些准备工作。在转发之前可以执行很多类型的任务,但是要转发的组件不能设置响应头部信息,也不能有内容发送到输出缓冲区。所有与向客户发送内容直接相关的任务必须由被转发的组件完成。

J2EE 中第二种流控制技术是 include。在使用 forward 时,要传递控制权。与此不同的是,执行 include 的组件维持对请求的控制权,而只是简单地请求将另一个组件的输出包括在该页面的某个特定的地方。对于常见的设计元素,例如页首、页脚和导航栏等,这是一个非常好的方法。

forward 和 include 都是通过一个专门的对象 java.servlet.RequestDispatcher 来完成的。简单地调用一个 ServletContext 对象的 getRequestDispatcher() 方法就可以获得一个 RequestDispatcher 对象。得到对 ServletContext 对象的引用有几种方法,我们可以:

使用隐式声明的 application 变量,因为它的类型本身已经是 ServletContext。

调用方法 getServletContext() ,该方法返回一个对隐式声明的 application 变量的引用。

调用隐式声明的 config 变量的 g etServletContext() 方法 。

调用隐式声明的 pageContext 变量的 getServletContext() 方法 。

调用隐式声明的 request 变量的 getServletContext() 方法 。

调用隐式声明的 session 变量的 getServletContext() 方法 。

清单1给出了使用隐式变量 application 的 forward 流控制机制的代码示例。

清单1. forward 流控制示例

javax.servlet.RequestDispatcher rd; /* Obtain a reference to a RequestDispatcher object via the implicit    application variable*/ rd = application.getRequestDispatcher( "/NextPage.jsp" ); /* Perform the forward specified by the RequestDispatcher    and pass along a reference to the current request and    response objects */ rd.forward( request, response );

清单2给出了同样使用变量 application 的 include 流控制的代码示例。

清单2. include 流控制示例

javax.servlet.RequestDispatcher rd; /* Obtain a reference to a RequestDispatcher object via the implicit    application variable*/ rd = application.getRequestDispatcher( "/Header.jsp" ); /* Perform the include specified by the RequestDispatcher    and pass along a refere

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号