以下是我的代码。
在这种情况下,会话会立即超时,因为我们说的是“0 秒不活动后超时”。
因此session.getAttribute("foo")必须给出异常。但是代码可以正常工作,就好像会话根本没有超时一样。
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws IOException {
response.setContentType(“text/html”);
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
session.setAttribute(“foo”, “42”);
session.setMaxInactiveInterval(0);
String foo = (String) session.getAttribute(“foo”);
if (session.isNew()) {
out.println(“This is a new session.”);
} else {
out.println(“Welcome back!”);
}
out.println(“Foo: “ + foo);
}
类似的问题是我使用getMaxInactiveInterval()时的问题。
当我第一次显式调用setMaxInactiveInterval()时,它会给出正确的结果。但是当它没有以编程方式设置时,getMaxInactiveInterval不会显示默认会话超时,即 30 分钟。相反,它总是给出60 秒的结果。
我的服务器是 Apache Tomcat 7。感谢您的帮助