如何删除 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() 中的 request
和 response
隐式对象(因为基本上没有合乎逻辑的解释为什么要这样做)。 JSP life cycle 的销毁阶段是当 JSP 被容器(网络服务器)从使用中移除时 。
对于你的情况,我怀疑你的逻辑不正确。我认为您应该在删除会话属性时重新考虑...
我想在 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() 中的 request
和 response
隐式对象(因为基本上没有合乎逻辑的解释为什么要这样做)。 JSP life cycle 的销毁阶段是当 JSP 被容器(网络服务器)从使用中移除时 。
对于你的情况,我怀疑你的逻辑不正确。我认为您应该在删除会话属性时重新考虑...