这些东西相同或不同(如果不同),请给我原因,以及如何?
这些东西都在小书里。
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”);
最佳答案
在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) session 范围
您在 session 范围内输入的内容可用于同一用户 session 上的所有请求。
调用pageContext.setAttribute("a", "b", PageContext.SESSION_SCOPE);
与调用session.setAttribute("a", "b");
相同
4)适用范围
您在应用程序范围内所做的操作可在您的应用程序上的所有请求中使用(即由所有用户共享)。这意味着生命周期基本上与应用程序运行时间相同。因此,您通常不希望使用此功能。
调用pageContext.setAttribute("a", "b", PageContext.APPLICATION_SCOPE);
等于调用application.setAttribute("a", "b");