Spring Web 应用程序中带有 Ajax 轮询的会话超时
Posted
技术标签:
【中文标题】Spring Web 应用程序中带有 Ajax 轮询的会话超时【英文标题】:Session Timeout w/Ajax Polling in Spring Web Application 【发布时间】:2011-07-13 17:16:59 【问题描述】:我正在开发一个基于 Spring 3.0 的 Web 应用程序,该应用程序需要所有用户登录才能查看数据。登录后,屏幕的某些部分使用 AJAX 轮询机制在后台更新屏幕内容。目前,我们的会话不会超时,因为每次向服务器发出的 ajax 请求都会更新 Web 应用程序的超时时间,并且会话永远不会超时。
我需要修改应用程序,以便当用户登录时,控制器将使用数据响应轮询,但不更新会话超时,以便会话在其预定时间超时。如果用户没有活动会话,则控制器不会返回任何内容。
我该怎么做呢?
【问题讨论】:
你能告诉我你是怎么处理的吗? 【参考方案1】:如何将 用于传递 ajax 数据的页面。由于这些页面不会绑定到会话,因此会话超时可能不会更新。
【讨论】:
【参考方案2】:您将不得不在您的 servlet 容器的内部进行处理。
这就是我要做的事情
在 google 上搜索“xhr XmlHttpRequest servlet 容器会话访问”,看看有没有什么有趣的事情出现(我现在懒得做) 无论您使用什么 servlet 实体,将代码拉到本地并查看会话实现。具体来说,您想弄清楚是什么设置了 javax.servlet.http.HttpSession.getLastAccessedTime 返回的值。当你找到它时,向后工作以了解如何自定义它。我很确定您可以通过扩展其中一个内部类并通过在 XML 配置文件中设置自定义类来使用 Tomcat 来做到这一点。【讨论】:
以上是关于Spring Web 应用程序中带有 Ajax 轮询的会话超时的主要内容,如果未能解决你的问题,请参考以下文章
属性文件中带有 Thymeleaf -UTF-8 的 Spring Boot CRUD 应用程序