Servlets Servlet';s会话MaxInactivativeInterval setter和getter方法不工作

Servlets Servlet';s会话MaxInactivativeInterval setter和getter方法不工作,servlets,session-timeout,Servlets,Session Timeout,下面是我的代码 在这方面,, 会话立即超时,因为我们说, “0秒不活动后超时” 因此,session.getAttribute(“foo”)必须给出一个异常。但是代码工作时没有任何问题,就好像会话根本没有超时一样 public void doGet(HttpServletRequest request, HttpServletResponse response) throws

下面是我的代码

在这方面,, 会话立即超时,因为我们说, “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()时,它给出了正确的结果。但如果不是以编程方式设置,则不会显示默认会话超时,即30分钟。相反,它总是给出60秒的结果

我的服务器是ApacheTomcat7。 谢谢你的帮助

     session.setMaxInactiveInterval(0);
按文件

指定servlet容器使此会话无效之前客户端请求之间的时间(秒)。 间隔值为零或更小表示会话不应超时。 参数: interval—指定秒数的整数

所以如果你把它归零,它就永远不会超时。如果你试着

         session.setMaxInactiveInterval(10);
它将在10秒后过期。请注意,web.xml中还有一个值,它表示以分钟为单位的超时,wrt为您以编程方式设置的值,即以秒为单位的间隔

按文件

指定servlet容器使此会话无效之前客户端请求之间的时间(秒)。 间隔值为零或更小表示会话不应超时。 参数: interval—指定秒数的整数

所以如果你把它归零,它就永远不会超时。如果你试着

         session.setMaxInactiveInterval(10);

它将在10秒后过期。请注意,web.xml中还有一个值,它表示以分钟为单位的超时,wrt为您以编程方式设置的值,即以秒为单位的间隔。

Tomcat使用后台线程使会话过期。默认情况下,线程每分钟只检查一次会话是否过期


如果
getMaxInactiveInterval()
没有返回默认值1800(30分钟),那么某个地方已经更改了默认值。

Tomcat使用后台线程终止会话。默认情况下,线程每分钟只检查一次会话是否过期


如果
getMaxInactiveInterval()
没有返回默认值1800(30分钟),那么某个地方已经更改了默认值。

在会话中设置某些内容并在不处理响应的情况下获取它有什么意义???HeadFirst JSP和Servlet手册中解释了该代码,以显示会话方法的语义。因此,请原谅我从应用程序的角度缺乏逻辑性(如果有的话),先生。感谢您的回复。在会话中设置一些内容并在不处理响应的情况下获取这些内容有什么意义呢???HeadFirst JSP和Servlet手册中解释了这些代码,以展示会话方法的语义。因此,请原谅我从应用程序的角度缺乏逻辑性(如果有的话),先生。谢谢您的回复。先生,我在发布此问题前1秒已检查了此值。然后我在servlet的线程上调用了sleep(1200)方法,这样会话可能会超时,即使这样,它也不工作。对于getMaxInactiveInterval(),我也考虑了那些web.xml因素。谢谢你的回答,先生。不要设定睡眠时间。您必须在10秒内刷新页面,然后您将看到加载了旧会话,10秒钟后,您将看到会话是新会话。请尝试这种方式,您将了解发生了什么事。在发布此问题之前,我已用值1秒对此进行了检查。然后我在servlet的线程上调用了sleep(1200)方法,这样会话可能会超时,即使这样,它也不工作。对于getMaxInactiveInterval(),我也考虑了那些web.xml因素。谢谢你的回答,先生。不要设定睡眠时间。您必须在10秒内刷新页面,然后您将看到加载了旧会话,10秒钟后,您将看到会话是新会话。请试着这样做,你就会明白发生了什么我希望我也能接受你的答案。。。因为你的回答也引导了我对这个话题的正确理解。不管怎样,让我来寻找你给别人的答案。我会投票给你那些有用的答案(肯定会有很多)。我欠你很多,先生…我希望我也能接受你的回答。。。因为你的回答也引导了我对这个话题的正确理解。不管怎样,让我来寻找你给别人的答案。我会投票给你那些有用的答案(肯定会有很多)。我欠你一大笔钱,先生。。。