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