10

如果不同,这些事情是相同的或不同的,那么请给我原因以及如何?

这东西在脚本中..

1) pageContext.setAttribute("first","value1",pageContext.REQUEST_SCOPE);

request.setAttribute("first","value1");

2) pageContext.setAttribute("first","value1",pageContext.SESSION_SCOPE);

session.setAttribute("first","value1");

3) pageContext.setAttribute("first","value1",pageContext.APPLICATION_SCOPE);

application.setAttribute("first","value1");

4

2 回答 2

29

在 JSP 页面中,您最多有“4 个位置”,您可以在其中放置对象以便稍后检索它们。

1) 页面范围

您放入页面范围的任何内容都只能在那里使用。同一请求中的任何其他页面通过或转发都不会看到该对象,因为它们定义了自己的页面范围,其中不包含调用页面的页面范围。

这是默认作用域,所以调用和调用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");

于 2014-07-30T08:34:12.360 回答
1

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

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

于 2013-09-29T11:04:33.267 回答