JSP的pageContext对象

【原文】http://blog.csdn.net/yinzhao0509/archive/2007/04/13/1563207.aspx

 

pageContext隐含对象对应于javax.servlet.jsp.PageContext型态之对象,隐含对象都自动的被加入至pageContext中,您可以藉由它来取得与JSP相关的隐含对象对应之Servlet对象,像是getRequest()可以取得ServletRequest,getServletConfig()可以取得ServletConfig,getSession()可以取得HttpSession等等。提供取得隐含对象对应之Servlet对象并不是pageContext的主要作用,它的主要功能在提供一个单一个接口,以管理各种的公开对象(像是HttpSession、ServletContext、ServletConfig、ServletRequest、ServletResponse等等),提供一个单一的API来管理属性作用范围等等。

 

我们之前曾经使用过session的setAttribute()等方法设定一个进程可以共享的属性对象,使用session设定的属性在同一个进程中可以共享,除了session之外,还有pageContext、request、application也都可以使用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中作为属性,所以我们可以在上面这个页面中取得之前设定的对象,同样的道理,您也可以用相同的方式设定属性给pageContext、request、session等对象,只要在允许的作用范围中,就可以取得所设定的属性对象。

 

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

 

getAttribute(String name, int scope)

setAttribute(String name, Object value, int scope)

removeAttribute(String name, int scope)


其中的scope可以使用以下的常数来进行指定:pageContext.PAGE_SCOPE、pageContext.REQUEST_SCOPE、pageContext.SESSION_SCOPE、pageContext.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);

%>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值