pageContext对象表明页面上下文,用于访问JSP之间的共享数据,使用pageContext能够访问page, request, session, application范围的变量。
使用pageContext对象的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范围。
使用pageContext对象的getAttributesScope(String name)函数能够获得name属性所在的范围对应的整数值,PAGE_SCOPE对应的值为1,REQUEST_SCOPE对应的值为2,SESSION_SCOPE对应的值为3,APPLICATION_SCOPE对应的值为4。
在当前页面调用getAttribute(String name, int scope)能获得当前page范围内的变量,本次request范围的变量,本次session范围的变量,application范围的范围,不能获得其它page范围的变量和其它request范围的变量。
以下是页面pageContext.jsp页面的代码,设置了以下7个变量:
page_val: 当前page范围的变量,其值为page_val;
request_val1: 本次request范围的变量,其值为request_val1;
request_val2: 本次request范围的变量,其值为request_val2;
session_val1: 本次session范围的变量,其值为session_val1;
session_val2: 本次session范围的变量,其值为session_val2;
app_val1: 本application范围的变量,其值为app_val1;
app_val2: 本application范围的变量,其值为app_val2;
而后在该页面中调用getAttributesScope(String name)函数分别获取这7个变量的范围,再调用getAttribute(String name, int scope)函数分别获取这7个变量的值。页面代码以下: html
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <% pageContext.setAttribute("page_val", "page_val"); pageContext.setAttribute("request_val1", "request_val1", pageContext.REQUEST_SCOPE); request.setAttribute("request_val2", "request_val2"); pageContext.setAttribute("session_val1", "session_val1", pageContext.SESSION_SCOPE); session.setAttribute("session_val2", "session_val2"); pageContext.setAttribute("app_val1", "app_val1", pageContext.APPLICATION_SCOPE); application.setAttribute("app_val2", "app_val2"); out.println("变量page_val所在范围:" + pageContext.getAttributesScope("page_val") + "<br />"); out.println("变量request_val1所在范围:" + pageContext.getAttributesScope("request_val1") + "<br />"); out.println("变量request_val2所在范围:" + pageContext.getAttributesScope("request_val2") + "<br />"); out.println("变量session_val1所在范围:" + pageContext.getAttributesScope("session_val1") + "<br />"); out.println("变量session_val2所在范围:" + pageContext.getAttributesScope("session_val2") + "<br />"); out.println("变量app_val1所在范围:" + pageContext.getAttributesScope("app_val1") + "<br />"); out.println("变量app_val2所在范围:" + pageContext.getAttributesScope("app_val2") + "<br />"); out.println("<br />"); out.println("page_val:" + pageContext.getAttribute("page_val") + "<br />"); out.println("request_val1:" + pageContext.getAttribute("request_val1", pageContext.REQUEST_SCOPE) + "<br />"); out.println("request_val2:" + pageContext.getAttribute("request_val2", pageContext.REQUEST_SCOPE) + "<br />"); out.println("session_val1:" + pageContext.getAttribute("session_val1", pageContext.SESSION_SCOPE) + "<br />"); out.println("session_val2:" + pageContext.getAttribute("session_val2", pageContext.SESSION_SCOPE) + "<br />"); out.println("app_val1:" + pageContext.getAttribute("app_val1", pageContext.APPLICATION_SCOPE) + "<br />"); out.println("app_val2:" + pageContext.getAttribute("app_val2", pageContext.APPLICATION_SCOPE) + "<br />"); %> </body> </html>
在浏览器中运行结果以下:
java
1即表示PAGE_SCOPE,2即表示REQUEST_SCOPE,3即表明SESSION_SCOPE,4即表示APPLICATION_SCOPE。
在该页面中能够访问到当前页面中设置的page范围的变量,本次request范围的变量,session范围的变量,application范围的变量。若是在一个与pageContext.jsp无关的独立的页面中,就只能访问session范围的变量,application范围的变量,不能访问pageContext.jsp页面中设置的page范围的变量和请求pageContext.jsp页面的那次request范围的变量。浏览器