我的程序是JAVA与JSP的也存在这个问题,就是开始的时候向SESSION中存入验证码,但在有时候就取不到值,以至于比对时造成输入的验证码与SESSEION中获取的NULL值不相等,提示用户验证码错误。请指教为什么SESSION有时候获取不到值 呢。急谢谢

解决方案 »

  1.   

    不知道你的验证码是怎么实现的....你直接在网上找个jsp验证码控件,里面有session,你可以在servlet或者action里面取出jsp验证码session的值,然后再和你服务端接收验证码的值比对.你自己试试,我是这样做的。
      

  2.   

    我的也是这么写的就是不行,就是偶尔在action中获取不到值
      

  3.   

    是不是从SESSION中获取到验证码后要调用此方法呀request.getSession().invalidate();?
      

  4.   

    我的操作是先打开浏览器,生成验证码并放在 SESSION中,等SESSION超时后我再刷新页面,再生成新的验证码,此时到action中获取验证码就获取 不到。
      

  5.   

    每次生成图片前校验下session是否失效啦
      

  6.   

    有几种可能:
    1。session过期了,默认30分钟。也可以手动设置session过期
    2。访问超出了session的作用范围
      

  7.   

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

  8.   

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

  9.   

    你的session是不是request.getSession()的?记得()里面不要加(true)或(false)
      

  10.   


    没超时不刷新直接访问ACTION能获取SESSION 一刷新从新获得就不行? LZ的页面有木有做啥特殊操作捏?
      

  11.   

    楼主用的什么浏览器啊 换个其他的试试看 登录的时候打印一下 session的值 看看
      

  12.   

    每次把验证码打印出来看看不就知道是个啥了啊,如果有值就不是session的问题啊,如果取不到那就是session问题
      

  13.   

    值要放到session中,传过去要获取也要在session中获取
      

  14.   

    貌似我记得如果不加,是默认的false。。是不是的
    我记得不清楚了。我记得我当年做的时候,验证码不放在Session中,验证通过了以后就在Session中间设置一个flag=Y,否则就是null或者N。。
    这样来判断的
      

  15.   

    1 你先确认你生成了新的验证码,浏览器的缓冲有时会做鬼的。2 确认你生成验证码和测试验证码的顺序,先生成,后测试,这在页面操作时,经常出问题3 实在不行,将你的验证码放到一个类的私有变量,然后监控器set方法,看看到底发生了什么。为啥get是空
      

  16.   

    那是因为你服务器的session过期了,但是客户端的sessionid还是原来那个,他去服务器取原来的那个session取不到了
      

  17.   

    那是因为你服务器的session过期了,但是客户端的sessionid还是原来那个,他去服务器取原来的那个session取不到了
    您说的对,但此问题如何解决。谢谢
      

  18.   

    我的貌似也是这种问题,在servlet中还能打印出来,但在jsp中又取不到
      

  19.   

    我的也是这个问题啊,sverlet能取到值,到页面就取不到了,session默认30分钟,肯定没过期啊,值也存进去了,
     servlet中:request.getSession().setAttribut("validateCode",randomCode.toString());   
               System.out.println(session.getAttribute("validateCode")+"vvvvvvvv");
          到这里能打印出来的
    jsp:中: ${sessionScope.validateCode} 为null
      

  20.   

    http://computername:8080/         通过计算机名不可取session
    http://localhost:8080/       通过localhost可取session
    http://192.168.1.2:8080/   通过本机IP可取session楼主以及各种有类似验证码session取不到的同学请试上面地址,一般可解决。