JSP内置对象

2020-03-26   301 次阅读


概述

JSP内置对象是指在JSP页面系统中已经默认内置的Java对象,这些对象起简化页面的作用。
内置对象由容器进行管理,不需要开发人员显式声明即可使用,所有的JSP代码都可以直接访问内置对象。

内置对象的作用范围:
作用范围指的是每个内置对象的某个实例在多长时间和多大的范围内有效,在什么样的范围内可以有效的访问同一个对象实例。
在JSP中定义了4种作用范围:application、session、page、request。

1.application
application作用域是服务器启动到关闭的这段时间,在这个作用域内设置的信息可以被所有应用程序使用。在所有的JSP内置对象中,application停留时间最长,任何页面在任何时候都可以访问application的对象。由于服务器始终需要在内存中保存application对象的实例,因此application对象占据的资源是巨大的。
2.session
session 即“会话”的意思。是指其作用范围在客户端同服务器相连的时间,直到其连接中断为止。用户请求访问服务器时 session 对象开始生效,用户断开退出时 session对象失效。有些服务器对 session对象有默认时间限定,超过时间限制,session自动失效而不管用户是否已经终止连接。
3.request
request即“请求”的意思。在HTTP中,浏览器给服务器发送一个请求开始到服务器返回给浏览器一个响应信息结束,这个期间就是一个request。
request指定的request对象作用范围是在一个jsp页面指向另一个jsp页面提出请求到请求完成之间,在完成请求后此范围即结束。

page1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>page1</title>
</head>
<body>
	<%
		request.setAttribute("username", "july");
	%>
	<jsp:forward page="page2.jsp"></jsp:forward>
</body>
</html>

page2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>page2</title>
</head>
	<body>
		<%
			out.println("属性username的值为:"+request.getAttribute("username"));
		%>
		<%-- <jsp:include page="page2.jsp" flush="true"></jsp:include> --%>
		<jsp:forward page="page3.jsp"></jsp:forward>
	</body>
</html>

page3.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>page3</title>
</head>
	<body>
		<%
			out.println("属性username的值为:"+request.getAttribute("username"));
		%>
	</body>
</html>

4.page
request Scope 允许在不同页面之间传递数据,但是page则同,它只能获取本页的数据。
如果把request对象替换成pageContext,则无法访问到username属性。
page1.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>page1</title>
</head>
<body>
	<%
		pageContext.setAttribute("username", "july");
	%>
	<jsp:forward page="page2.jsp"></jsp:forward>
</body>
</html>

page2.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>page2</title>
</head>
	<body>
		<%
			out.println("属性username的值为:"+request.getAttribute("username"));
		%>
		<%-- <jsp:include page="page2.jsp" flush="true"></jsp:include> --%>
		<jsp:forward page="page3.jsp"></jsp:forward>
	</body>
</html>

request 对象

从客户端向服务器发出请求,客户端通过HTML表单或在网页地址后提供参数的方法提交数据,再通过request对象的相关方法来获取这些数据。
与request相联系的是HttpServletRequest类。
通过getParameter方法可以得到request参数;通过GET、POST、HEAD等方法可以得到request类型;通过cookies、Referer等可以得到引入的HTTP头。

request.getParameter()和request.getAttribute()都能够获得传递来的信息(参数或属性),但它们使用有区别:
1.request.getParameter()通过容器来取得通过类似post、get等方式传入的HTTP请求数据,传递的数据从客户端传到服务端。request.setAttribute()和request.getAttribute()只是在web容器内部流转,仅仅是请求处理阶段,传递的数据只存在于web容器内部。

2.request.getParameter()方法获得String类型的数据,request.getAttribute()获得Object类型的数据。

