gpt4 book ai didi

java - HttpSessionListener.sessionCreated() 在 Spring MVC 应用程序启动时被调用两次

转载 作者:行者123 更新时间:2023-11-30 10:42:26 27 4
gpt4 key购买 nike

我在 web.xml 中注册了 HttpSessionListener 实现类,当应用程序启动时,sessionCreated() 方法被调用两次。当我从应用程序注销时,sessionDestroyed() 正在调用,然后 sessionCreated() 再次调用。为什么会这样?

public class SessionManager implements HttpSessionListener {

@Override
public void sessionCreated(HttpSessionEvent httpSessionEvent) {
System.out.println("Session Creation called!!..");
}

@Override
public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
System.out.println("Session Destruction called!!..");
}
}

输出:

当应用程序启动时,它会打印两次“Session Creation called!!..”。当我注销时,它首先打印为“Session Destruction called!!..”,其次打印为“Session Creation called!!..”。

最佳答案

当您成功登录到您的应用程序时,在创建新的经过身份验证的 session 之前,旧的匿名 session 将被销毁。注销时也会发生类似的事情,当首次销毁经过身份验证的 session 时,会创建一个新的匿名 session 。这与您描述的场景一致。

要验证正在创建和销毁的确切 session ,请改进您的日志记录以包括 session ID。例如:

public class SessionManager implements HttpSessionListener {

public void sessionCreated(HttpSessionEvent httpSessionEvent) {
System.out.println("session created: " + httpSessionEvent.getSession().getId());
}

public void sessionDestroyed(HttpSessionEvent httpSessionEvent) {
System.out.println("session destroyed: " + httpSessionEvent.getSession().getId());
}

}

关于java - HttpSessionListener.sessionCreated() 在 Spring MVC 应用程序启动时被调用两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38138663/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com