利用谷歌 kaptcha 进行验证码生成

 1 package main.com.smart.controller;
 2
 3 import com.google.code.kaptcha.Producer;
 4 import main.com.smart.utils.CaptchaProducer;
 5 import main.com.smart.utils.RedisClient;
 6 import org.apache.log4j.Logger;
 7 import org.apache.log4j.spi.LoggerFactory;
 8 import org.springframework.beans.factory.annotation.Autowired;
 9 import org.springframework.stereotype.Controller;
10 import org.springframework.web.bind.annotation.RequestMapping;
11 import org.springframework.web.servlet.ModelAndView;
12
13 import javax.imageio.ImageIO;
14 import javax.servlet.ServletOutputStream;
15 import javax.servlet.http.HttpServletRequest;
16 import javax.servlet.http.HttpServletResponse;
17 import javax.servlet.http.HttpSession;
18
19 import com.google.code.kaptcha.Constants;
20
21 import java.awt.image.BufferedImage;
22
23 /**
24  * 验证码 生成控制器
25  *
26  * @author yang ming
27  * @create 2016-04-29 12:17
28  */
29
30
31 @Controller
32 @RequestMapping("/kaptcha")
33 public class CaptchaController {
34     /**
35      * 使用方法
36      * get: http://localhost:8080/smart/kaptcha
37      */
38     private static final Logger log = Logger.getLogger(CaptchaController.class);
39     @Autowired
40     private Producer captchaProducer = null;
41
42     @RequestMapping
43     public ModelAndView getKaptchaImage(HttpServletRequest request, HttpServletResponse response) throws Exception {
44         RedisClient client = RedisClient.getInstance();
45         //在控制器中获取验证码
46         //String kaptchaExpected = (String) request.getSession().getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
47         log.info("获取验证");
48
49         log.info(Constants.KAPTCHA_SESSION_KEY);
50         HttpSession session = request.getSession();
51         String code1 = client.getValue(Constants.KAPTCHA_SESSION_KEY);
52         String code = String.valueOf(session.getAttribute(Constants.KAPTCHA_SESSION_KEY));
53         //System.out.println("******************验证码是: " + code + "******************");
54
55         response.setDateHeader("Expires", 0);
56
57         // Set standard HTTP/1.1 no-cache headers.
58         response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
59
60         // Set IE extended HTTP/1.1 no-cache headers (use addHeader).
61         response.addHeader("Cache-Control", "post-check=0, pre-check=0");
62
63         // Set standard HTTP/1.0 no-cache header.
64         response.setHeader("Pragma", "no-cache");
65
66         // return a jpeg
67         response.setContentType("image/jpeg");
68
69         // create the text for the image
70         String[] array = CaptchaProducer.getCaptchaText();
71         //String capText = captchaProducer.createText();
72         //int param1 = (int)capText.charAt(0);
73         //int param2 = (int)capText.charAt(1);
74         Integer result =  Integer.valueOf(array[0]) + Integer.valueOf(array[1]);
75
76         // store the text in the session
77         client.setValue(Constants.KAPTCHA_SESSION_KEY, result.toString());
78         //session.setAttribute(Constants.KAPTCHA_SESSION_KEY, result);
79
80         // create the image with the text
81         BufferedImage bi = captchaProducer.createImage(array[0]+"+"+array[1]+"=?");
82         ServletOutputStream out = response.getOutputStream();
83
84         // write the data out
85         ImageIO.write(bi, "jpg", out);
86         try {
87             out.flush();
88         } finally {
89             out.close();
90         }
91         return null;
92     }
93
94 }
时间: 2024-10-06 01:10:05

利用谷歌 kaptcha 进行验证码生成的相关文章

JSP+Servlet实现验证码生成

主要利用JSP+Servlet实现验证码生成 利用JQuery的ajax技术实现异步更换图片地址 BufferedImage实现验证码图片的生成 Servlet代码: package Register; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.File; import java.io.IOEx

GOOGLE kaptcha 验证码生成插件 servlet/jsp项目中使用步骤

步骤一: 在项目中添加kaptchar的jar包,下载地址:http://code.google.com/p/kaptcha/(建议使用迅雷下载) 步骤二: 配置web.xml,详细配置如下(这里不是所有的配置,这里的参数还有很多可以酌情精简): <!-- 配置验证码插件servlet类 --> <servlet> <servlet-name>kaptcha</servlet-name> <servlet-class> com.google.co

结合springMVC,shiro,redis,kaptcha进行验证码登录完整随笔

自己在做项目的时候总结的配置全部流程,用作记录也希望能帮助大家. 一.进行kaptha的依赖配置 1 <!--验证码生成工具--> 2 <dependency> 3 <groupId>com.github.penggle</groupId> 4 <artifactId>kaptcha</artifactId> 5 <version>2.3.2</version> 6 </dependency> 二.

利用ApiPost一键、快速生成接口文档!女猿也过38节!

对于我们这些程序员和程序媛来讲,最头疼的莫过于写文档. 我们可都是正个八经的理工校草和理工女神,研究github.逛逛csdn.写hello world是才我们的拿手菜,写文档是文科生的事情好不啦?(手动吐哇吐) 今天,教大家一个妙招:利用ApiPost一键.快速生成接口文档! 妈妈再也不用担心自己女孩纸们没有时间过38节啦! 当女程序媛遇到问题,那就不是问题 ApiPost简介: ApiPost是一个支持团队协作,并可直接生成文档的API调试.管理工具.它支持模拟POST.GET.PUT等常见

图形验证码生成方法

图形验证码生成方法@RequestMapping("/verification")public void valicode(HttpServletResponse response, HttpSession session) throws Exception { //利用图片工具生成图片 //第一个参数是生成的验证码,第二个参数是生成的图片 Object[] objs = VerifyUtil.createImage(); String codeKey = "IMAGECOD

随机验证码生成代码 (转)

随机验证码生成代码 package com.zuidaima.core.util; import java.util.Random; public class RandomUtil { public static final String ALLCHAR = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; public static final String LETTERCHAR = "abc

Web---图片验证码生成教程详解-从简单到复杂-从本地到前后台

首先,我们先来看本地如何生成图片验证码的,再来写输出到网页的验证码如何实现. 先来看最简单的-实现的功能是,将一个字符串变成图片写入到文件中 实现代码: package cn.hncu.img; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOE

利用htmlunit登陆带验证码图片的网站

http://htsoft.org/html/y2011/822_using-htmlunit-landing-site-with-captcha-image.html 利用htmlunit登陆带验证码图片的网站 2011年09月15日 ⁄ 编程语言 ⁄ 共 1266字 ⁄ 字号 小 中 大 ⁄ 暂无评论 ⁄ 阅读 7,088 次 以百度统计为例,说明下如何用htmlunit登陆带验证码的网站 //baidu统计登陆代码 try { WebClient client = new WebClien

4、如何利用reportViewer在VS中生成报表

4.如何利用reportViewer在VS中生成报表