java pagecontext_JSP pagecontext对象详解

JSP pagecontext对象详解

pageContext对象是javax.servlet.jsp.PageContext类的实例对象,用来代表整个JSP页面。它代表页面上下文,该对象主要用于访问 JSP 之间的共享数据,使用pageContext可以访问page、request、session、application范围的变量。

获取实例

pageContext对象是通过调用JspFactory.getPageContext方法返回的。

public PageContext getPageContext(

javax.servlet.Servlet servlet,

javax.servlet.ServletRequest request,

javax.servlet.ServletResponse response,

java.lang.String errorPageURL, boolean needsSession,

int buffer, boolean autoflush)

JSP页面中只需将pageContext对象传递给某个Java类的实例对象,在该Java对象中就可以访问和调用其他隐式对象的功能了。

常用方法

JspWriter getOut(); //返回当前客户端响应被使用的JspWriter流(out)

HttpSession getSession(); //返回当前页面中HttpSession对象(session)

Object getPage(); //返回当前页面的Object对象(Object)

ServeletRequest getRequest(); //返回当前页面的ServletRequest对象(request)

ServeletResponse getResponse(); //返回当前页面的ServletResponse对象(response)

void setAttribute(String name,Object attribute); //设置属性及属性值

void getAttribute(String name,int scope); //在指定范围内取属性的值

int getAttributeScope(String name); //返回某属性的作用范围

void forward(String relativeUrlPath); //使当前页面重导到另一页面

void include(String relativeUrlPath); //在当前位置包含另一文件

作用

1. 获取所有内置对象

getException()返回exception隐式对象

getPage()返回page隐式对象

getRequest()返回request隐式对象

getResponse()返回response隐式对象

getServletConfig()返回config隐式对象

getServletContext()返回application隐式对象

getSession()返回session隐式对象

getOut()返回out隐式对象

import javax.servlet.ServletContext;

import javax.servlet.jsp.PageContext;

public class pagecontext {

public void m(PageContext pag){

//如果你要传参9大隐式对象,不可能写9个参量吧!

//这个时候我们的Context的作用就可以了,它可以调用其他8个隐式对象,直接可定义这一个

//这样就方便很多了。

ServletContext ser=pag.getServletContext();

pag.getServletConfig();

pag.getOut();

pag.getPage();

pag.getRequest();

pag.getResponse();

pag.getSession();

pag.getException();

//这就是其他8个隐式对象了,都可以通过PageContext得到,非常的方便

}

}

2. 引入和跳转到其他资源,提供了转发和包含的简便方法

PageContext类中定义了一个forward方法和两个include方法来分别简化和替代RequestDispatcher.forward方法和RequestDispatcher.include方法的调用。

public void forward(java.lang.String relativeUrlPath) throws javax.servlet.ServletException,java.io.IOException

public void include(java.lang.String relativeUrlPath) throws javax.servlet.ServletException,java.io.IOException

public void include(java.lang.String relativeUrlPath,boolean flush) throws javax.servlet.ServletException,java.io.IOException

传递给这些方法的资源路径都只能是相对路径,如果路径以“/”开头,表示相对于当前WEB应用程序的根目录,否则,表示相对于当前JSP所映射到的访问路径。

RequestDispatcher rd = request.getRequestDispatcher("/url");//“/”绝对路径

rd.forward(request,response);

pageContext.forward("url");//重定向

pageContext.include("url");//包含

3. 本身是域对象,同时可以操作其他域对象

JSP中的四大作用域对象:page,request,session,application,作为域对象,很容易得出,里面必定有三个方法,setAttribute,getAttribute和removeAttribute。pagecontext这3个方法中带一个scope参数,可以通过这个参数来操作其他的域对象。

void setAttribute(String name,Object value,int scope)//scope操作于其他三大域对象

void removeAttribute(String name,int scope)

Object getAttribute(String name,int scope)

scope取值如下

PageContext.PAGE_SCOPE(对应page范围)

PageContext.REQUEST_SCOPE(对应request范围)

PageContext.SESSION_SCOPE(对应session范围)

PageContext.APPLICATION_SCOPE(对应application范围)

例子

//PageContext1.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

//pageContext只在本页面有效,在其他页面使用pageContext是不能取不到值的

//pageContext.setAttribute("p1", "p的第一个值");

pageContext.setAttribute("p1", "p的第二个值",PageContext.PAGE_SCOPE);

//可是如果用HttpRequest呢?

//request.setAttribute("p2", "p2");

pageContext.setAttribute("p2", "p22",PageContext.REQUEST_SCOPE);

// session.setAttribute("p3", "p3");

pageContext.setAttribute("ps","p33",PageContext.SESSION_SCOPE);

//application.setAttribute("p4", "p4");

pageContext.setAttribute("p4", "p44",PageContext.APPLICATION_SCOPE);

pageContext.forward("/PageContext2.jsp");

//response.sendRedirect("/day09/PageContext2.jsp");

%>

//PageContext2.jsp

String path = request.getContextPath();

String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";

%>

总结

1. pageContext对象存储了request对象和response对象的引用。application对象,config对象,session对象,out对象可以通过访问这个对象的属性来导出。

2. pageContext对象封装了当前JSP页面的运行信息,它提供了返回JSP页面的其他隐式对象的方法。

版权声明:本文为JAVASCHOOL原创文章,未经本站允许不得转载。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值