验证码获取不同步问题

验证码获取不同步问题

每一次获取到生成的验证码均为上一次图片显示的。如图:第一张是第一次登录所以为null,第二张就是第二次登录http://img1.sycdn.imooc.com//climg/5d78db1f0894ee6607990490.jpg

http://img1.sycdn.imooc.com//climg/5d78db1f08573d5807930520.jpg


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
好帮手慕小班 2019-09-12 10:05:39

同学你好,1、这个单独复制登录界面,运行效果不正确,报错原因:basePath不存在,在这个页面中并不存在basePath的内容,所以这里老师并没有办法直接测试贴出代码。

2、同学在第一次进入登录页面,是直接通过 http://localhost/项目名/页面.jsp   这样来进入的吧,建议同学创建一个servlet,通过servlet来进入这个登录.jsp页面,再来测试一下,是否还是不同步呐。

如果我的回答解决了你的疑惑,请采纳,祝学习愉快~

  • 提问者 懒人13 #1
    老师,我就是用的servlet进入的index.jsp页面的
    2019-09-12 10:39:04
  • 芝芝兰兰 回复 提问者 懒人13 #2
    同学你好。在新问答 http://class.imooc.com/course/qadetail/153317 中回复你啦~后续我们在新问答中讨论~祝学习愉快~
    2019-09-12 16:38:17
  • 好帮手慕小班 回复 提问者 懒人13 #3
    同学你好,在同学贴出的代码中,同学使用的是kapcha来实现验证码-->对应获得session中保存的验证码的信息需要使用kapcha的KAPTCHA_SESSION_KEY来获取哟。继续加油 祝:学习愉快~
    2019-09-12 16:50:18
提问者 懒人13 2019-09-11 19:45:11

我在Servlet中取得的两个值是正常的,在jsp页面中的function()中就是这样,下面是JSP页面代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt"%>
<!DOCTYPE html>
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>登录页面</title>
<style type="text/css">
   a 
   {
    text-decoration:none;
    font-size:12px;
    color:#288bc4;
   }
   a:hover 
   {
    text-decoration:underline;
   }

</style>
</head>

<body>
   <center>
      <h1>用户登录</h1>
      <p style="color: red">${msg}</p>
      <form action="<%=basePath%>/LoginServlet" method="post" onsubmit="return validateCode()">
         <table width="300px" cellspacing="0px" cellpadding="0px" border="1px">
            <tr>
               <td>用户名</td>
               <td colspan="2"><input type="text" id="username" name="username"  placeholder="用户名为3-12位字母数字或下划线组合"></td>
            </tr>
            <tr>
               <td>密&nbsp;码</td>
               <td  colspan="2"><input type="password" id="password" name="password" placeholder="长度为5-12位字母数字或下划线组合" ></td>
            </tr>
            <tr style="height:40px">
               <td>验证码</td>
               <td style="border-right-style:none;">
                  <input type="text" name="inputCode" id="inputCode" placeholder="请输入验证码" maxlength="4">
               </td>
               <td style="border-left-style:none;">
                  <div class="" id="checkCode" >
                     <form action="submit.action">
                        <img src="<%=basePath %>/kaptcha.jpg" id="kaptchaImg"/>
                     </form>
                  </div>
               </td>
            </tr>
            <tr>
               <td colspan="3" style="text-align:center">
                  <input type="submit" id="login" value="登录">
                  <input type="reset" value="取消">
               </td>
            </tr>
         </table>
      </form>
   </center>
   <script src="<%=request.getContextPath()%>/js/jquery-3.3.1.js" type="text/javascript"></script>
    <script>
        $(function () {
            $("#kaptchaImg").on("click", function () {
                $(this).attr("src", "<%=basePath%>/kaptcha.jpg?d=" + new Date().getTime());
            });
            $("#login").on("click",function(){
                //获取生成的验证码
            var kcode= '<%= request.getSession().getAttribute("kcode")%>';
               //获取用户输入的验证码
                var inputcode = $("#inputCode").val();
                alert("生成验证码:"+kcode+"  用户输入验证码:"+inputcode);
               <%--if(kcode != inputcode){--%>
               <%--     alert("验证码输入有误!");--%>
            <%--   window.navigator("<%=basePath%>/index");--%>
               <%--}--%>
            });
        })
    </script>
</body>
</html>

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
从网页搭建入门Java Web2018版
  • 参与学习           人
  • 提交作业       1088    份
  • 解答问题       10205    个

如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师