java开发2--验证码
来源:互联网 发布:centos 安装中文包 编辑:程序博客网 时间:2024/06/16 08:04
一、验证码原理
(1)向后台发送请求,后台服务器生成一个随机数,利用这个随机数映射一张图片,最后将这张图片返回客户端;
(2)后台生成验证码字符串时,同时将这个字符串保存起来,当用户提交验证码时检测填写的验证码是否和这个随机数相同。
关于验证码,重要的有三点,这三点处理不好都可能被破解者利用。一是随机数的生成,二是随机数和图片的映射,三是随机数如何保存。
网上有很多种验证码插件,下面主要以google的验证码插件kaptcha为例进行讲解。
二、验证码示例
1.首先去官网下载jar:http://code.google.com/p/kaptcha/
2.建立一个web项目,导入kaptcha-2.3.jar到环境变量中。
3.在web.xml文件里配置验证码生成器
<!-- 验证码生成器 --> <servlet> <servlet-name>yzm</servlet-name> <servlet-class> com.google.code.kaptcha.servlet.KaptchaServlet </servlet-class> <init-param> <param-name>kaptcha.border</param-name> <param-value>no</param-value> </init-param> <init-param> <param-name>kaptcha.textproducer.font.color</param-name> <param-value>black</param-value> </init-param> <init-param> <param-name>kaptcha.textproducer.char.space</param-name> <param-value>5</param-value> </init-param> <init-param> <param-name>kaptcha.textproducer.font.size</param-name> <param-value>40</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>yzm</servlet-name> <url-pattern>/yzm.jpg</url-pattern> </servlet-mapping>
4.前台发送“获取验证码”请求
<!-- 验证码图片 --> <span class="sp_img"> <img id="yzmImg" width="70px" height="25px" /> </span> /** * 获得验证码图片 */var yzm_num = 0;function getYzmFromZsfy(){ var yzmImg = document.getElementById("yzmImg"); yzmImg.src = ctx + "/yzm.jpg?n=" + (yzm_num++);}
5.后台检查验证码是否输入正确
HttpSession session = request.getSession(false);if (session != null) { String captchaKey = (String) session.getAttribute(Constants.KAPTCHA_SESSION_KEY); Date captchaTime = (Date) session.getAttribute(Constants.KAPTCHA_SESSION_DATE); // 删除旧的验证码 session.removeAttribute(Constants.KAPTCHA_SESSION_KEY); session.removeAttribute(Constants.KAPTCHA_SESSION_DATE); } if (StringUtils.isBlank(captchaKey) || create == null) { throw new CaptchaException("验证码已过期"); } String captchaInput = request.getParameter("yzm"); if (!captchaKey.equalsIgnoreCase(captchaInput) { throw new CaptchaException("验证码错误"); }
验证码的使用,可参考以下链接:
http://www.open-open.com/lib/view/open1407057699179.html
0 0
- java开发2--验证码
- java开发之验证码
- java开发之动态生成验证码
- JAVA开发短信验证码系统
- JAVA开发短信验证码系统
- Java 开发验证类
- 【java开发】邮箱验证
- java验证码 验证
- java验证码识别--2
- java验证码识别--2
- java验证码识别--2
- java验证码识别--2
- java开发_使用BufferedImage生成验证码
- java web 开发中验证码的应用
- 自动识别验证码开发
- Servlet开发验证码
- iOS开发验证码
- java微信开发-token验证
- iOS - SDWebImage的原理以及使用流程
- 五行相生相克
- #include<iostream>和#include<iostream.h>的区别
- 总结1
- POJ 1860 Currency Exchange
- java开发2--验证码
- Mac格式后U盘存储空间变成200M
- 使用Spring MVC构建REST风格WEB应用
- iOS socket编程(入门)
- parent:: self:: static $this->php
- AYITACM2016省赛第四周D-Gunner(STL,map)
- 大数据比赛(3)- 模型选择II
- 发送,接收通知
- swift 拨打电话