用户没有发出请求一段时间就销毁session

解决方案 »

  1.   

    Web容器有一个session管理器,一个session用一个session ID来标识,使用此session ID可以访问session管理器保持着的对象;当存在session的情况下,浏览器在和Web服务器交互时会传递session ID(可以通过cookie、URL、hidden input等方式交换);session过期是指在经过一段时间浏览器没有发包含相应的session ID的请求后,Web服务器上的session管理器就将与此session ID相关联的对象销毁掉,资源释放掉,状态也就不再保持了,此session ID也就不再被识别出了。这下子说的够详细吧?
      

  2.   

    呵呵,真失败,没看清问题;应该是“用户没有发出请求一段时间就销毁session”。
      

  3.   

    只要JSP或Servlet一访问会话对象,会话对象的活动间隔时间就被设置为0
      

  4.   

    也就是说在用户登录后,如果session.setMaxInactiveInterval(30)的话,用户30秒没发出请求,就将用户的session销毁是吗?
    ------------------------------------------------------------
    |JSP或Servlet一访问会话对象,会话对象的活动间隔时间就被设置为0|
    ————------------------------------------------------------
    是指每个jsp页面吗?那我设定用户30秒没有发出请求,就将用户的session销毁岂不是无法做到?
    当我设定了实现HttpSessionListener接口的listener后,发现如果session.setMaxInactiveInterval(5),然后等待超时就会触发public void sessionDestroyed(HttpSessionEvent se) 方法,但是我将浏览器关掉后,放在session中的"userID"不见了,sessionDestroyed方法却没有触发。实现HttpSessionAttributeListener接口也不能捕捉到session中的"userID"被删除的事件,为什么???