这个对象代表页面上下文,该对象主要用于访问JSP之间的共享数据。使用pageContext可以访问page、request、session、application范围的变量。
pageContext是PageContext类的实例,它提供了如下两个方法来访问page、request、session、application范围的变量。
getAttribute(String name):取得page范围内的name属性。
getAttribute(String name,int scope):取得指定范围内的name属性,其中scope可以是如下4个值:
PageContext.PAGE_SCOPE:对应于page范围。
PageContext.REQUEST_SCOPE:对应于request范围。
PageContext.SESSION_SCOPE:对应于session范围。
PageContext.APPLICATION_SCOPE:对应于application范围。
与getAttribute()方法相对应,PageContext也提供了2个对应的setAttribute()方法,用于将指定变量放入page、request、session、application范围内。
下面的JSP页面示范了使用pageContext来操作page、request、session、application范围内的变量。
程序清单:codes\02\2.9\jspObject\pageContextTest.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>pageContext测试</TITLE> </HEAD> <BODY> <% //使用pageContext设置属性,该属性默认在page范围内 pageContext.setAttribute("page","hello"); //使用request设置属性,该属性默认在request范围内 request.setAttribute("request","hello"); //使用pageContext将属性设置在request范围中 pageContext.setAttribute("request2","hello" , pageContext.REQUEST_SCOPE); //使用session将属性设置在session范围中 session.setAttribute("session","hello"); //使用pageContext将属性设置在session范围中 pageContext.setAttribute("session2","hello" , pageContext.SESSION_SCOPE); //使用application将属性设置在application范围中 application.setAttribute("app","hello"); //使用pageContext将属性设置在application范围中 pageContext.setAttribute("app2","hello" , pageContext.APPLICATION_SCOPE); //下面获取各属性所在的范围: out.println("page变量所在范围:" + pageContext.getAttributesScope("page") + "<br>"); out.println("request变量所在范围:" + pageContext.getAttributesScope("request") + "<br>"); out.println("request2变量所在范围:"+ pageContext.getAttributesScope("request2") + "<br>"); out.println("session变量所在范围:" + pageContext.getAttributesScope("session") + "<br>"); out.println("session2变量所在范围:" + pageContext.getAttributesScope("session2") + "<br>"); out.println("app变量所在范围:" + pageContext.getAttributesScope("app") + "<br>"); out.println("app2变量所在范围:" + pageContext.getAttributesScope("app2") + "<br>"); %> </BODY> </HTML>
|
上面页面的粗体字代码使用pageContext将各变量分别放入page、request、session、application范围内,程序的斜体字代码还使用pageContext获取各变量所在的范围。
浏览上面页面,可以看到如图2.23所示的效果。
|
图2.23 使用pageContext操作各范围属性的效果 |
图2.23中显示了使用pageContext获取各属性所在的范围,其中这些范围获取的都是整型变量,这些整型变量分别对应如下4个生存范围。
1:对应page生存范围。
2:对应request生存范围。
3:对应session生存范围。
4:对应application生存范围。