7 pageContext对象
pageContext对象被封装成javax.servlet.jsp.PageContext接口,它为Jsp页面包装页面上下文,它封装了对其它八大隐式对象的引用,提供存取所有关于Jsp程序执行时期所要用到的属性方法。
pageContext对象常用方法如下表所示。
方法名称 | 说明 |
---|---|
forward(String relativeURL) | 把页面转发到另一个页面或者Servlet组件上 |
getAttribute(String name[,int scope]) | 获取属性的值 |
getException() | 返回当前的exception对象 |
getRequest() | 返回当前的request对象 |
getResponse() | 返回当前的response对象 |
getServletConfig() | 返回当前页面的ServletConfig对象 |
getServletContext() | 返回ServletContext对象。这个对象对所有页面都是共享的 |
getSession() | 返回当前页面的session对象 |
setAttribute(String name,String value) | 设置属性值 |
removeAttribute(String name) | 删除指定属性 |
invalidate() | 返回ServletContext对象,全部销毁。 |
实例代码:
<%@ page pageEncoding="UTF-8"%>
<html>
<body>
<form method=post action="PageContext1.jsp">
<table>
<tr>
<td>登录账号</td>
<td>
<input type=text name=name>
</td>
</tr>
<tr colspan=2>
<td>
<input type=submit value=登录>
</td>
</tr>
</table>
</body>
</html>
<%@ page pageEncoding="UTF-8"%>
<%
ServletRequest req = pageContext.getRequest();
String name = req.getParameter("name");
byte b[] = name.getBytes("ISO-8859-1");
name = new String(b);
out.println("name=" + name);
pageContext.setAttribute("userName", name);
pageContext.getServletContext().setAttribute("sharevalue", "多个页面共享的值");
pageContext.getSession().setAttribute("sessionValue", "只有在session中才是共享的值");
out.println("<br>pageContext.getAttribute('userName')=");
out.println(pageContext.getAttribute("userName"));
%>
<a href="PageContext2.jsp">下一步--></a>
<hr>
<%@ page pageEncoding="UTF-8"%>
pageContext的测试页面-获得前一页面设置的值:
<br>
<%
out.println("<br>pageContext.getAttribute('userName')=");
out.println(pageContext.getAttribute("userName"));
out.println("<br>pageContext.getSession().getAttribute('sessionValue')=");
out.println(pageContext.getSession().getAttribute("sessionValue"));
out.print("<br>");
out.println("pageContext.getServletContext().getAttribute('sharevalue')=");
out.println(pageContext.getServletContext().getAttribute("sharevalue"));
%>
程序说明:
1)pageContext属性默认在当前页面共享。
2)session属性在当前session中是共享的。
3)ServletContext对象中属性对所有页面都是共享的。
运行结果:
输入张三,单击“登录”, 如图所示。
单击“下一步”链接,如图所示。
重新启动一个浏览器,输入http://localhost:8081/jsp3/PageContext2.jsp,结果如图所示。