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,所以只能完成一些基本的功能。