Java 在使会话无效后,我的会话未变为空
您好,任何人都可以告诉我以下代码中会出现什么问题。在下面的代码中,我使用http session.getsession(true)创建了新会话并设置了属性,从而使会话无效。单击注销后,我将使会话无效,但不会变为null 这里我没有得到nullSystem.out.println(“sess”+sess)Java 在使会话无效后,我的会话未变为空,java,servlets,httpsession,Java,Servlets,Httpsession,您好,任何人都可以告诉我以下代码中会出现什么问题。在下面的代码中,我使用http session.getsession(true)创建了新会话并设置了属性,从而使会话无效。单击注销后,我将使会话无效,但不会变为null 这里我没有得到nullSystem.out.println(“sess”+sess) 使会话无效意味着服务器会忘记它,所以一旦您再次调用getSession(),您将收到新会话。现有变量(sess)不受影响,只是不存储在servlet容器内部。因此,没有理由在代码中将变量设置为n
使会话无效意味着服务器会忘记它,所以一旦您再次调用getSession(),您将收到新会话。现有变量(sess)不受影响,只是不存储在servlet容器内部。因此,没有理由在代码中将变量设置为null
HttpSession session = request.getSession();
Date date = (Date) session.getAttribute("TEST");
System.out.println("date = " + date);
if (date == null) {
session.setAttribute("TEST", new Date());
}
if (new Random(System.currentTimeMillis()).nextInt(10) > 7) {
session.invalidate();
}
将此代码放入servlet并查看容器日志。它将以30%的速度重新创建会话,否则将打印存储的密钥。如前所述
使该会话无效,然后解除绑定到该会话的所有对象
它不需要为null,它只是解除对象的绑定。您可以检查以前设置的属性是否仍在会话中。那么如何检查我的会话是否无效?请详细说明您的答案。为什么可能成为新会话。我没有创建任何会话。例如,在会话中插入保留当前日期的新密钥。当您获得会话时,尝试查找并打印它,否则设置它。然后使会话无效并重新加载。嗯,我宁愿发一些code@user3214269request.getSession(false);将不会返回任何新会话,相反,它将返回以前创建的会话,如果以前没有创建会话,则返回null。我只想检查我的会话是否无效。如果会话失效或为空,我会将我的用户回退到登录页面,这就是我希望在我的程序中发生的事情。那么如何检查我的会话是否失效?你能详细说明你的答案吗。
HttpSession session = request.getSession();
Date date = (Date) session.getAttribute("TEST");
System.out.println("date = " + date);
if (date == null) {
session.setAttribute("TEST", new Date());
}
if (new Random(System.currentTimeMillis()).nextInt(10) > 7) {
session.invalidate();
}