我想在会话即将到期时提醒用户。我不想使用 Ajax 或 JavaScript。那么如何 在实现类的sessionDestroyed()
方法中获取响应对象,以便使用响应对象向用户的当前 HTML 页面发送一个响应对象。有没有办法做到这一点? HttpSessionListener
alert()
PS:我想避免使用 Ajax 或 JavaScript 调用。
HTTP本质上是无状态的。这就是创建会话的原因,但容器无法将信息“推送”到浏览器,除非存在开放通道。这就是为什么使用 ajax/javascript 来弥补这一差距的原因。
为了将任何内容“推送”到浏览器,您将需要 ajax。
不,您无法从HttpSessionListener
. 原因很简单:会话到期事件独立于请求事件。
此外,由于您想在会话即将到期时发出警报,因此该sessionDestroyed()
事件并不好:在会话到期后调用它(实际上是销毁,甚至可能在它到期后)。
既然你指定AJAX
了 no ,你可以看看WebSocket
:
WebSocket 旨在在 Web 浏览器和 Web 服务器中实现,但它可以被任何客户端或服务器应用程序使用。WebSocket 协议是一个独立的基于 TCP 的协议。它与 HTTP 的唯一关系是它的握手被 HTTP 服务器解释为升级请求。WebSocket 协议使浏览器和网站之间的更多交互成为可能,促进实时内容和实时游戏的创建。这是通过为服务器提供一种标准化的方式来实现的,该方式无需客户端请求即可将内容发送到浏览器,并允许在保持连接打开的同时来回传递消息。以这种方式,可以在浏览器和服务器之间进行双向(双向)正在进行的对话。使用诸如 Comet 之类的权宜之计技术以非标准化的方式实现了类似的效果。
但是对于您的问题,我会坚持使用传统的 jQuery heartBeat 客户端,询问服务器会话是否无效,然后重定向到会话过期页面。
如果在整个超时期间没有请求,会话就会过期,因此也没有响应。因此,您的问题实际上没有意义。