1。判断一个session是否为空:if(session==null){} 这样算不算使用了session?这样问可能不是很清楚,那么详细些。
session都有过期时间吧,那么应该是在session被创建的时候就有一个计时器,这个时间达到过期时间的话就销毁这个session  如果用这句if(session==null)会不会重置这个计时器?
2。可不可以在session过期的时候执行一段代码,即像filter的destroy方法一样?请大家帮帮忙,谢谢,如果上述有什么不对之处,请赐教。

解决方案 »

  1.   

    session == null这个肯定不算用了session, 你又没对session有任何操作, 只是判断了一下.!
    你要session.invalidate()以后,等到request.getSession(true)的时候才会重置.!
    session如果失效想执行代码这样判断
    request.getSession(false)判断它是否为null,如果为null就执行你要的操作
      

  2.   

    但是,如果它超时了,那么就是null了吧?我个人感觉判断它的时间是否超时和判断是否为空其实是一个意思。 还有 如果我判断是否超时,那么如何获得session的超时时间?
      

  3.   

    1。Session超时,确实变成了NULL,判断是否超时可以用NULL来判断,但是如果在程序中,如果SESSION超时重新创建一个新的SESSION的话,仅用NULL来判断是不够的。2。SESSION在失效之前,可以获取SESSION的创建时间,失效之后,SESSION被销毁,对象都没有了,不可能获取超时时间。 再者说,获取超时时间有什么意义么?
      

  4.   

    为了避免空指针,建议写成null==session
      

  5.   

    sorry上面我的说法的产生歧义了,我的意思是session在最后一次使用后,不再使用而到期被销毁的这段时间
      

  6.   


    直接好像取不到的,可以间接来计算获得。session的TIMEOUT时间可以通过getMaxInactiveInterval来去的,
    session的创建时间可以通过getCreationTime来获取,
    最后一次session的访问时间可以通过getLastAccessedTime来获取这样的话,
    到session销毁为止的时间=session的TIMEOUT时间-(最后访问时间-创建时间)
      

  7.   

    session 是你在使用中,假如你设置的session失效时间为 5S 但是你4.9S使用了session,你的session失效时间又变成5S 这是他和Cookie的区别 COOKIE 是设置多长时间后,无论你怎么使用,到时间都会自动失效
     你也可以强制 清楚SESSION 设置SESSION时间,你的那个只是判断,并没有使用SESSION 所以并没有操作
    2楼回答很好
      

  8.   

    有什么问题,你也不等待 清楚session
      

  9.   

    一个用户长时间不对浏览器中的资源操作,达到session最大时间。session就会销毁!
      

  10.   

    可不可以在session过期的时候执行一段代码,即像filter的destroy方法一样?创建一个类实现HttpSessionListener接口,在sessionDestroyed(HttpSessionEvent se)方法中写你要做的操作
      

  11.   

    System.out.println(request.getSession().getMaxInactiveInterval());
    System.out.println(request.getSession().getCreationTime());
    System.out.println(request.getSession().getLastAccessedTime());分别是:6000
    1299720049625
    1299720060359这以什么为单位呢?? 秒 还是?