Java servlet - session 清理 (HttpServletRequest)

标签 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?
}

在我处理完请求并向请求者生成输出后,我想基本上“终止”他们的 session 。目前,该 session 会持续存在并因此耗尽内存。然后一旦达到最大值,所有其他调用都会超时。

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

HttpSession session = request.getSession();
session.invalidate();

最佳答案

HttpSession session = request.getSession(false);
if (session != null) {
    session.invalidate();
}

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

您提到您的 session 仍然占用内存。您是否对 session 中的这些对象有任何其他引用?

您可能还想看看:Servlet Session behavior and Session.invalidate

关于Java servlet - session 清理 (HttpServletRequest),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10036187/

相关文章:

java - 包装渲染属性时未在复合组件上调用 encodeAll()

php - 我怎样才能让 SoapClient 尊重 session ?

servlets - web.xml 中的 session-timeout 和 max-age 有什么区别?

jsp - 如何从另一个 servlet 检索 session 属性?

java - 计算文件中每个字符的个数

java - 选择菜单,java中用户的选择

java - 为 JHipster 创建通用枚举转换器

php - php编程时, session 值在页面之间不持久的原因可能是什么?

php - php 中的 session 不加载配置文件,php + mysql

java - 关于欢迎页面和访问 Web 服务方法