Jsf HTTP请求何时在托管bean中发生(取决于其作用域)?

Jsf HTTP请求何时在托管bean中发生(取决于其作用域)?,jsf,scope,httprequest,Jsf,Scope,Httprequest,会话作用域的托管bean是否每个方法都有HTTP请求?我如何知道HTTP请求何时开始和结束 视图范围的托管bean有什么区别?(仍与HTTP请求有关) 对于一个请求范围的托管bean,它对整个托管bean是否只有一个HTTP请求 谢谢大家! 我如何知道HTTP请求何时开始和结束 您可以使用来检查HTTP请求/响应HTTP协议是浏览器用于与web服务器通信的协议。具体来说,浏览器向服务器发送一个HTTP请求,服务器会发回一个HTTP响应 因此,HTTP请求不会在bean中发生。最多可以使用托管be

会话作用域的托管bean是否每个方法都有HTTP请求?我如何知道HTTP请求何时开始和结束

视图范围的
托管bean有什么区别?(仍与HTTP请求有关)

对于一个
请求范围的
托管bean,它对整个托管bean是否只有一个HTTP请求

谢谢大家!

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


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

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

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

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

  • 如果bean具有请求作用域,那么每个请求都会使用一个专用的bean对象
  • 如果bean具有会话作用域,那么每个用户会话都使用一个专用的bean对象(即,来自同一用户的所有请求都使用同一个bean对象进行处理)
  • 如果bean具有视图范围,那么每个JSF视图都会使用一个专用的bean对象(即,只要用户不导航到另一个页面,所有请求都会使用相同的bean对象进行处理)
我如何知道HTTP请求何时开始和结束

不清楚你所说的请求开始或结束是什么意思

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

控制状态生存期的惯用方法是将其保存在具有适当长范围的bean中。如果您的用例只有一个视图,那么视图范围的bean将非常适合

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


如果您有一个大型应用程序,有许多这样的多视图用例,您可能希望查看提供对话作用域的许多库。

让我试着更清楚地解释一下:我需要获取会话属性,如下所示:ExternalContext ExternalContext=FacesContext.getCurrentInstance().getExternalContext();Map sessionMap=externalContext.getSessionMap();但是我需要在用例的第一个请求中获得这些属性,然后在同一用例的所有其他请求中获得这些属性。当用例完成时,我需要用这些属性清除映射。这就是为什么我想知道这些http请求何时发生。我希望它更清楚,对不起,我是这个网络世界的新手。好吧,现在我明白了。我已相应地延长了我的答复。