HttpSession在页面刷新时到期

时间:2012-10-22 19:32:31

标签: jsf scope managed-bean httpsession

我是JSF的新手,我正在做一些关于Scopes和Http会话生命周期的研究,但有一件事我不清楚。

我知道可以使用来自ExternalContext的sessionMap存储变量,并且它曾经非常适合我需要的工作。我也知道,当会话无效时,地图上存储的所有数据都将丢失。

然而,我不知道的是:当页面刷新时,会话无效?

当我不得不从我的网络应用程序的其中一个按钮上下载请求时,出现了我的问题。显然,无法通过Ajax下载请求,因此必须刷新整个页面。下载继续进行,但在此之后,地图上存储的所有数据都将消失,包括所有托管bean。用户数据本身并不重要,因为我可以存储它然后再将它放在新的会话映射上。但是托管豆呢?我该怎么办?

1 个答案:

答案 0 :(得分:2)

假设不是网络浏览器行为不端,只有当服务器端代码实际上通过调用ExternalContext#invalidateSession()HttpSession#invalidate()使会话无效时才会发生这种情况。

如果你似乎无法确定它,那么创建一个HttpSessionListener并在sessionDestroyed()方法上放置调试断点并调查启动它的调用堆栈及其原因。