原理:(部分代码是基于Spring注解的,请见谅)
1. 图片的src写请求的方式进入后台
2. 通过工具类生成一个图片的验证码,并将验证码放到session中,同时生成图片并输出图片。
@RequestMapping(value = "/image", method = RequestMethod.GET) public void initImg(HttpServletRequest request, HttpServletResponse response) throws Exception { // 设置不缓存图片 response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "No-cache"); response.setDateHeader("Expires", 0); // 生成随机字串 String verifyCode = VerifyCodeUtils.generateVerifyCode(4); // 存入会话session HttpSession session = request.getSession(true); session.setAttribute("verifyCode", verifyCode.toLowerCase()); // 生成图片 int w = 200, h = 80; VerifyCodeUtils.outputImage(w, h, response.getOutputStream(), verifyCode); }
3. 页面加载后就能出现图片
4. 在登录的时候在session中拿出刚刚存入session的verifyCode
@ResponseBody @RequestMapping(value = "/login", method = RequestMethod.POST) public ResultVO login(HttpServletRequest request, String userName, String password, String verifyCode) throws Exception { AssertUtil.notBlank(userName, "userName required"); AssertUtil.notBlank(password, "password required"); AssertUtil.notBlank(verifyCode, "verifyCode required"); HttpSession session = request.getSession(true); String sessionCode = session.getAttribute("verifyCode").toString(); if (!verifyCode.equals(sessionCode)) { throw new InvalidArgumentException("VerifyCode 错误"); } loginService.login(userName, password); ResultVO result = new ResultVO(); result.setMessage("login success"); return result; }
问题:
1. 之刷新图片不刷新页面?
解决方法:
1. 加上一个链接,
<a href="#" onclick="refreshImg();">下一张</a><br/>
注意href中不能为“”(空字符串),因为会刷新整个页面;同时可不能是“.”;只能是“#”
2. js脚本如下:
<script type="text/javascript"> function refreshImg () { var image = document.getElementById('verifyImg'); image.src = '../image?'+Math.random(); } </script>
注意:在之前../image请求的基础上,加上了随机数,因为用../image是无法刷新的,
3. 同时,在页面重新加载的时候刷新验证码,以免验证码被重用
window.onload = refreshImg();
相关推荐
Jsp 登录 验证码 实现
layui实现登陆界面验证码.docx
是关于web登陆验证码产生的C#代码,能够帮助你很快的完成验证码的实现
运行环境:jdk1.8;tomcat 8.0;导入代码后可直接运行。
java jsp验证码制作,导入jstl-1.2.jar包和standard-1.1.2.jar包
主要为大家详细介绍了javaWeb使用验证码实现简单登录,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Android验证码的功能实现,通过自定义控件实现验证码功能
名称:验证码程序 简介:一个普通的登录验证码程序,通过按钮"换一张"切换验证码,并自动生成文件保存在本地。 原理:通过MFC绘图技术实现,绘画文字和线条,实现简单的验证码。
主要介绍了SpringBoot登录验证码实现过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
java web登录验证码实现,分享,共勉学习。
基于asp.net mvc验证码的实现。
vue+springboot+redis+kaptcha实现登录页验证码
主要为大家详细介绍了asp.net登录验证码实现方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
实现spring-gateway登录验证码校验,使用randomstr参数作为每次生成验证码图片的唯一标识,验证码Kaptcha插件
jsp登录验证码,很好的登录验证码初学易懂
本文实例讲述了Bootstrap实现前端登录页面带验证码功能。分享给大家供大家参考,具体如下: Bootstrap有自定义的验证码样式,在前端页面可以直接使用,他的css、js在使用前要在开头引入 上代码: <!DOCTYPE ...
C#实现登录验证码 C#编写源代码 word介绍
必备VcodeExtractor.jar 包,放进jmeter\lib\ext目录下,重启jmeter 就可以使用了
资源名:asp.net短信登录验证码和图片验证程序源码 资源类型:程序源代码 源码说明: 1.实现了验证码倒计时的功能 1.以下验证码例子采用的是先获取手机号文字验证码,如果文字验证码收不到,将采用语音播放验证码的...
用户登录常常要做防机器验证,所以使用到了随机验证码,防止机器刷 1.直接java内部自带的就行啦,也不需要用外部生成的api 生成验证码的工具类的写法: import javax.imageio.ImageIO; import java.awt.*; import ...