Java servlet - 会话清理(HttpServletRequest)

use*_*124 13 java session servlets request

关于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?
}
Run Code Online (Sandbox Code Playgroud)

在我结束处理请求并生成输出到请求者之后,我想基本上"杀死"他们的会话.目前,该会话徘徊并因此占用内存.然后,一旦达到最大值,所有其他呼叫都将超时.

我尝试使用请求对象创建一个HttpSession对象,但得到了相同的结果:

HttpSession session = request.getSession();
session.invalidate();
Run Code Online (Sandbox Code Playgroud)

csu*_*nig 24

HttpSession session = request.getSession(false);
if (session != null) {
    session.invalidate();
}
Run Code Online (Sandbox Code Playgroud)

是文档建议的正确方法.一旦客户端发送新请求,将创建一个新会话.

你提到你的会话仍占用内存.您是否在会话中对这些对象有任何其他引用?

您还可以查看:Servlet会话行为和Session.invalidate


myk*_*key 5

您可以使用从会话中删除属性

session.removeAttribute("attribute name");
Run Code Online (Sandbox Code Playgroud)