本关任务:编写程序验证验证码是否正确。
上一关我们已经学习如何生成验证码了,为了完成一整套的验证码使用流程我们还需要知道如何验证用户提交的验证码是否正确。
我们经常在登录注册的时候填写验证码,本关我们就来实现登录功能。
首先我们来理解验证码校验的基本流程:
上图展示了一个用户填写验证码的基本流程,用户打开网页显示服务端生成的验证码,点击“看不清楚”标签可以重新生成,这个时候会从新请求服务端数据,服务端用Session
来保存验证码信息。
当用户点击确认按钮的时候,我们就需要对用户通过表单提交的验证码进行校验了,这个时候服务端获取Session
保存的验证码信息和用户提交的验证码数据进行校验如果两者一致则校验通过。
这就是一个完整的验证码流程了。
我们可以将验证码的流程总结为:前端表单登陆 => 后端获取到验证码校验 => 前端收到后端的响应。
借下来我们来实现这个过程。
我们创建一个登录表单,代码如下:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登录</title>
</head>
<body>
<form action="loginServlet">
用户名:
<input type="text" name="username">
<br>
密 码:
<input type="text" name="password">
<br>
验证码:
<input type="text" name="verifycode" id="yzm">
<!-- src填servlet的地址就能显示网络上的图片 -->
<a href="javascript:reload()"><img id="yzmImg" src="code"/> </a>
<br>
<input type="submit" value="提交">
</form>
</body>
<script type="text/javascript">
//重新加载验证码
function reload() {
var img = document.getElementById("yzmImg");
img.src = "code?" + new Date().getTime();
}
</script>
</html>
效果如下:
前端页面写好之后我们就可以验证在后端编写代码来验证,表单传递过来的参数是否正确了。
步骤如下:
接收用户传递的参数:username,password,verifycode
;
判断验证码是否正确;
如果验证码正确则判断用户名和密码是否正确。否则提示客户端验证码错误;
用户名密码正确,回传给客户端“登录成功”。
校验验证码的核心代码如下: