【问题标题】:Is there a "Spring 3 MVC way" to listen to the end session event?是否有“Spring 3 MVC 方式”来收听结束会话事件?
【发布时间】:2012-03-24 05:05:28
【问题描述】:

我想在用户会话结束时删除一些临时文件。与文件关联的信息存储在使用@SessionAttributes 注释的对象中。

我发现解决这个问题的唯一方法是创建一个HttpSessionListener

是否有更高级别、简化、弹性的方式来侦听会话结束事件,以便我可以轻松获取我的注释对象?

【问题讨论】:

  • 如果用户注销,您可以对该事件采取行动。如果用户只是走神,HttpSessionListener 是唯一的选择。

标签: java spring session servlets spring-mvc


【解决方案1】:

您很可能需要创建一个 HttpSessionListener。

另一个stackoverflow答案:

Detect session timeout in Spring 3/Spring Security 2.0.5

还有关于如何将 spring bean 加载到其中的示例:

http://www.mkyong.com/spring/spring-how-to-do-dependency-injection-in-your-session-listener/

【讨论】:

    【解决方案2】:

    HttpSessionListener 与 spring bean 一起使用的两个选项:

    首先是使用WebApplicationContextUtils.getRequiredApplicationContext(servletContext)来获取servlet上下文。从那里你有两个子选项:

    • 使用getBean(..)
    • 如果你想使用@Autowired / @Inject 使用getAutowireCapablyBeanFactory().autowireBean(this)。您只需执行一次(检查字段是否为 null),因为侦听器是单例的。

    第二个选项是在监听器上使用AspectJ and @Configurable

    【讨论】:

    • 我研究这个话题已经有一段时间了。你知道我在哪里可以找到一个完整的例子。提前致谢
    • 不知道,不过我觉得上面的sn-ps应该够用了:)
    【解决方案3】:

    没有直接关系,但可能是一个有趣的项目。

    https://github.com/shawnmclean/Idle.js

    会话删除通常发生在服务器端,当会话到期时(通常为 3000 万)。上面的项目允许在前端检测用户行为。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-20
      • 1970-01-01
      • 1970-01-01
      • 2016-06-22
      • 2011-05-23
      • 2019-03-10
      • 1970-01-01
      • 2013-10-05
      相关资源
      最近更新 更多