SESSION存储验证码失效问题 我的程序是JAVA与JSP的也存在这个问题,就是开始的时候向SESSION中存入验证码,但在有时候就取不到值,以至于比对时造成输入的验证码与SESSEION中获取的NULL值不相等,提示用户验证码错误。请指教为什么SESSION有时候获取不到值 呢。急谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不知道你的验证码是怎么实现的....你直接在网上找个jsp验证码控件,里面有session,你可以在servlet或者action里面取出jsp验证码session的值,然后再和你服务端接收验证码的值比对.你自己试试,我是这样做的。 我的也是这么写的就是不行,就是偶尔在action中获取不到值 是不是从SESSION中获取到验证码后要调用此方法呀request.getSession().invalidate();? 我的操作是先打开浏览器,生成验证码并放在 SESSION中,等SESSION超时后我再刷新页面,再生成新的验证码,此时到action中获取验证码就获取 不到。 每次生成图片前校验下session是否失效啦 有几种可能:1。session过期了,默认30分钟。也可以手动设置session过期2。访问超出了session的作用范围 session已经超时无效了,当然取不到。你把session超时时间设长点(标准30分钟足够)不就好了。另外你每次生成验证码,都需要往session里面重新set一下不知道你做了没有 问题是我刷新了,刷新时就要生成 一个新的session呀,为什么还取不到,另外我生成时每次的set了。 你的session是不是request.getSession()的?记得()里面不要加(true)或(false) 没超时不刷新直接访问ACTION能获取SESSION 一刷新从新获得就不行? LZ的页面有木有做啥特殊操作捏? 楼主用的什么浏览器啊 换个其他的试试看 登录的时候打印一下 session的值 看看 每次把验证码打印出来看看不就知道是个啥了啊,如果有值就不是session的问题啊,如果取不到那就是session问题 值要放到session中,传过去要获取也要在session中获取 貌似我记得如果不加,是默认的false。。是不是的我记得不清楚了。我记得我当年做的时候,验证码不放在Session中,验证通过了以后就在Session中间设置一个flag=Y,否则就是null或者N。。这样来判断的 1 你先确认你生成了新的验证码,浏览器的缓冲有时会做鬼的。2 确认你生成验证码和测试验证码的顺序,先生成,后测试,这在页面操作时,经常出问题3 实在不行,将你的验证码放到一个类的私有变量,然后监控器set方法,看看到底发生了什么。为啥get是空 那是因为你服务器的session过期了,但是客户端的sessionid还是原来那个,他去服务器取原来的那个session取不到了 那是因为你服务器的session过期了,但是客户端的sessionid还是原来那个,他去服务器取原来的那个session取不到了您说的对,但此问题如何解决。谢谢 我的貌似也是这种问题,在servlet中还能打印出来,但在jsp中又取不到 我的也是这个问题啊,sverlet能取到值,到页面就取不到了,session默认30分钟,肯定没过期啊,值也存进去了, servlet中:request.getSession().setAttribut("validateCode",randomCode.toString()); System.out.println(session.getAttribute("validateCode")+"vvvvvvvv"); 到这里能打印出来的jsp:中: ${sessionScope.validateCode} 为null http://computername:8080/ 通过计算机名不可取sessionhttp://localhost:8080/ 通过localhost可取sessionhttp://192.168.1.2:8080/ 通过本机IP可取session楼主以及各种有类似验证码session取不到的同学请试上面地址,一般可解决。 有关mysql恢复 出现乱码问题 求一个操作系统高响应比调度算法的程序! 麻烦大家帮忙看下此问题,java基础吧。 httpservletrequest.setattribute和servletrequest.setattribute的区别 人脸识别 请教hibernate interceptor的问题 Mybatis 只更新改过的字段怎么实现 这个问题谁能解决? 如何得到jdbc中的驱动列表? 高手帮忙啊! java通过jni调用.so(linux)说下思路 但是写.c文件不明白 dbcp报了一个错: Error preloading the connection pool要郁闷死了
1。session过期了,默认30分钟。也可以手动设置session过期
2。访问超出了session的作用范围
没超时不刷新直接访问ACTION能获取SESSION 一刷新从新获得就不行? LZ的页面有木有做啥特殊操作捏?
我记得不清楚了。我记得我当年做的时候,验证码不放在Session中,验证通过了以后就在Session中间设置一个flag=Y,否则就是null或者N。。
这样来判断的
您说的对,但此问题如何解决。谢谢
servlet中:request.getSession().setAttribut("validateCode",randomCode.toString());
System.out.println(session.getAttribute("validateCode")+"vvvvvvvv");
到这里能打印出来的
jsp:中: ${sessionScope.validateCode} 为null
http://localhost:8080/ 通过localhost可取session
http://192.168.1.2:8080/ 通过本机IP可取session楼主以及各种有类似验证码session取不到的同学请试上面地址,一般可解决。