我有一个image1.jsp生成随机的图片形式验证码,然后把他放到session对象里:session.setAttribute("rand",sRand),我的登录页面login.jsp需要填写验证吗,我想要用js验证是否填写了正确的验证码,我从js里面应该怎么获得image1.jsp中session的值,等待各位好心人指教!!

解决方案 »

  1.   

    可 以用 java 取到 
    <%
    String code = (String)session.getAttribute("rand")
    %>
    再将这个值赋给一个js变量 
    <script>
    var c = <%=code>
    </script>
      

  2.   

    我在login.jsp页面设置了一个隐藏文本框,它的value="session.getAttribute("rand"),js获得的该value值,但是session里面每次获得的都是上一个图片上的值,不知道怎么回事啊,
      

  3.   

    你在请求那个图片 时 后边加一个时间戳 每次请求都是新图片 
    比如 图片请求url='getImg.jsp?timestamp='+new Date().getTime()
      

  4.   

    login.jsp中的隐藏文本框:<input type="hidden" id="code" value="<%=session.getAttribute("rand")%>"/>
    js代码:function check(){
    var picture = $("#imagnum").val();//获得文本框的值
    var rands = $("#code").val();//获得隐藏文本框的值
    alert(rands);
    if(picture!=rands){
     alert("您输入的验证码不正确");
     return false;
     }
    }
      

  5.   

    校验码:<input type="text" name="imag" id="imagnum"><img id="pic" src="image1"/>
    <a href="javascript:void(0)" onclick="changeImage()">看不清,点击再换一张</a>
     <input type="hidden" id="code" value="<%=session.getAttribute("rand")%>"/>
      

  6.   

    就是说你显示的那个地方 每次都是加载的同一个图片 所以 code 是一样的 你那个src是不是可以写成 'image1.jsp?timestamp='+new Date().getTime(),也就是说用户在访问你这个页面时 每次让他去新读一个图过来 我的表达可能不好 呵呵 
      

  7.   

    <img id="pic" src="image1.jsp?timestamp="+new Date().getTime()>中不可以这么写的,而且我不知道这么个想法对不对,因为我第一次加载页面的时候,session里面rand为null,以后每次刷新的时候,获得隐藏文本框里的value值都为图片上一次的值,很郁闷啊,js到底能否验证验证码呢
      

  8.   

    那 img 标签 里的src 或其他属性 可不可以调你那个changeImg 方法呢 ?我印象里这个方法是可行的 以前学的时候用过 好久没有用了 也记不清了 等待高手来指正 呵呵
      

  9.   

    1.页面中出现<img id="pic" src="image1.jsp"/>之类的语句时,image1.jsp得到执行,之后会创建session对象。
    所以,获取session对象中的值的语句必须出现在<img id="pic" src="image1.jsp"/>之后,否则获取的值为空。
    2.为了防止浏览器缓存,在<a href="javascript:void(0)" onclick="changeImage()">看不清,点击再换一张</a>这条语句中加多个时间戳,具体是在changeImage()函数加给img赋src属性值时加多个(new Date()).getTime()或者Math.random()之类的。
      

  10.   

    12楼大哥第一点,很有道理,可是我的问题不是那个意思
    <form method="post" action="login.action">
         <table>
         <tr><td>用户名:</td><td><input type="text" name="userName" id="userName"><span id="infor"></span></td></tr>
         <tr><td>密码: </td><td> <input type="password" name="passwd" id="passwd"></td></tr>
         <tr><td>校验码:</td><td><input type="text" name="imag" id="imagnum"><img id="pic" src="image1.jsp">
         <a href="javascript:void(0)" onclick="changeImage()">看不清,点击再换一张</a><span id="checkcode" style="color:red">${picterrors}</span>
         <input type="hidden" id="code" value="<%=session.getAttribute("rand") %>">
         </td></tr>
         <tr><td align="center" colspan="1"><input type="submit" value="登陆" onclick="check()"><input type="reset" value="取消"></td></tr>
         </table>  
          </form>
    js代码: function check() {
    var imagnum = $("#imagnum").val();
    var rands = $("#code").val();
    alert(rands);//第一次页面加载的时候,rands总为null,以后的值每次都是上一张验证码的值 var message;
    if (imagnum != rands) {
    message = "验证码错误,请重新填写!"
    $("#checkcode").html(message);
    }
    }