在HttpSessionListener实现类中获取响应对象

时间:2013-09-19 12:14:38

标签: java jsp servlets

我想在会话即将到期时提醒用户。我不想使用Ajax或JavaScript。 那么如何在sessionDestroyed()实现类的HttpSessionListener方法中获取响应对象,以便我可以使用响应对象将alert()发送到用户的当前HTML页面。有没有办法做到这一点?

P.S:我想避免使用Ajax或JavaScript调用。

4 个答案:

答案 0 :(得分:2)

HTTP本质上是无状态的。这就是创建会话的原因,但是除非有开放的频道,否则容器无法将信息“推送”到浏览器。这就是为什么ajax / javascript被用来弥补这个差距的原因。

为了“推送”任何东西到浏览器,你将需要ajax。

答案 1 :(得分:1)

不,您无法从HttpSessionListener收到请求。原因很简单:会话到期事件与请求事件无关。

此外,由于您希望在会话关于过期时发出警报,因此sessionDestroyed()事件不好:在会话后调用已过期(实际销毁,甚至可能在过期后)。

答案 2 :(得分:0)

由于您未指定AJAX,因此您可以查看WebSocket

  

WebSocket旨在在Web浏览器和Web服务器中实现,但任何客户端或服务器应用程序都可以使用它。 WebSocket协议是一种独立的基于TCP的协议。它与HTTP的唯一关系是它的握手被HTTP服务器解释为升级请求。 WebSocket协议使浏览器和网站之间可以进行更多交互,促进实时内容和实时游戏的创建。这可以通过为服务器提供标准化方式来向浏览器发送内容而不需要客户端来实现,并允许消息在保持连接打开的同时来回传递。通过这种方式,可以在浏览器和服务器之间进行双向(双向)正在进行的对话。使用Comet等技术以非标准方式实现了类似的效果。

但是对于你的问题,我会坚持使用传统的jQuery heartBeat客户端,询问服务器会话是否无效,然后重定向到会话过期的页面。

答案 3 :(得分:0)

在整个超时期间有请求时,会话过期,因此也没有响应。因此,你的问题实际上没有意义。