利用simplecaptcha-1.2.1 实现验证码码
2012-09-14 15:13
169 查看
首先在项目上加入 simplecaptcha-1.2.1 jar包 ,下载地址:http://download.csdn.net/detail/zhaokuo719/4570328
本人是在Spring项目中使用:
java代码如下:
还有个properties文件:
本人是在Spring项目中使用:
java代码如下:
package com.zhaokuo.config; import java.awt.Color; import java.awt.Font; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import nl.captcha.Captcha; import nl.captcha.Captcha.Builder; import nl.captcha.backgrounds.GradiatedBackgroundProducer; import nl.captcha.gimpy.DropShadowGimpyRenderer; import nl.captcha.noise.CurvedLineNoiseProducer; import nl.captcha.noise.NoiseProducer; import nl.captcha.servlet.CaptchaServletUtil; import nl.captcha.text.producer.DefaultTextProducer; import nl.captcha.text.renderer.DefaultWordRenderer; import nl.captcha.text.renderer.WordRenderer; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; /** * @author 赵阔 2012-8-9 * */ @Service("simpleCaptcha") public class SimpleCaptcha { @Value("${_width}") private int _width = 200; @Value("${_height}") private int _height = 50; @Value("${_noise}") private int _noise = 0; @Value("${_text}") private String _text = null; @Value("${chinese_text}") private String base; /** * 因为获取图片只会有get方法 */ public void showCaptcha(HttpServletRequest req, HttpServletResponse resp, String name) throws Exception { Builder builder = new Captcha.Builder(_width, _height); // 增加边框 builder.addBorder(); NoiseProducer nProd = new CurvedLineNoiseProducer(Color.BLACK, 2); // 是否增加干扰线条 if (_noise == 1) builder.addNoise(nProd); // ----------------自定义字体大小----------- // 自定义设置字体颜色和大小 最简单的效果 多种字体随机显示 List<Font> fontList = new ArrayList<Font>(); fontList.add(new Font("宋体", Font.HANGING_BASELINE, 40));// 可以设置斜体之类的 fontList.add(new Font("Courier", Font.ITALIC, 40)); fontList.add(new Font("宋体", Font.PLAIN, 40)); // 加入多种颜色后会随机显示 字体空心 List<Color> colorList = new ArrayList<Color>(); // colorList.add(Color.green); // colorList.add(Color.pink); colorList.add(Color.gray); // colorList.add(Color.blue); DefaultWordRenderer cwr = new DefaultWordRenderer(colorList, fontList); //ColoredEdgesWordRenderer cwr= new ColoredEdgesWordRenderer(colorList,fontList); WordRenderer wr = cwr; // 增加文本,默认为5个随机字符. if (_text == null) { builder.addText(); } else { String[] ts = _text.split(","); for (int i = 0; i < ts.length; i++) { String[] ts1 = ts[i].split(":"); if ("chinese".equals(ts1[0])) { char[] chinese = base.toCharArray(); builder.addText( new DefaultTextProducer(Integer.parseInt(ts1[1]), chinese), wr); } else if ("number".equals(ts1[0])) { char[] numberChar = new char[] { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9' }; builder.addText( new DefaultTextProducer(Integer.parseInt(ts1[1]), numberChar), wr); } else if ("word".equals(ts1[0])) { char[] numberChar = new char[] { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' }; builder.addText( new DefaultTextProducer(Integer.parseInt(ts1[1]), numberChar), wr); } else { builder.addText( new DefaultTextProducer(Integer.parseInt(ts1[1]), null), wr); } } }// --------------添加背景------------- // 设置背景渐进效果 以及颜色 form为开始颜色,to为结束颜色 GradiatedBackgroundProducer gbp = new GradiatedBackgroundProducer(); gbp.setFromColor(Color.BLUE); gbp.setToColor(Color.WHITE); // 无渐进效果,只是填充背景颜色 // FlatColorBackgroundProducer fbp=new FlatColorBackgroundProducer(Color.white); // 加入网纹--一般不会用 // SquigglesBackgroundProducer sbp=new SquigglesBackgroundProducer(); // 没发现有什么用,可能就是默认的 // TransparentBackgroundProducer tbp = new // TransparentBackgroundProducer(); builder.addBackground(gbp); // ---------装饰字体--------------- // 字体边框齿轮效果 默认是3 // builder.gimp(new BlockGimpyRenderer(1)); // 波纹渲染 相当于加粗 // builder.gimp(new RippleGimpyRenderer()); // 加网--第一个参数是横线颜色,第二个参数是竖线颜色 // builder.gimp(new FishEyeGimpyRenderer(Color.white,Color.black)); // 加入阴影效果 默认3,75 builder.gimp(new DropShadowGimpyRenderer(5, 10)); Captcha captcha = builder.build(); CaptchaServletUtil.writeImage(resp, captcha.getImage()); req.getSession().setAttribute(name, captcha.getAnswer()); } }
还有个properties文件:
相关文章推荐
- 利用django-simple-captcha生成验证码
- django-simple-captcha 验证码插件 和自己实现验证码的
- 利用Zend_Form_Element_Captcha 实现登录验证的验证码功能
- 利用keras破解captcha验证码
- django-simple-captcha 验证码插件介绍
- 利用Timer类实现获取验证码并倒计时的功能
- 验证码之SimpleCaptcha (二)
- 利用HttpHandler实现验证码 及 当你希望从ashx或HttpHandler里访问你的Session时,你必须实现IReadOnlySessionState接口.
- django-simple-captcha 验证码插件
- 利用JS实现局部刷新验证码(非Ajax)
- django - 验证码 django-simple-captcha 使用简介
- 利用okhttp框架实现包含验证码的用户登录,保持session操作
- javaWEB总结(26):利用session实现一次性验证码
- 实现通用 Web CAPTCHA 图形验证码 JavaScript 脚本 API 服务 (JavaScript 脚本动态页面引用) 完整代码
- web数据采集核心技术分享系列(四)利用神经网络实现网页验证码破解
- Cakephp中使用Captcha实现更加安全的验证码
- django中验证码——django-simple-captcha
- 利用重写url机制简单实现验证码换一张的功能
- 利用axure做原型图——登录界面验证码的实现
- 利用Cookie或URL实现Session跟踪-----利用Session实现一次性验证码