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範圍的變量。瀏覽器