3.Servlet技术中HttpServletRequest类有setAttribute()方法,而没有setParameter()方法。
应用一:获取表单提交信息
login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>UserLogin</title>
</head>
	<body>
		<center>
			<h2>用户注册</h2>
			<form name="#" action="showUserInfor.jsp" method="post">
				<table border="2" style="font-size: 20px;">
					<tr>
						<td>用户名:</td>
						<td><input type="text" name="userName"></td>
					</tr>
					<tr>
						<td>密码:</td>
						<td><input type="password" name="userPassword"></td>
					</tr>
					<tr>
						<td>确认密码:</td>
						<td><input type="password" name="userpassword1"></td>
					</tr>
					<tr>
						<td>密码提示问题:</td>
						<td><input type="text" name="passwordHint"></td>
					</tr>
					<tr>
						<td>姓名:</td>
						<td><input type="text" name="truename"></td>
					</tr>
					<tr>
						<td>性别:</td>
						<td>
							<input type="radio" name="gender" value="男">男
							<input type="radio" name="gender" value="女">女
						</td>
					</tr>
					<tr>
						<td>出生日期:</td>
						<td>
							<select name="selectyear" size="2">
								<option selected>1998</option>
								<option >1999</option>
								<option >2000</option>
								<option >2020</option>
							</select>年
							<select name="selectmonth" size="2">
								<option selected>1</option>
								<option >2</option>
								<option >3</option>
								<option >4</option>
							</select>月
						</td>
					</tr>
					<tr>
						<td>证件类型:</td>
						<td>
							<select name="selectid">
								<option value="学生证">学生证</option>
								<option value="身份证" selected>身份证</option>							
							</select>
						</td>
					</tr>
					<tr>
						<td>证件号码:</td>
						<td><input type="text" name="userID"></td>
					</tr>
					<tr>
						<td colspan="3" align="center">
							<input type="submit" name="submit" value="提交">
							<input type="reset" name="reset" value="取消">
						</td>
					</tr>
				</table>
			</form>
		</center>
	</body>
</html>

showUserInfor.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
	<body>
	<!-- request对象的应用 -->
		<%
			request.setCharacterEncoding("utf-8");//解决中文乱码
			String username = request.getParameter("userName");
			String truename = request.getParameter("truename");
			String passwordHint = request.getParameter("passwordHint");
			String gender = request.getParameter("gender");
			String selectyear = request.getParameter("selectyear");
			String selectmonth = request.getParameter("selectmonth");
			String selectid = request.getParameter("selectid");
			String userID = request.getParameter("userID");
			
		%>
		您的信息如下,请核对:<br>
		用户名:<%=username %><br>
		姓名:<%=truename %><br>
		密码提示问题:<%=passwordHint %><br>
		性别:<%=gender %><br>
		出生年月:<%=selectyear %>年<%=selectmonth %>月<br>
		证件类型:<%=selectid %><br>
		证件号:<%=userID %><br>
	</body>
</html>

提交信息后,结果如下:

您的信息如下,请核对:
用户名:aa
姓名:啊啊啊啊
密码提示问题:啊啊啊
性别:男
出生年月:1998年1月
证件类型:身份证
证件号:啊啊啊啊啊啊

应用二:获取checkbox类的数据

1,通过request.getParameterValues(String name) 方法获得指定名称的成组信息,多用于获取checkbox类(名字相同,但值有多个)的数据。

2,当request对象获取对象提交的汉子字符时,可能会出现乱码问题,必须进行特殊处理。

将获取的字符串用ISO-8859-1进行编码,并将编码存放到一个字节数组中。

将这个数组转化为字符串对象

String textContent = request.getParameter("userName");
byte b[] = textContent.getBytes("ISO-8859-1");
textContent = new String(b);

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
	<body bgcolor="#fffff0">
		用户购物调查<br>
		<form action="" method="post">
			您获得商品信息的来源是:
				<input type="checkbox" name="favor" value="网络">网络
				<input type="checkbox" name="favor" value="电视">电视
				<input type="checkbox" name="favor" value="广播">广播
				<input type="checkbox" name="favor" value="广告手册">广告手册
				<br>
				<input type="submit" value="进入" name="qwe">
		</form>
		
	<!-- 处理中文乱码 
		<%!
			public String trans(String str) throws Exception{
				byte b[] = str.getBytes("ISO-8859-1");
				str = new String(b,"utf-8");
				return str;
			}
		%>
	-->
		<%
			request.setCharacterEncoding("utf-8");
			if(request.getParameter("qwe")!=null){
				for(int i=0;i<request.getParameterValues("favor").length;i++){
					out.println("购物喜好"+i+":"+request.getParameterValues("favor")[i]+"<br>");
				}
				out.println(request.getParameter("qwe"));
			}
			out.println("============Request方法应用==========="+"<br>");
			out.println("ip:"+request.getRemoteAddr()+"<br>");
			out.println("port:"+request.getLocalPort()+"<br>");
			out.println("host:"+request.getRemoteHost()+"<br>");
			out.println("host:"+request.getProtocol()+"<br>");
			out.println("Cookie:"+request.getHeader("Cookie")+"<br>");
			out.println("Request URL:"+request.getRequestURL()+"<br>");
			out.println("Server Info:"+request.getServletContext().getServerInfo()+"<br>");
		%>
	</body>
