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