Servlet中的页面范围和请求范围之间的差异JSP?

时间:2017-07-13 12:34:22

标签: java jsp servlets java-ee scope

到目前为止,我已经通过以下链接了 - :
Page scope- scope in jsp {
{3}} {
{3}}

我想知道页面范围请求范围之间的区别是什么?如果我考虑使用 RequestDispatcher.forward()& HttpServletResponse.sendRedirect()到相同或不同的页面,然后这些范围如何工作?

如果请求转发同一页面那么这两个范围将如何不同?

2 个答案:

答案 0 :(得分:4)

页面范围是仅在处理单个JSP时有效的范围。通常,如果一个JSP转发给自己,则第二个实例将共享原始请求范围,但将收到一个全新的页面范围。如果在页面中包含同一个片段的2个实例,这是有意义的:all将与调用者共享请求范围,但每个实例将使用自己的页面范围。

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

答案 1 :(得分:3)

请注意,多个页面可以为单个请求提供服务。见article

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

  

页面

     

'page'范围意味着,只能从中访问JSP对象   在创建它的同一页面内。 JSP的默认范围   使用标签创建的对象是页面。 JSP隐式对象   out,exception,response,pageContext,config和page有'page'   范围。

     

请求

     

使用'request'范围创建的JSP对象可以是   从提供该请求的任何页面访问。不止一页   可以提供单一请求。 JSP对象将绑定到   请求对象。隐式对象请求具有“请求”范围。