如何在sessionDestroyed方法中获取请求对象?

如何在sessionDestroyed方法中获取请求对象?,session,servlets,cookies,request,Session,Servlets,Cookies,Request,我需要sessionDestroyed方法中的请求对象,因为我需要在那里检索cookie public void sessionDestroyed(HttpSessionEvent httpSessionEvent) { // Here I need to get Request object so that I can retrieve Cookies. } 是否可以获取请求对象,以便在那里检索Cookies?否。会话被破坏时,不一定有HTTP请求的方法。也就是说,它可以在超时期间被销毁,

我需要
sessionDestroyed
方法中的请求对象,因为我需要在那里检索cookie

public void sessionDestroyed(HttpSessionEvent httpSessionEvent) 
{
// Here I need to get Request object so that I can retrieve Cookies.
}

是否可以获取
请求
对象,以便在那里检索Cookies?

否。会话被破坏时,不一定有HTTP请求的方法。也就是说,它可以在超时期间被销毁,因为客户端已经有30分钟没有发送任何请求了。HTTP请求可用的唯一情况是,当您自己显式调用
HttpSession#invalidate()
时,例如按下注销按钮。但在调用该方法时,您已经有了一个HTTP请求。然后,您可以在同一时刻而不是在会话侦听器中执行cookie工作

你不清楚具体的功能需求,你错误地认为这是正确的解决方案,所以我不能给出一个合适的答案,如何正确地解决这个问题。但其中一种方法是只将存储在cookie中的信息的副本存储为会话的属性。如果您需要在每个请求的基础上执行此操作,例如,因为cookie值可以由JS在客户端进行操作,那么您可以使用a来执行此操作。

否。不行

会话销毁可能是异步发生的,并且超出了请求生命周期的范围


将请求对象的引用置于请求生命周期之外是不正确的。

我有两个JSP表单(form1和form2)。这些表单的呈现取决于Cookie值。当用户空闲(比如)15分钟时,会话被破坏,其他值被刷新,但Cookie没有被清除,我无法重定向到正确的表单。而是呈现另一个不正确的表单。因此,我想在
sessionDestroyed
方法中清除cookie。只需将其设置为会话cookie(将
maxAge
设置为
-1
),以便在会话结束时自动销毁。