这是相同或不同的pageContext Scope和JSP页面中的一些Implicit对象吗?

时间:2013-09-29 10:29:47

标签: java jsp

如果不同,这些事情是相同或不同的那么请给我理由和如何?

这些东西都是划线的。

1)pageContext.setAttribute(“first”,“value1”,pageContext.REQUEST_SCOPE);

了request.setAttribute( “第一”, “值1”);

2) pageContext.setAttribute( “第一”, “VALUE1”,pageContext.SESSION_SCOPE);

session.setAttribute( “第一”, “值1”);

3) pageContext.setAttribute( “第一”, “VALUE1”,pageContext.APPLICATION_SCOPE);

application.setAttribute( “第一”, “值1”);

2 个答案:

答案 0 :(得分:25)

在JSP页面中,您最多可以拥有4个地方"你可以在哪里放置对象以便以后检索它们。

1)页面范围

您放入页面范围的内容仅适用于此处。包含via或转发的同一请求中的任何其他页面都不会看到该对象,因为它们定义了自己的页面范围,该范围不包含调用页面的页面范围。

这是默认范围,因此调用pageContext.setAttribute("a", "b", PageContext.PAGE_SCOPE);与调用pageContext.setAttribute("a", "b");相同

2)请求范围

您在请求范围内提供的内容可用于为此JSP页面提供服务的所有页面。因此,包含或转发的其他页面(不是HTTP重定向)将共享此上下文,并可以访问在调用页面上下文中声明的属性。

致电pageContext.setAttribute("a", "b", PageContext.REQUEST_SCOPE);与致电request.setAttribute("a", "b");

相同

3)会话范围

您在会话范围内的内容可用于同一用户会话中的所有请求。

致电pageContext.setAttribute("a", "b", PageContext.SESSION_SCOPE);与致电session.setAttribute("a", "b");

相同

4)申请范围

您在应用程序范围内的内容可用于应用程序的所有请求(即由所有用户共享)。这意味着生命周期基本上与应用程序运行一样长。所以你通常不想使用这个。

致电pageContext.setAttribute("a", "b", PageContext.APPLICATION_SCOPE);等于致电application.setAttribute("a", "b");

答案 1 :(得分:1)

这三个基本相同,只是在各个范围内设置变量的方式不同 检查这个article。它声明setAttribute方法的第三个参数定义了变量需要设置的范围。

因此,在您的情况下,首先将在请求范围中设置值,第二个将在会话中设置,第三个将在应用范围中设置。