Chinaunix首页 | 论坛 | 博客
  • 博客访问: 408787
  • 博文数量: 114
  • 博客积分: 7010
  • 博客等级: 少将
  • 技术积分: 1395
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-05 17:54
文章分类

全部博文(114)

文章存档

2011年(2)

2009年(1)

2008年(111)

我的朋友

分类: Java

2008-07-10 22:56:09

   JSP作用域通讯对象-pageContext
   pageContext对象使用户可以访问页面作用域中定义的所有隐式对象。pageContext对象提供方法以访问隐式对象在页面上定义的所有属性。它的作用范围仅仅在页面内。
   pageContext对象最常用的方法如下。
void setAttribute(String name,Object value):以键值的方式将一个对象的值存放到pageContext中。
void getAttribute(String name):根据名称去获取pageContext中存放对象的值。
这两个方法的使用与session,application类似
 
 
pageContext隐含对象对应于javax.servlet.jsp.PageContext型态之对象,,隐含对象都自动的被加入至pageContext中,您可以藉由它来取得与JSP相关的隐含对象对应之Servlet对象,像是getRequest()可以取得ServletRequestgetServletConfig()可以取得ServletConfiggetSession()可以取得HttpSession等等。提供取得隐含对象对应之Servlet对象并不是pageContext的主要作用,它的主要功能在提供一个单一个接口,以管理各种的公开对象(像是HttpSessionServletContextServletConfigServletRequestServletResponse等等),提供一个单一的API来管理属性作用范围等等。

我们之前曾经使用过sessionsetAttribute()等方法设定一个进程可以共享的属性对象,使用session设定的属性在同一个进程中可以共享,除了session之外,还有pageContextrequestapplication也都可以使用setAttribute()之类的方法(详请查阅API文件)来设定可以共享的属性对象,只不过这四个对象所设定的属性其共享范围各不相同。

使用pageContext所设定的属性对象,其共享范围限于同一个JSP页面,使用request所设定的属性对象,其在同一个request处理期间可以共享(包括forward给其它JSP页面),session对象所设定的属性对象则限于同一个进程作用期间可以共享,而application对象所设定的属性,则在整个Web应用程序中的JSP页面都可以共享。

以下举application为例,您可以将一些对象当作属性设定给application,则另一个JSP页面就可以在适当的时候取得这个属性对象,例如:

<%    String attr = "
字符串对象";    out.println("设定属性给application" + attr);    application.setAttribute("str", attr);%>


我们先连上这个JSP网页以执行属性设定,然后我们再连上这个JSP网页:


<%    String attr = (String) application.getAttribute("str");    out.println("
取得application属性:" + attr);%>


由于我们之前已经将字符串对象设定在application中作为属性,所以我们可以在上面这个页面中取得之前设定的对象,同样的道理,您也可以用相同的方式设定属性给pageContextrequestsession等对象,只要在允许的作用范围中,就可以取得所设定的属性对象。


您可以使用pageContext对象来设定属性,并指定属性的作用范围,而不用使用个别的pageContextrequestsessionapplication来进行设定,这就是之前所提的,以pageContext提供一个单一的API来管理属性作用范围,您可以使用以下的方法来进行设定:

getAttribute(String name, int scope)setAttribute(String name, Object value, int scope)removeAttribute(String name, int scope)


其中的scope可以使用以下的常数来进行指定:pageContext.PAGE_SCOPEpageContext.REQUEST_SCOPEpageContext.SESSION_SCOPEpageContext.APPLICATION_SCOPE,常数的名称已经直接指明属性范围,我们可以将上面的两个JSP页面改为以下的形式:

<%    String attr = "
字符串对象";    out.println("设定属性给application" + attr);    pageContext.setAttribute("str", attr, pageContext.APPLICATION_SCOPE);%>


<%    String attr = (String) pageContext.getAttribute("str", pageContext.APPLICATION_SCOPE);    out.println("
取得application属性:" + attr);%>

 
阅读(1532) | 评论(0) | 转发(0) |
0

上一篇:application对象

下一篇:博客公告

给主人留下些什么吧!~~