Web应用使用pageContext对象

        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范围的变量。浏览器

相关文章
相关标签/搜索