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

时间:2013-03-28 13:18:00

标签: session servlets cookies request

我需要在sessionDestroyed方法中使用Request对象,因为我需要在那里检索Cookie。

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

是否可以获取request对象以便我可以在那里检索Cookie?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

没有。没办法。

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

在您的想法中,在请求生命周期范围之外获取对请求对象的引用是不正确的。