【问题标题】:Definition and practical meaning of @SessionScoped@SessionScoped的定义和实际意义
【发布时间】:2010-08-04 14:24:16
【问题描述】:

我想了解 JSF ManagedBean 中 @SessionScoped 注释的完整含义。

我猜它与 http 会话有关,但我仍然不清楚它何时开始,何时结束以及是否可以中断

  • 如果我在 2 小时内让浏览器处于打开状态且没有任何活动。会议还开着吗?
  • 是跨浏览器标签共享的会话
  • 会话在 Firefox、IE 或 Safari 中的行为是否相同?
  • ...

【问题讨论】:

  • JSF 运行在 Servlet API 之上。 JSF 会话确实由 HttpSession 支持。我认为是时候学习 Servlet API 了。您可能会发现 this answer 也很有帮助。

标签: java web-applications jsf


【解决方案1】:
  1. 不,如果没有活动,会话超时
  2. 是的,会话在浏览器标签之间共享
  3. 是的,会话主要是服务器端的概念,浏览器只发送一个cookie来识别

会话在用户请求第一页时开始。

当您第一次访问引用该 bean 的页面时,会调用会话范围 bean(如果存在)的 @PostConstruct 方法(不过我对此并不完全确定)

当您调用session.invalidate() 或超时时会话结束(如果在web.xml 中可配置超时时间)。然后调用@PreDestroy 方法(如果存在)。

【讨论】:

  • 正在寻找有关何时创建 @SessionScoped bean 实例的信息。的确,你是对的。它们不是在会话开始时自动创建的,而是在它们首次被页面引用或注入页面使用的较低范围 bean 时自动创建的。以为我的测试是错误的,但你的假设是某种确认。
猜你喜欢
  • 2018-12-12
  • 2013-06-23
  • 2010-11-25
  • 2012-01-21
  • 2019-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多