问题描述
1。判断一个session是否为空:if(session==null){}这样算不算使用了session?这样问可能不是很清楚,那么详细些。session都有过期时间吧,那么应该是在session被创建的时候就有一个计时器,这个时间达到过期时间的话就销毁这个session如果用这句if(session==null)会不会重置这个计时器?2。可不可以在session过期的时候执行一段代码,即像filter的destroy方法一样?请大家帮帮忙,谢谢,如果上述有什么不对之处,请赐教。
解决方案
解决方案二:
session==null这个肯定不算用了session,你又没对session有任何操作,只是判断了一下.!你要session.invalidate()以后,等到request.getSession(true)的时候才会重置.!session如果失效想执行代码这样判断request.getSession(false)判断它是否为null,如果为null就执行你要的操作
解决方案三:
学习了!一般是判断它是否超时吧!
解决方案四:
可以设置session的时间嘛
解决方案五:
引用2楼super_ninja的回复:
学习了!一般是判断它是否超时吧!
但是,如果它超时了,那么就是null了吧?我个人感觉判断它的时间是否超时和判断是否为空其实是一个意思。还有如果我判断是否超时,那么如何获得session的超时时间?
解决方案六:
1。Session超时,确实变成了NULL,判断是否超时可以用NULL来判断,但是如果在程序中,如果SESSION超时重新创建一个新的SESSION的话,仅用NULL来判断是不够的。2。SESSION在失效之前,可以获取SESSION的创建时间,失效之后,SESSION被销毁,对象都没有了,不可能获取超时时间。再者说,获取超时时间有什么意义么?
解决方案七:
为了避免空指针,建议写成null==session
解决方案八:
引用5楼stl0的回复:
1。Session超时,确实变成了NULL,判断是否超时可以用NULL来判断,但是如果在程序中,如果SESSION超时重新创建一个新的SESSION的话,仅用NULL来判断是不够的。2。SESSION在失效之前,可以获取SESSION的创建时间,失效之后,SESSION被销毁,对象都没有了,不可能获取超时时间。再者说,获取超时时间有什么意义么?
sorry上面我的说法的产生歧义了,我的意思是session在最后一次使用后,不再使用而到期被销毁的这段时间
解决方案九:
引用6楼qqcrazyboy的回复:
为了避免空指针,建议写成null==session
...................无语..==判断跟空指针不挂钩吧.!
解决方案十:
引用7楼ylucke的回复:
引用5楼stl0的回复:1。Session超时,确实变成了NULL,判断是否超时可以用NULL来判断,但是如果在程序中,如果SESSION超时重新创建一个新的SESSION的话,仅用NULL来判断是不够的。2。SESSION在失效之前,可以获取SESSION的创建时间,失效之后,SESSION被销毁,对象都没有了,不可能获取超时时间。再者说,获取超时时间有什么意义么?……
这个貌似没有办法吧.!或者是..我还没用到过这个需求!
解决方案十一:
引用7楼ylucke的回复:
sorry上面我的说法的产生歧义了,我的意思是session在最后一次使用后,不再使用而到期被销毁的这段时间
直接好像取不到的,可以间接来计算获得。session的TIMEOUT时间可以通过getMaxInactiveInterval来去的,session的创建时间可以通过getCreationTime来获取,最后一次session的访问时间可以通过getLastAccessedTime来获取这样的话,到session销毁为止的时间=session的TIMEOUT时间-(最后访问时间-创建时间)
解决方案十二:
session是你在使用中,假如你设置的session失效时间为5S但是你4.9S使用了session,你的session失效时间又变成5S这是他和Cookie的区别COOKIE是设置多长时间后,无论你怎么使用,到时间都会自动失效你也可以强制清楚SESSION设置SESSION时间,你的那个只是判断,并没有使用SESSION所以并没有操作2楼回答很好
解决方案十三:
引用10楼stl0的回复:
引用7楼ylucke的回复:sorry上面我的说法的产生歧义了,我的意思是session在最后一次使用后,不再使用而到期被销毁的这段时间直接好像取不到的,可以间接来计算获得。session的TIMEOUT时间可以通过getMaxInactiveInterval来去的,session的创建时间可以通过getCreationTime来获取,最后一次session……
只有这样辗转下了,,不过这样也是会有问题的.!
解决方案十四:
引用12楼izard999的回复:
引用10楼stl0的回复:引用7楼ylucke的回复:sorry上面我的说法的产生歧义了,我的意思是session在最后一次使用后,不再使用而到期被销毁的这段时间直接好像取不到的,可以间接来计算获得。session的TIMEOUT时间可以通过getMaxInactiveInterval来去的,session的创建时间可以通过getCreationTi……
有什么问题,你也不等待清楚session
解决方案十五:
学习了…………
解决方案:
en!
解决方案:
一个用户长时间不对浏览器中的资源操作,达到session最大时间。session就会销毁!
解决方案:
可不可以在session过期的时候执行一段代码,即像filter的destroy方法一样?创建一个类实现HttpSessionListener接口,在sessionDestroyed(HttpSessionEventse)方法中写你要做的操作
解决方案:
System.out.println(request.getSession().getMaxInactiveInterval());System.out.println(request.getSession().getCreationTime());System.out.println(request.getSession().getLastAccessedTime());分别是:600012997200496251299720060359这以什么为单位呢??秒还是?