</html>

response 对象

response对象的作用是处理HTTP连接信息,如Cookie、HTTP文件头信息等等,它有很多功能是和request对象相匹配的。

与response相联系的是HttpServletResponse类,用于控制HTTP连接。

因为输出流是放入缓存的,所以可以设置HTTP状态码和response头。主要用于向客户端发送数据,如Cookie、HTTP等头文件信息。

应用一:页面自动刷新

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>AutoRefresh</title>
</head>
<body>
	<%! int i = 0; %>
	<%
		response.setHeader("refresh","1");//每1秒自动刷新一次
		out.println("Request URL:"+request.getRequestURL()+"<br>");
	%>
	<h1><%=i++ %></h1>
</body>
</html>

应用二:页面自动跳转

userlogin.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>用户登录页面</title>
	</head>
	<body>
		<center>
			<h2>用户注册</h2>
			<form name="#" action="loginDeal.jsp" method="post">
				<table border="2" style="font-size: 20px;">
					<tr>
						<td>用户名:</td>
						<td><input type="text" name="username"></td>
					</tr>
					<tr>
						<td>密码:</td>
						<td><input type="password" name="password"></td>
					</tr>
				
					<tr>
						<td colspan="3" align="center">
							<input type="submit" name="submit" value="提交">
							<input type="reset" name="reset" value="取消">
						</td>
					</tr>
				</table>
			</form>
		</center>
	</body>
</html>

loginDeal.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>登录判断页面</title>
	</head>
	<body>
		<%
			String username = request.getParameter("username");
			String password = request.getParameter("password");
			
			if(username != null && username.equals("") || password != null && password.equals("")){
				response.sendRedirect("loginError.jsp");
			}else{
				response.sendRedirect("index.jsp");
			}
		%>
	</body>
</html>

loginError.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>页面自动跳转</title>
	</head>
	<body>
		<h3 align="center">用户名或密码不能为空!<br>
		
		<%
			response.setHeader("refresh", "3;URL = userlogin.jsp");
		%>
			3秒后自动跳转到登录页面,或<a href="userlogin.jsp">手动跳转到登录页面</a>
		</h3>
	</body>
</html>

使用sendRedirect()方法,即向服务器发送一个重新定向的请求。所以原来页面的request参数转到新页面后就失效了。此语句后的其它语句人会继续执行,为了避免错误,往往在此方法之后使用“return”终止其它语句执行。

sendRedirect()方法和jsp:forward页面跳转区别

1.sendRedirect实现请求重定向,forward实现请求转发,二者在web服务器内部的处理机制不同。
forward方法只能转发给同一个web站点的资源,而sendRedirect还可以定位到同一个web站点的其它应用,或通过传入绝对路径定位到别的web站点。

2.forward转发之后,浏览器URL地址不变,sendRedirect重定向后,浏览器URL地址变为目标URL地址。

3.使用forward重定向的过程,是浏览器先向目的servlet发送一次Request请求,然后在服务器端由servlet再将请求发送到目的URL,再由服务器端servlet返回Response到浏览器端,浏览器和服务器发生一次请求响应。Redirect转发,浏览器先向目的servlet发送一次请求,servlet看到Redirect将目的URL返回到浏览器,浏览器再去请求目的URL,目的URL再返回response到浏览器。浏览器和服务器发生两次请求响应。

4.forward方法的调用者与被调用者之间共享Request和Response。sendRedirect方法由于两次浏览器服务器请求,所以又两个Request和Response。如果使用request.setAttribute传递参数或属性就需要用forward。

注意:
无论是forward还是sendRedirect方法调用,前面都不能有PrintWriter输出到客户端。

为客户端设置Cookie:通过 new Cookie(name,value) 方法创建一个或多个包含合适名称和值的Cookie。通过 cookie.setXxx() 方法可以设置一些可选属性值,通过 response.addCookie(cookie) 可以将Cookie传送到客户端。

