SESSION存储验证码失效问题

yqb678 2010-01-27 05:25:08
我的程序是JAVA与JSP的也存在这个问题,就是开始的时候向SESSION中存入验证码,但在有时候就取不到值,以至于比对时造成输入的验证码与SESSEION中获取的NULL值不相等,提示用户验证码错误。请指教为什么SESSION有时候获取不到值 呢。急谢谢
...全文
1062 31 打赏 收藏 转发到动态 举报
写回复
用AI写文章
31 条回复
切换为时间正序
请发表友善的回复…
发表回复
邪风之神曲 2012-06-28
  • 打赏
  • 举报
回复
http://computername:8080/ 通过计算机名不可取session
http://localhost:8080/ 通过localhost可取session
http://192.168.1.2:8080/ 通过本机IP可取session

楼主以及各种有类似验证码session取不到的同学请试上面地址,一般可解决。
cjchuchu1121 2012-06-14
  • 打赏
  • 举报
回复
请问问题有没有解决??我的也出现这种情况了。。。
sunshiwu66 2012-04-02
  • 打赏
  • 举报
回复
我的也是这个问题啊,sverlet能取到值,到页面就取不到了,session默认30分钟,肯定没过期啊,值也存进去了,
servlet中:request.getSession().setAttribut("validateCode",randomCode.toString());
System.out.println(session.getAttribute("validateCode")+"vvvvvvvv");
到这里能打印出来的
jsp:中: ${sessionScope.validateCode} 为null
yisshengyouni 2011-05-01
  • 打赏
  • 举报
回复
我的貌似也是这种问题,在servlet中还能打印出来,但在jsp中又取不到
yqb678 2010-02-08
  • 打赏
  • 举报
回复
那是因为你服务器的session过期了,但是客户端的sessionid还是原来那个,他去服务器取原来的那个session取不到了


您说的对,但此问题如何解决。谢谢
重返春季 2010-01-30
  • 打赏
  • 举报
回复
有源码吗,贴来让大家帮你分析一下吧。顶一下!!
swit1983 2010-01-28
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 yqb678 的回复:]
我的操作是先打开浏览器,生成验证码并放在 SESSION中,等SESSION超时后我再刷新页面,再生成新的验证码,此时到action中获取验证码就获取 不到。
[/Quote]
那是因为你服务器的session过期了,但是客户端的sessionid还是原来那个,他去服务器取原来的那个session取不到了
南南北北 2010-01-28
  • 打赏
  • 举报
回复
没取到的原因只有一个:你没存进去!
老紫竹 2010-01-28
  • 打赏
  • 举报
回复
1 你先确认你生成了新的验证码,浏览器的缓冲有时会做鬼的。

2 确认你生成验证码和测试验证码的顺序,先生成,后测试,这在页面操作时,经常出问题

3 实在不行,将你的验证码放到一个类的私有变量,然后监控器set方法,看看到底发生了什么。为啥get是空
nihuajie05 2010-01-28
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 crazylaa 的回复:]
你的session是不是request.getSession()的?记得()里面不要加(true)或(false)
[/Quote]
貌似我记得如果不加,是默认的。。。false。。是不是的。。。
我记得不清楚了。

我记得我当年做的时候,验证码不放在Session中,验证通过了以后就在Session中间设置一个flag=Y,否则就是null或者N。。
这样来判断的
todayclock 2010-01-28
  • 打赏
  • 举报
回复
建议你把代码粘贴过来,大家一块找找,究竟错误出现在哪里
mengxq 2010-01-28
  • 打赏
  • 举报
回复
值要放到session中,传过去要获取也要在session中获取
lewis219 2010-01-28
  • 打赏
  • 举报
回复
每次把验证码打印出来看看不就知道是个啥了啊,如果有值就不是session的问题啊,如果取不到那就是session问题
JavaAlpha 2010-01-28
  • 打赏
  • 举报
回复
楼主用的什么浏览器啊 换个其他的试试看

登录的时候打印一下 session的值 看看
镜花水月73 2010-01-28
  • 打赏
  • 举报
