什么时候在托管bean中发生HTTP请求(取决于它们的范围)?

时间:2013-12-20 14:46:50

标签: jsf scope httprequest

session scoped托管bean是否每个方法都有HTTP请求?我怎么知道HTTP请求何时开始和结束?

view scoped托管bean的区别是什么? (仍然关于HTTP请求)

对于request scoped托管bean,它是否只有一个针对整个托管bean的HTTP请求?

谢谢!

2 个答案:

答案 0 :(得分:0)

  

我如何知道HTTP请求何时开始和结束?

您可以使用Fiddler检查HTTP请求/响应

答案 1 :(得分:0)

HTTP协议是浏览器用于与Web服务器通信的协议。具体来说,浏览器向服务器发送HTTP请求,该服务器返回HTTP响应。

因此,HTTP请求不会发生在 bean中。最多,托管bean可能用于来处理服务器上的HTTP请求。

托管bean定义的范围控制bean实例的共享:

  • 如果bean具有请求范围,则每个请求都使用专用的bean对象。
  • 如果bean具有会话范围,则为每个用户会话使用专用的bean对象(即,使用相同的bean对象处理来自同一用户的所有请求)。
  • 如果bean具有视图范围,则每个JSF视图都使用专用的bean对象(即,只要用户不导航到另一个页面,所有请求都使用相同的bean对象进行处理)
  

我如何知道HTTP请求何时开始和结束?

目前还不清楚您的开始或结束请求是什么意思。

  

但是我需要在用例的第一个请求中获取这些属性,然后针对相同用例的所有其他请求获取这些属性。当用例完成时,我需要使用这些属性清除映射。

控制状态生命周期的惯用方法是将其保存在具有适当长范围的bean中。如果您的用例只有一个视图,那么视图范围的bean就可以很好地适应。

否则,如果它仅用于少量视图,我将视图作用域聚合会话对象,并在导航时将该会话对象传递给下一个视图作用域bean。这样,当用户中止用例时,你不需要采取任何特殊操作(他通常可以通过多种方式进行操作,例如使用主导航...)。

如果你有一个很大的应用程序任何这样的多视图用例,你可能想要查看提供对话范围的许多库