我需要sessionDestroyed
方法中的 Request 对象,因为我需要在那里检索 Cookie。
public void sessionDestroyed(HttpSessionEvent httpSessionEvent)
{
// Here I need to get Request object so that I can retrieve Cookies.
}
是否可以获取request
对象以便我可以在那里检索 Cookie?
不,当会话被销毁时,不一定意味着 HTTP 请求。它可以在超时期间被销毁,因为客户端没有发送任何请求,例如 30 分钟。HTTP 请求可用的唯一情况是您HttpSession#invalidate()
在按下注销按钮时显式调用自己的情况。但是在您调用该方法的那一刻,您手头已经有一个 HTTP 请求。然后,您可以在同一时刻而不是在会话侦听器中执行 cookie 工作。
您不清楚您错误地认为这将是正确解决方案的具体功能要求,因此我无法就如何正确解决该问题给出一个非常合适的答案。但其中一种方法是将存储在 cookie 中的信息的副本存储为会话的属性。如果您需要在每个请求的基础上执行此操作,例如,因为 cookie 值可以由客户端的 JS 操作,那么您可以为此使用servlet 过滤器。
不,没办法。
Session Destroy 可能是异步发生的,并且超出了请求生命周期的范围。
在请求生命周期范围之外获取对请求对象的引用,你的想法是不正确的。