Servlet & JSP 中的页面范围和请求范围之间的区别?



到目前为止,我已经浏览了以下链接-:
页面范围-jsp中的范围
JSP中有哪些不同的范围?
页面和请求
之间的差异

我想知道页面范围和请求范围有什么区别?如果我考虑使用RequestDispatcher.forward((HttpServletResponse.sendRedirect((到相同或不同的页面,那么这些范围将如何工作?如果请求被转发同一页面,那么这两个范围将有何不同?

页面范围是仅在处理单个 JSP 时才有效的范围。通常,如果一个 JSP 转发到自身,则第二个实例化将共享原始请求范围,但将接收全新的页面范围。如果您在页面上包含同一片段的 2 个实例,这可能是有意义的:所有实例都将与调用方共享请求范围,但每个实例都将使用自己的页面范围。

sendRedirect是完全不同的事情!重定向是向客户端返回一个特殊响应,其中包含要在其标头中获取的新 URL。但这也意味着重定向将使用不同的 HTTP 请求,因此将具有不同的请求范围。换句话说,只有会话范围在重定向的页面之间共享 - 并且仅当您重定向到同一 Web 应用程序时。

请注意,多个页面可以为单个请求提供服务。 请参阅文章。

您还可以在示例中看到,您可以通过转发将具有请求范围的参数转发到另一个页面。

"page"作用域意味着只能从 在创建它的同一页面中。JSP 的缺省作用域 使用标记创建的对象是页面。JSP 隐式对象 out、exception、response、pageContext、config 和 page 都有"page" 范围。

请求

使用"请求"作用域创建的 JSP 对象可以是 从提供该请求的任何页面访问。多个页面 可以为单个请求提供服务。JSP 对象将绑定到 请求对象。隐式对象请求具有"请求"范围。

最新更新