回复
可能是你页面加载了两次,当你此次去验证的时候在页面上显示的是重新加载的验证码,而你去对比的是上一次的验证码,你可以做下实验,分别获得记录对比一下,希望对你有所帮助
BearKin 2010-01-28
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 yqb678 的回复:]
引用 11 楼 crazylaa 的回复:
引用 7 楼 yqb678 的回复:
我的操作是先打开浏览器,生成验证码并放在 SESSION中,等SESSION超时后我再刷新页面,再生成新的验证码,此时到action中获取验证码就获取 不到。

session已经超时无效了,当然取不到。你把session超时时间设长点(标准30分钟足够)不就好了。另外你每次生成验证码,都需要往session里面重新set一下不知道你做了没有

问题是我刷新了,刷新时就要生成 一个新的session呀,为什么还取不到,另外我生成时每次的set了。
[/Quote]

没超时不刷新直接访问ACTION能获取SESSION 一刷新从新获得就不行? LZ的页面有木有做啥特殊操作捏?
zoujian19841202 2010-01-28
  • 打赏
  • 举报
回复
seesion过期了吧!
qqshenyunzcz 2010-01-28
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 java2000_net 的回复:]
1 你先确认你生成了新的验证码,浏览器的缓冲有时会做鬼的。

2 确认你生成验证码和测试验证码的顺序,先生成,后测试,这在页面操作时,经常出问题

3 实在不行,将你的验证码放到一个类的私有变量,然后监控器set方法,看看到底发生了什么。为啥get是空
[/Quote]
up
crazylaa 2010-01-27
  • 打赏
  • 举报
回复
你的session是不是request.getSession()的?记得()里面不要加(true)或(false)
yqb678 2010-01-27
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 crazylaa 的回复:]
引用 7 楼 yqb678 的回复:
我的操作是先打开浏览器,生成验证码并放在 SESSION中,等SESSION超时后我再刷新页面,再生成新的验证码,此时到action中获取验证码就获取 不到。

session已经超时无效了,当然取不到。你把session超时时间设长点(标准30分钟足够)不就好了。另外你每次生成验证码,都需要往session里面重新set一下不知道你做了没有
[/Quote]
问题是我刷新了,刷新时就要生成 一个新的session呀,为什么还取不到,另外我生成时每次的set了。
加载更多回复(11)
iWebShop 是一款面向独立卖家的单用户开源网店系统,基于PHP+MySQL框架开发,通过它可以迅速建立起一个B2C2C网上商城。iWebShop基于专业的MVC模式的IWEB框架开发,iWebShop可以轻松满足用户量级百万至千万级的大型电子商务网站的性能要求,良好的框架设计模式和严谨的代码规范让用户在高安全性的购物平台下获得绝佳的购物体验,程序伸缩能力强,支持数据库读写分离和主从支持!具有分布式技术(分布式计算与存储/高可用性/负载均衡)。 iWebShop集成了一切网店必要的功能模块,且不臃肿,是您首选建站绿色程序。其 100% 的源码开放性更使得无数开发者和模板设计者参与其中! 在产品前端方面整合了JS前端模板引擎artTemplate使得前端展示和数据进一步分离!更利于代码的二次开发和升级。 优化及bug修复: 1,商家商品增加检索功能 2,升级了layout控制,可以对任意试图设置layout在theme的config.php中 3,升级了mobile移动端的模板,增加了评论功能模块 4,管理员商品管理后台增加了批量设置和ajax设置库存,价格,标签等功能 5,重新优化了支付接口底层,允许后台自定义多个配置 6,升级了bx幻灯片插件,减少失效率 7,品牌列表去掉了只显示20品牌的限制 8,商品筛选与关键词进行关联 9,修改了验证码的路径兼容性,解决了部分环境下路径问题导致的验证码无法显示 10,修正了会员中心订单在删除情况下的统计错误 11,优化了session续写的兼容性 12,修正了qq登录在二级目录下的登录bug 13,更新api类库 14,修复了在图片规格下双引号未转义引发的错误 15,修正余额支付的key获取方式 16,修改了商户添加和申请时的唯一性检验 17,增加缩略图处理类库 18,修正了商品列表页面的自定义价格转义过滤错误

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