JSP内置对象--pageContext对象(非常重要!!!)

时间:2021-02-03 13:07:53

pageContext对象是javax.servlet.jsp.PageContext类的实例,只要表示的是一个jsp页面的上下文,而且功能强大,几乎可以操作各种内置对象。

>forward(String relativeUrlPath):将当前页面转发到另外一个页面或者Servlet组建上;
>getRequest():返回当前页面的request对象;
>getResponse():返回当前页面的response对象;
>getServetConfig():返回当前页面的servletConfig对象;
>getServletContext():返回当前页面的ServletContext对象,这个对象是所有的页面共享的.
>getSession():返回当前页面的session对象;
>findAttribute():按照页面,请求,会话,以及应用程序范围的属性实现对某个属性的搜索;
>setAttribute():设置默认页面范围或特定对象范围之中的对象.
>removeAttribute():删除默认页面对象或特定对象范围之中的已命名对象.

pageContext是个功能强大的内置对象,所以在讲解jsp高级编程的时候,标签库编程基本上都要使用pageContext对象完成了。

下面用pageContext完成一次页面跳转功能;

<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
<body>
<%
pageContext.forward("pagecontext_forward_demo02.jsp?info=MLDN") ;
%>
</body>
</html>

既然是跳转,那么肯定可以传递参数,此时使用的是地址重写的方式。

<%@ page contentType="text/html" pageEncoding="GBK"%>
<html>
<head><title>www.mldnjava.cn,MLDN高端Java培训</title></head>
<body>
<%
// 直接从pageContext对象中取得了request
String info = pageContext.getRequest().getParameter("info") ;
%>
<h3>info = <%=info%></h3>
<h3>realpath = <%=pageContext.getServletContext().getRealPath("/")%></h3>
</body>
</html>

而且地址栏没有改变,服务器端跳转。

需要注意的是,getRequest和getResponse返回值是ServletRequest和ServletResponse,所以只能完成一些基本的功能。