我关掉浏览器后,再打开,发现上次打开时创建的session还在,我想,是cookie里存有sessionID,通过它找到服务器里还没消亡的session。那么,我在程序的最后调用session.invalidate()把服务器里的session清除掉不就行了吗,浏览器通过cookie不就找不到session了吗?
我于是在程序末尾添加了:
Mysession.removeAttribute("cart"); //斩草除根,先干小的
Mysession.invalidate();            //再干老的
request.removeAttribute("Mysession");//把祖宗也…了。
//Mysession 是Session 名字,cart 是Mysession里的一个属性。
奶奶的,就算我怎么心狠手辣,关掉浏览器,再打开,那个Mysession还在!崩溃后我想到了组织。请支援!!!!

解决方案 »

  1.   

    根据我对session的理解,即便你不使用session.invalidate(); 那么当到达一定的时间或者关闭浏览器session就会失效的,如果你发现关了浏览器再开还有的话,我认为应该是cookies的问题了,而不是session
      

  2.   

            public ModelAndView logout(HttpServletRequest request,
    HttpServletResponse response) throws Exception
    {
    System.out.println("退出系统");
    request.getSession().removeAttribute("user");
    request.getSession().removeAttribute("ulimitList");
    request.getSession().removeAttribute("store_owner");
    request.getSession().removeAttribute("store");
    request.getSession().removeAttribute("login_id");
    request.getSession().removeAttribute("credit");
    request.getSession().removeAttribute("ulimit");
    request.getSession().removeAttribute("storeCat");
    request.getSession().removeAttribute("role");
    ModelAndView mav = new ModelAndView(this.indexView);
    addNoticeList(mav);
    return mav;
    }这是我写的注销类,楼主要的就是这个把
    从request里取session把
      

  3.   

    两个帖子啊!建议: 
    在session.invalidate()方法后面 
    加上session.removeAttribute()方法 
    试试
      

  4.   

    为什么要关闭浏览器的时候结速session呢。服务器端判断浏览器是否关闭不太好判断。
    还有浏览器关闭有很多种原因,用户手动结束只是一种情况。还有可能同时开了几个窗口在用系统....
    个人觉得最好的还是定个时间,让它自动消亡。
    个人意见,哈哈
      

  5.   

    浏览器的操作应该是Cookie的作用,先看看Cookie
    然后在看看session 如果代码里不起作用的话 在xml中设置session的时间!
      

  6.   

    呵呵..
    偶是菜鸟.  但是我觉得清除不了的话,就设置它的失效时间吧  
    <session-config>
    <session-timeout>失效时间</session-timeout>
    </session-config>
     这样既简单又方便!