读取Cookies:则调用request.getCookies()方法,该方法返回Cookie对象数组。

遍历Cookie对象数组:通过getName()方法就可以找到与期望名称相符合的Cookie,然后再调用getValue()方法就可以获得该Cookie的值。

setCookie.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Cookie的使用</title>
	</head>
	<body>
		<%
			Cookie c1 = new Cookie("name","admin");
			Cookie c2 = new Cookie("password","abc");
			//最大保存时间为60秒
			c1.setMaxAge(60);
			c2.setMaxAge(60);
			//通过response对象将Cookie设置到客户端
			response.addCookie(c1);
			response.addCookie(c2);
			
		%>
	</body>
</html>

getCookie.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Insert title here</title>
	</head>
	<body>
		<%
			//通过requ对象,取得客户端设置的全部Cookie
			//实际上客户端的Cookie是通过HTTP头信息发送到服务器端的
			Cookie c[] = request.getCookies();
		%>
		<%
			for(int i=0;i<c.length;i++){
				Cookie temp = c[i];
				%>
		<%=temp.getName()%> and <%=temp.getValue() %><br>
		<% 
			}
		%>  
	</body>
</html>

session 对象

从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个session(会话)。

网上购物时购物车中最常使用的就是session。当用户把物品放入购物车时,就可以将用户选定的商品信息存放在session中,当需要进行付款等操作时,又可以将session中的信息取出来。

获取session对象方法

1.使用session关键字直接引用session对象。
2.使用request对象的getSession()方法。
该方法可以返回HttpSession接口的实例对象,也就是session对象,这个新获得的HttpSession对象不能够被命名为session,因为session是jsp引擎自动创建的当前session对象的一个同步副本。
3.使用PageContext对象的getSession方法。
该方法可以获得Application对象的副本,同样,使用PageContext 对象的getSession()方法也可以获得session对象的一个副本。

session对象应用

<%@page import="java.sql.Time"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Insert title here</title>
	</head>
	<body>
		session的创建时间:<%=session.getCreationTime() %> &lt;%=new Date(session.getCreationTime())%><br><br>
		session的ID号:<%=session.getId() %><br><br>
		客户端最后一次请求时间:<%=session.getLastAccessedTime() %> &nbsp;<%=new Time(session.getLastAccessedTime()) %><br><br>
		两次请求间隔多长时间此session被取消(s):<%=session.getMaxInactiveInterval() %><br><br>
		是否是新创建的一个session:<%=session.isNew()?"是":"否" %><br><br>
		<% 
			session.putValue("name", "admin");
			session.putValue("nmber", "123");
		%>
		<%
			for(int i=0;i<session.getValueNames().length;i++){
				
				out.println(session.getValueNames()[i]+"="+session.getValue(session.getValueNames()[i]));
			}
		%>
		<!-- 返回从格林威治时间(GMT)1970年1月1日0:00:00起到计算当时的毫秒数 -->
	</body>
</html>

如果不关闭浏览器而刷新页面,则不会分配新的sessionid,只是更新最近一次的请求时间。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<!-- 为session 设置属性“username” 并将其值设置为 “rot”-->
	<%
		session.setAttribute("username", "rot");
	%>
	<a href="usesession2.jsp">continue</a>
</body>
</html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
	<%-- session 会因为超时而发生失效(系统默认30分钟),判断用户已经离开网站,session对象被自动清空。
		也可以使用invalidate()方法强制销毁改session对象。
		
		session的有效时间设置有2种方法
			1.在web.xml 中设置
				<session-config>
					<session-timeout>30</session-timeout> //单位为分钟
				</session-config>
			2.在创建session时直接设置
				session.setMaxInactiveInterval(30);//单位为秒 
	--%>
	<body>
		<!-- 通过session 对象获取到存储的姓名属性username 的值 -->
		Hello,<%= session.getAttribute("username") %>
		<% session.setMaxInactiveInterval(30); %>
	</body>
</html>

application 对象

在jsp中使用session对象来保存每个用户的私有信息,但有时服务器需要管理面向整个应用的参数,使每个用户都能获得同样的参数值。为此jsp提供了Application对象。

作用范围:全局范围、整个应用程序共享。
生命周期:启动到停止。
所有客户端共享内置的application对象读取和写入的数据都是共享的。

