java生成并展示验证码
来源:互联网 发布:尘埃落定 知乎 编辑:程序博客网 时间:2024/06/06 19:54
第一步:生成验证码
/** * 验证码生成程序 * <p> * * @param model * @return * @throws IOException */@Login(action = Action.Skip)@ResponseBody@RequestMapping(value = "/login_code", method = RequestMethod.GET)public String login_code( Model model ) throws IOException { ConfigurableCaptchaService cs = new ConfigurableCaptchaService(); cs.setHeight(40); cs.setColorFactory(new RandomColorFactory()); cs.setFilterFactory(new CurvesRippleFilterFactory(cs.getColorFactory())); cs.setFontFactory(new RandomFontFactory()); MultipleColorBackgroundFactory bbb = new MultipleColorBackgroundFactory(cs); bbb.setNumber(50); cs.setBackgroundFactory(bbb); cs.setWordFactory(new WordFactory() { public String getNextWord() { StringBuilder str = new StringBuilder(); for ( int i = 0 ; i < 4 ; i++ ) { str.append(getSingleNumberChar()); } Cookie cookie = CookieHelper.findCookieByName(inv.getRequest(), COOKIE_NAME); if ( cookie == null ) { String source = "abcdefghijklmnopqrstuvwxyz"; cookie = new Cookie(COOKIE_NAME, doProduce(6, source)); cookie.setMaxAge(1800); String codeKey = "ds_reg_code:" + cookie.getValue(); expireCache.set(codeKey, str.toString(), 180); inv.getResponse().addCookie(cookie); } else { String codeKey = "ds_reg_code:" + cookie.getValue(); expireCache.set(codeKey, str.toString(), 180); } return str.toString(); } private char getSingleNumberChar() { Random random = new Random(); int numberResult = random.nextInt(10); int ret = numberResult + 48; return (char) ret; } }); EncoderHelper.getChallangeAndWriteImage(cs, "png", inv.getResponse().getOutputStream()); return null;}/** * 产生随机数 */private static String doProduce(int maxLength, String source) { StringBuffer sb = new StringBuffer(100); for (int i = 0; i < maxLength; i++) { Random random = new Random(); final int number = random.nextInt(maxLength); sb.append(source.charAt(number)); } return sb.toString();}
第二步:页面展示验证码
<div class="row cl "> <label class="form-label mt-10 col-xs-4">验证码:</label> <div class="formControls col-xs-4"> <input class="input-text " name="identityCode" id="identityCode" datatype="n" nullmsg="请输入验证码!" type="text"> <img alt="" id="codeBtn" src="/ds/login_code" onclick="this.src='/test/login_code?r='+new Date().getTime()" style="cursor: pointer;"> </div> <div class="col-xs-4"></div></div>
第三步验证输入是否正确
// 检查验证码if (StringUtils.isEmpty(identityCode)) { payUrlMap.put("err_code_des", "请输入验证码!"); checkFlg = false;} else { Cookie cookie = CookieHelper.findCookieByName(inv.getRequest(), COOKIE_NAME); if ( cookie != null ) { String codeKey = "ds_reg_code:" + cookie.getValue(); String cacheCode = expireCache.get(codeKey); if (!identityCode.equals(cacheCode)) { payUrlMap.put("err_code_des", "验证码输入错误,请重新输入!"); checkFlg = false; } expireCache.remove(codeKey); }}
阅读全文
0 0
- java生成并展示验证码
- Java生成验证码并进行验证
- java生成验证码并进行验证
- Java生成验证码并进行验证
- 生成验证码并验证
- Java生成验证码图片并进行验证
- java 生成base64位验证码用于app端展示验证码
- java后端生成图片验证码并转化成base64
- Java生成随机验证码图片并进行Base64编码
- Java生成随机验证码图片并进行Base64编码
- js生成验证码并验证
- js生成验证码并验证 .
- js生成验证码并验证
- Javascript生成验证码并验证
- js生成验证码并验证
- JSP+servlet生成验证码并验证
- js生成验证码并验证
- js生成简单验证码并验证
- 数据结构 c语言实现顺序队列(输数字入队,字符出队)
- day14(正则表达式,Math,Random,System,BigInteger,BigDecimal,Date等)
- 51nod 1133 不重叠的线段(贪心)
- Win7环境安装Anaconda
- js 自定义属性
- java生成并展示验证码
- mysql(五)操作数据表
- Linux_入门之虚拟机的全自动安装
- Android 三方登录
- c# android开发软件安装及环境配置
- 设计模式——观察者模式
- IntelliJ IDEA 的安装和破解
- HDU-6053 TrickGCD 前缀和数组,莫比乌斯函数
- 海量数据处理~