如何在Java中确定陈旧会话与非会话

时间:2010-08-10 09:27:22

标签: java javascript spring jsp session

我们有一个网站,用户可以在其中获取导航栏,以便导航搜索结果。

当用户离开午餐或其他任何地方,并且会话超时时,在屏幕上仍然显示的导航中单击下一步将显示下一页,但由于它存储在现在陈旧的状态,因此会丢失导航会话。这让人困惑不已。

我们提出的解决方案是创建一个新会话,将用户返回到结果的开头,并向他们显示他们在没有会话的情况下访问我们的消息,并且我们已将它们发送回开始。

现在我们收到来自外部链接的人直接转到页面的投诉。由于我们目前没有看到陈旧会话和不存在会话之间的区别,我们向没有(有效)会话的每个人显示该消息。

我们如何才能可靠地检测到从未有过会话/故意删除了会话cookie的访问者,而不是那些离开的访问者,并在会话超时后回来?

由于

1 个答案:

答案 0 :(得分:0)

如果您在代码中进行会话验证,那么直接通过指向您网页的链接的人将不会在请求标头中或在您存储会话参数的任何位置具有会话属性。如果没有这样做,那么对于与服务器创建会话的所有客户端,请发送参数。使此参数流过每个请求。这种参数的存在将确保某人来自陈旧会话或根本没有任何会话。

从HttpServletRequest类检查getHeader方法。这将帮助您检查给定标头是否存在。