应用:实现网站计数器
即使将页面关闭重新打开,或者从不同客户端浏览器打开该网页,计数器仍然有效,直到重启服务器为止。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
		<title>网站计数器</title>
		</head>
	<body>
		<%
			if(application.getAttribute("count") == null){
				application.setAttribute("count", "1");
				out.println("欢迎 ! 您是第 1 位访客 ~");
			}else{
				int i = Integer.parseInt((String)application.getAttribute("count"));
				i++;
				application.setAttribute("count", String.valueOf(i));
				out.println("欢迎 ! 您是第"+i+"位访客 ~");
			}
		%>
	</body>
</html>

Application对象还可以用来加载web应用的配置参数

exception 对象

当异常发生时,使用errorPage命令指定该由哪个页面处理发生的异常。要使用该内置对象,必须在page命令中设定 <%@ page isErrorPage="true"%> 否则编译会发生错误。

exceptionSource.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page errorPage="exceptionShow.jsp" %>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Insert title here</title>
	</head>
	<body>
		<%
			//计算结果
			String result = "";
			//判断是否提交表单
			String action = request.getParameter("action");
			if(action != null){
				int n = (new Integer(request.getParameter("number"))).intValue();
				result = String.valueOf(100/n);
			}
		%>
		
			<form name=exception method="post" action="exceptionSource.jsp?action=submit">
				输入一个数:<input name="number" value=""><input type="submit" value="提交">
				<br>100除以该数得:<%=result %>
			</form>
		
	</body>
</html>

exceptionShow.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ page isErrorPage="true" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<% 
		out.println("exception.toString():");
		out.println("<br>");
		out.println(exception.toString());
		out.println("<p>");
		out.println("exception.getMessage():");
		out.println("<br>");
		out.println(exception.getMessage());
	
	%>
</body>
</html>

out 对象

用于向客户端输出PrinterWriter对象。out对象发送的内容是浏览器需要显示的内容,可以通过out对象直接向客户端写一个由程序动态生成的HTML文件。out对对象内部包含了一个缓冲区,实际上是带有缓冲特性的PrinterWriter,可以称之为JspWriter。通过page指令的buffer属性设置缓冲区容量。

其它对象

config 对象

代表当前jsp配置信息,但jsp页面通常无需配置,不存在配置信息,该对象在jsp页面中较少使用。但Servlet需要在web.xml文件中配置,可以指定配置参数。

<%@page import="java.util.Enumeration"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		Enumeration enums = pageContext.getAttributeNamesInScope(PageContext.APPLICATION_SCOPE);
		out.println("application范围内的属性有:"+"<br>");
		
		while(enums.hasMoreElements()){
			out.println(enums.nextElement()+"<br>");
		}
	%>
	<%
		out.println("服务器信息:"+config.getServletContext().getServerInfo()+"<br>");
		out.println("服务器名称:"+config.getServletName());
		out.println("初始化参数名:"+config.getInitParameterNames()+"<br>");
	%>
</body>
</html>

运行结果:

application范围内的属性有:
javax.servlet.context.tempdir
 org.apache.catalina.resources
 org.apache.tomcat.InstanceManager
 org.apache.catalina.jsp_classpath
 javax.websocket.server.ServerContainer
 org.apache.jasper.compiler.ELInterpreter
 org.apache.jasper.compiler.TldCache
 org.apache.tomcat.JarScanner
 org.apache.jasper.runtime.JspApplicationContextImpl
服务器信息:Apache Tomcat/8.5.46
服务器名称:jsp 初始化参数名:java.util.Collections$3@123fe344

page 对象

是java.lang.Object类的对象,类似于java中的this指针,指当前jsp页面本身。

pageContext 对象

一个比较特殊的对象,相当于页面中所有其他对象功能的集成者,使用他可以访问到本页面中所有其它对象,例如request、response、out、page对象等。当内置对象包括属性时,pageContext也支持对这些属性的读取和写入,在使用下面这些方法时,需要指定作用范围。

Object getAttribute(String name,int scope);
Enumeration getAttributeNamesInscope(int scope);
void removeAttribute(String name,int scope);
void setAttribute(String name,Object value,int scope);

PAGE_SCOPE 代表page范围,request_Scope代表Request范围,session_SCOPE代表Seesion范围,Application_SCOPE代表Application范围。

Q.E.D.

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

隻言片語・於此匯聚!