您好任何人都可以告诉我以下代码中的问题。在下面的代码中,我通过使用http session.getsession(true)创建新会话并设置属性后使我的会话无效。一旦我点击注销,我就会使会话无效,但这不会变为空。
这里我没有得到null System.out.println(“sess”+ sess)
HttpSession sess = request.getSession(false);
sess.removeAttribute("name");
sess.invalidate();
System.out.println("sess"+sess);
答案 0 :(得分:1)
会话无效意味着服务器会忘记它,所以一旦再次调用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%的比例重新创建会话。否则它将打印存储的密钥。
答案 1 :(得分:1)