关于 java servlet 和处理请求的最佳方式的一般问题。如果我从远程服务器请求中点击我的 doGet 方法:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
{
....
<do work here>
....
kill(request);
}
private void kill(HttpServletRequest request) {
//How do I kill the user session here?
}
在我处理完请求并向请求者生成输出后,我想基本上“终止”他们的 session 。目前,该 session 会持续存在并因此耗尽内存。然后一旦达到最大值,所有其他调用都会超时。
我尝试使用请求对象创建一个 HttpSession 对象,但得到了相同的结果:
HttpSession session = request.getSession();
session.invalidate();
最佳答案
HttpSession session = request.getSession(false);
if (session != null) {
session.invalidate();
}
是文档建议的正确方法。一旦客户端发送新请求,将创建一个新 session 。
您提到您的 session 仍然占用内存。您是否对 session 中的这些对象有任何其他引用?
关于Java servlet - session 清理 (HttpServletRequest),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10036187/