1

我有一个关于 HTTPSession 和 Spring bean 的问题,我完全不明白。在 web.xml 中,我将会话超时设置为 1 分钟:

<session-config>
    <session-timeout>1</session-timeout>
</session-config>

在我提出的每个 Ajax 请求中,我都会检查会话是否有效:

if(request.getSession(false) == null)
            System.out.println("Session Invalid");

但它看起来在一分钟过去后仍然有效(它不为空)。

然后发生了一些让我感到困惑的事情。我有几个带有这个注释的bean:

@Scope(value = "session", proxyMode = ScopedProxyMode.TARGET_CLASS)

第一分钟,它们工作正常,总是注入相同的 bean 实例,我可以存储一些信息并在以后恢复它,但是如果我等待一分钟然后我发送另一个请求,那么注入 bean 的不同实例我的信息丢失了。

我相信发生的事情是,由于会话应该已经过期,注入的 bean 是不同的,但是为什么request.getSession(false)不为 null 而request.getSession(false).isValid()true

4

0 回答 0