首页 理论教育JavaWeb应用开发-使用pageContext对象

JavaWeb应用开发-使用pageContext对象

【摘要】:pageContext 对象为访问页面作用域中定义的所有内置对象提供了访问的方法。pageContext 对象中常用的方法见表5.5。利用pageContext 对象,还可以设置和得到在其他范围对象中保存的属性。例5.2:pageContext 对象的使用。在to.jsp 页面通过两种方式获取到request 作用域的属性值,并使用setAttribute()方法将该值存入pageContext 对象中,然后使用getAttribute()方法获取并输出。其实pageContext 对象的forward()方法的内部实现是调用了RequestDispatcher 对象的forward()方法。

pageContext 对象的对应类型是javax.servlet.jsp.PageContext,它的创建和初始化都是由容器来完成的。

pageContext 对象为访问页面作用域中定义的所有内置对象提供了访问的方法。pageContext 对象中常用的方法见表5.5。

表5.5 pageContext 对象常用的方法

从pageContext 对象提供的方法可以看出,pageContext 对象实际上是为用户提供了访问其他内置对象的统一入口,在多数情况下,直接利用pageContext 对象就可以完成想要实现的功能。

在pageContext 对象中,可以使用下面setAttribute()和getAttribute()方法来设置和获取属性。利用pageContext 对象,还可以设置和得到在其他范围对象中保存的属性。 pageContext 对象提供了另外两个重载的 setAttribute()和getAttribute()方法,如下:

➢ public abstract void setAttribute(String name, Object value, int scope)

➢ public abstract Object getAttribute(String name, int scope)

其中的scope 参数用于指定要获取哪一个范围对象的属性,有4 个可能的取值,其中PageContext.PAGE_SCOPE 表示页面(page)范围;PageContext.REQUEST_ SCOPE表示请求(request)范围;PageContext.SESSION_ SCOPE 表示会话(session)范围;PageContext.APPLICATION_SCOPE 表示Web 应用程序(application)范围。如例5.2 所示。

例5.2:pageContext 对象的使用。

本例中,在ch06 项目中建立两个JSP 页面:from.jsp 和to.jsp。在from.jsp 中接收传入的参数userName,并将其存入request 作用域中,然后跳转到to.jsp 页面。在to.jsp 页面通过两种方式获取到request 作用域的属性值,并使用setAttribute()方法将该值存入pageContext 对象中,然后使用getAttribute()方法获取并输出。(www.chuimin.cn)

from.jsp 页面代码如下:

to.jsp 页面代码如下:

在浏览器中访问http://localhost:8080/ch06/from.jsp?userName=zhangsan。运行效果如图5.2 所示。

图5.2 使用pageContext 对象

从图5.2 可以看出,能正确获取到属性值,并且地址栏的URL 没有发生改变,这表明pageContext 对象的forward()方法和RequestDispatcher 对象的forward()方法使用的机制是相同的,都属于内部跳转。其实pageContext 对象的forward()方法的内部实现是调用了RequestDispatcher 对象的forward()方法。此外,pageContext对象还有一个include()方法也和RequestDispatcher 对象的include()方法相同。