我是JEE的新手,这使我感到困惑。根据HttpSession.html#setMaxInactiveInterval(int interval)文档
但是根据我的教科书(已经存在数年了-因此我希望它并不总是正确的),使用零作为参数应该会导致 session 立即超时。
这段代码
public class Test extends HttpServlet {
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
HttpSession session = request.getSession();
session.setAttribute("foo", 42);
session.setMaxInactiveInterval(0);
out.println(session.getAttribute("foo"));//problem here
}
}
在Glassfish 4.0上使用的方法似乎可以从教科书(而不是较新的官方文档)中确认理论,因为它返回HTTP状态500-内部服务器错误,并显示错误消息
这里发生了什么?这是Glassfish 4.0错误还是文档错误?也许还有第三种选择?
PS。此代码可以正常工作,带有负值( session 不会无效),并且我在代码中使用
-1
而不是0
。我只是很感兴趣0
有什么问题。 最佳答案
关于 session 超时的Servlet Specification一章指出
所以GlasshFish似乎涵盖了这一点。我在规范中找不到任何引用,即对于0
和setMaxInactiveInterval()
的值也应如此。但是它确实说