jsp 中的“页面范围”是什么?

2022-09-03 13:31:57

JSP 中具有以下作用域:

  • 页面范围
  • 请求范围
  • 会话范围
  • 应用范围

我对页面范围感到困惑。谁能告诉我这个页面的范围是什么?我没有在任何地方找到它的明确定义。


答案 1

pagescope意味着,它可以被认为是一个表示整个JSP页面的对象,即JSP对象只能从创建它的同一页面中访问。
页面对象实际上是该对象的直接同义词。
注意this

页面范围和请求范围(经常令人困惑)之间的主要区别在于,如果将请求转发到另一个 JSP 页面,而作为请求范围属性可用,则页面范围属性不再可用。


答案 2

页面作用域指示,除了绑定到局部变量之外,在当前请求期间,Bean 对象还应放置在 javax.servlet.jsp.PageContext 对象中。

根据阿拉马拉朱(2004年):

JSP 为 JSP 作者可以使用的对象定义了四个作用域:

  • - 只能在引用对象的 JSP 页中访问对象。
  • request - 可以在为当前请求提供服务的所有页面中访问对象。其中包括转发到请求路由到的原始 JSP 页并包含在其中的页。
  • 会话 - 只能在为其定义对象的会话中访问的 JSP 页中访问对象。
  • 应用程序 - 给定上下文中的所有 JSP 页都可以访问应用程序范围的对象。

将对象存储在那里意味着 servlet 代码可以通过调用预定义的变量来访问它。由于每个页面和每个请求都有不同的对象,这表示Bean不是共享的,因此将为每个请求创建一个新的Bean。getAttribute()pageContextPageContext


引用

阿拉马拉朱,S.(2004年)。Professional Java Servlets 2.3.加州伯克利:阿普拉斯。