如何删除 jspDestroy() 方法上的会话属性

How to remove session attribute on jspDestroy() method

我想在 jsp 页面被销毁时删除会话属性。我的问题是我无法在 jspDestroy() 方法上调用 request.getSession() 。编译错误:

public void jspDestroy() {
  request.getSession().removeAttribute("key");
}

Error: request can not be resolved!

jsp 页面销毁后,有没有办法删除会话属性?

不可以,因为它无效。会话与请求(和用户)相关,会话交互发生在用户与服务器对话时(作为 http 请求的一部分)。

另一方面,destroy(和 init)方法不绑定到请求生命周期,而是绑定到 Servlet 生命周期的服务器事件。

也许如果您告诉我们您想要实现的目标,我们可以建议一个替代方案。

jspDestroy() 方法仅在 JSP 容器关闭时调用 ,而不是在处理完每个请求后调用。

因此它无法访问任何隐式 JSP 对象(请求、响应)(因为它们是 _jspService() 方法中的局部变量)。

因此,您无法访问 jspDestroy() 中的 requestresponse 隐式对象(因为基本上没有合乎逻辑的解释为什么要这样做)。 JSP life cycle 的销毁阶段是当 JSP 被容器(网络服务器)从使用中移除时

对于你的情况,我怀疑你的逻辑不正确。我认为您应该在删除会话属性时重新考虑...