关于验证码
通过alert方法,发现这里的问题首先在于,kcode一直是最初显示的那个验证码,不会随着刷新而接收到刷新后的新的验证码的值。
第二个问题是,输入的验证码和kcode验证码不一致,但每次还是能成功登陆,这是为什么?
<%@page contentType="text/html; UTF-8" pageEncoding="UTF-8" language="java" %> <!DOCTYPE html> <html> <head> <%--均可,均不必,因为已经在外部写了common.jsp--%> <%--<base href="<%=basePath%>">--%> <%--<base href="${basepath}">--%> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>登录页面</title> <style type="text/css"> .code { font-family:Arial; font-style:normal; color:blue; font-size:20px; border:0; padding:2px 3px; letter-spacing:3px; font-weight:bolder; float:left; cursor:pointer; width:40px; height:20px; line-height:20px; text-align:center; vertical-align:middle; } a { text-decoration:none; font-size:12px; color:#288bc4; } a:hover { text-decoration:underline; } </style> </head> <body > <% String msg = ""; if(request.getAttribute("msg")!=null){ msg = (String)request.getAttribute("msg"); } %> <center> <h1>用户登录</h1> <h3><font color="red"><%=msg%></font></h3> <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" name="username" pattern="[a-zA-Z_0-9]{3,12}" required="required" placeholder="用户名为3-12位字母数字或下划线组合"> </td> </tr> <tr> <td>密 码</td> <td colspan="2"> <input type="password" name="password" pattern="[a-zA-Z_0-9]{5,12}" required="required" placeholder="长度为5-12位字母数字或下划线组合" > </td> </tr> <tr> <td>验证码</td> <td style="border-right-style:none; width: 150px"> <input type="text" name="checkCode" pattern="[a-zA-Z0-9]{4}" required="required" placeholder="请输入验证码" id="inputCode"> </td> <td style="border-left-style:none;"> <div class="code"> <img id="changeCode" src="http://localhost:8080/mook_course/kaptcha.jpg" /> </div> </td> </tr> <tr> <td colspan="3" style="text-align:center"> <input type="submit" value="登录"> <input type="reset" value="取消"> </td> </tr> </table> </form> </center> <script src="js/jquery-3.3.1.min.js"></script> <script> $(function(){ $("#changeCode").on("click",function(){ $(this).attr("src","http://localhost:8080/mook_course/kaptcha.jpg?d="+new Date().getTime()); }); }) </script> <%--检验验证码--%> <script type="text/javascript"> function validateCode(){ var inputCode = document.getElementById("inputCode").value.toLowerCase(); var kcode = "<%=session.getAttribute("kcode")%>".toLowerCase(); alert(inputCode); alert(kcode); if(inputCode.equals(kcode)){ return true; }else{ alert("验证码输入有误!"); document.getElementById("inputCode").value=""; return false; } } </script> </body> </html>
0
收起
正在回答
2回答
同学你好,实验同学的代码,可以刷新验证码。如下代码处:
kcode获取为null,问一下同学session中有kcode吗?
另外js中没有equals方法,这里同学可以使用==比较即可。
祝:学习愉快~
慕数据7156690
2019-03-24 16:55:33
web.xml里配置了的,把kcode放进session
老师再试我的代码的时候,启动tomcat后,不关闭tomcat而是同步一下,然后重新进入登陆页面,就能发现能接收到验证码kcode。
但这时候还是跟之前一样,刷新验证码后并不能接收到新的kcode,而一直是原本的kcode。
就像下面这样,图一alert的是我输入的值,图二alert的是session中存的kcode
从网页搭建入门Java Web2018版
- 参与学习 人
- 提交作业 1088 份
- 解答问题 10205 个
如果你有Java语言基础,又想以后从事Java Web开发,那么本路径是你的不二选择!本路径从网页搭建开始入手,通过大量案例来学习Java Web基础。定能助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星