zoukankan      html  css  js  c++  java
  • 利用谷歌 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 }
  • 相关阅读:
    long和Long的区别
    C语言的变量的内存分配
    Java蓝桥杯 算法提高 九宫格
    Java实现 蓝桥杯算法提高金明的预算方案
    Java实现 蓝桥杯 算法提高 新建Microsoft world文档
    Java实现 蓝桥杯 算法提高 快乐司机
    Java实现 蓝桥杯 算法提高 三角形
    Java实现 蓝桥杯 算法提高 三角形
    Java实现 蓝桥杯 算法提高 三角形
    Java实现 蓝桥杯 算法提高 三角形
  • 原文地址:https://www.cnblogs.com/pyfreshman/p/5460015.html
Copyright © 2011-2022 走看看