设置session时间过期后(10min),但是如果刚好在jsp页面中获取session内容 比如
[code="java"]
Users user = (Users) session.getAttribute("Users");
String userName= user.getUserName(); [color=red]//这里会报空指针 [/color]
[/code]
还有类似的.java类里面 也会报空指针 异常 这个大家有没比较好的解决办法。
还有,一般从session这样取的话,还是判断null为好。
你这个程序得加一个session判断的过滤器,当发觉session过期的时候,直接跳转到登录或首页页面,这样就不会出现了。
把你session过滤器的代码发出来看看
没有更好的办法,现在顶多只能在web.xml里面配置一个500错误的提示页面,或者配置一个nullporter异常的专门处理页面。
你所指的刚好发生的机率那是相当低的,如果不想在多个页面重复判断,那么你可以自己写个标签来做这样的事情
[quote]Users user = (Users) session.getAttribute("Users");
String userName= user.getUserName(); [color=red]//这里会报空指针 [/color][/quote]
session超时后,你取session.getAttribute("Users");取到的值肯定为null
即user=null,因user为null,所以user里面没有任何属性,比如你的get、set方法,你可以打个断点看看user的值,有没有这些属性和方法。拿一个为null的object去取getUserName();自然就会报空指针异常了。
加个简单的判断就ok了
[code="java"]if(user!=null){
String userName= user.getUserName();
}[/code]
这个没有办法避免,最好还是加上null的判断,lz耐心点 :wink:
那你加上try catch捕捉这个异常吧,具体怎么处理看你自己的需求咯。
[quote]那你加上try catch捕捉这个异常吧,具体怎么处理看你自己的需求咯。[/quote]
这还不如加null判断哪……
话说,从session获取的值都要判断是否为null,这个不是常识么?……
[code="java"]
1.if(user!=null){
2.String userName= user.getUserName();
3.}
最后在放进session中,页面在从session中取出来。。。
[/code]
不想报这个异常的话你可以try catch自己处理,那就不会显示出来了。比如异常了你可以什么都不做,catch中不要写语句就行了。
一般session取出后都会判断null的。过期之后都是跳转到一个提示页面提示用户重新登录!!!