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