如何在自己登录注册页面添加验证码并且实时刷新

为什么要添加验证码?
为了防止重复提交表单,给服务器造成压力

需要的工具 : kaptcha-2.3.2.jar idea2019.3
谷歌验证码 封装好的servlet类

首先导入jar包

导入完成之后 可以直接在web.xml进行配置

配置代码如下:

	<servlet>
		<servlet-name>KaptchaServlet</servlet-name>
		<servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>KaptchaServlet</servlet-name>
		<url-pattern>/kaptcha.jpg</url-pattern>
	</servlet-mapping>
	

如果添加完成之后 重新部署 直接访问之后 就会得到一个验证码图片
效果如图;

如何在自己登录注册页面添加验证码并且实时刷新_第1张图片

问题来了?

得到图片之后 怎么获取 里面的字符

该工具会在登录后台 或者 注册后台 设置一个session 通过 id可以取出 value 值


        // 获取Session中的验证码
        String token = (String) req.getSession().getAttribute(KAPTCHA_SESSION_KEY);
        // 删除 Session中的验证码
        req.getSession().removeAttribute(KAPTCHA_SESSION_KEY);

其中 KAPTCHA_SESSION_KEY是常量 固定ID

其中原理是 当我们请求服务器之后 通过session 得到值 之后 立马删除session 为下一次请求做准备

这样就防止多次请求

之后 获取 发送的 验证码 进行 比对
正确之后 进行下一步操作 不正确 返回页面 回显错误信息

String code = req.getParameter("code");
        //检查验证码有否有问题
        if (token != null && token.equalsIgnoreCase(code)) {
}else{

}

如何在jsp页面中显示验证码图片呢

利用 img src 属性

                   "img_check" src="kaptcha.jpg" width="80px" height="40px" >

其中 src中放的 正是请求servlet的地址 便可获取到图片

你可能感兴趣的:(笔记,servlet,java,session,web)