简单Maven的Web项目之验证码(Kaptcha篇)

一:Kaptcha介绍

简单介绍:

kaptcha 是一个扩展自 simplecaptcha 的验证码库,在 Java 编程中 是一个非常实用的验证码生成工具。我们可以利用这个工具生成各种样式的验证码,因为它是可配置的,我们可以根据需求定制。 
工作原理:

kaptcha 的工作原理是调用 com.google.code.kaptcha.servlet.KaptchaServlet ,生成一个验证码图片,响应到客户端,同时将生成的真是的验证码字符串放到 HttpSession 中。 
使用kaptcha可以方便的配置:

  1. 验证码的字体
  2. 验证码字体的大小
  3. 验证码字体的字体颜色
  4. 验证码内容的范围(数字,字母,中文汉字!)
  5. 验证码图片的大小,边框,边框粗细,边框颜色
  6. 验证码的干扰线(可以自己继承com.google.code.kaptcha.NoiseProducer写一个自定义的干扰线)
  7. 验证码的样式(鱼眼样式、3D、普通模糊……当然也可以继承com.google.code.kaptcha.GimpyEngine自定义样式)

二:使用Kaptcha生成验证码

  1. 首先下载jar包

    下载地址:http://code.google.com/p/kaptcha/downloads/list 
    然后添加到本地Maven库中命令如下可根据自己情况修改对应路径

  2. mvn install:install-file -DgroupId=com.google.code -DartifactId=kaptcha -Dversion=2.3.2 -Dfile=D:\kaptcha-2.3.jar -Dpackaging=jar -DgeneratePom=true

  3.     <dependency>  
            <groupId>com.google.code</groupId>  
            <artifactId>kaptcha</artifactId>  
            <version>2.3.2</version>  
        </dependency>

    <!-- 验证码 -->
    <bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha">
    <property name="config">
    <bean class="com.google.code.kaptcha.util.Config">
    <constructor-arg>
    <props>
    <prop key="kaptcha.border">yes</prop>
    <prop key="kaptcha.border.color">105,179,90</prop>
    <prop key="kaptcha.textproducer.font.color">blue</prop>
    <prop key="kaptcha.image.width">105</prop>
    <prop key="kaptcha.image.height">40</prop>
    <prop key="kaptcha.textproducer.font.size">30</prop>
    <prop key="kaptcha.session.key">s_kaptcha_code</prop>
    <prop key="kaptcha.textproducer.char.space">2</prop>
    <prop key="kaptcha.textproducer.char.length">5</prop>
    <prop key="kaptcha.textproducer.font.names">宋体,楷体,微软雅黑</prop>
    </props>
    </constructor-arg>
    </bean>
    </property>
    </bean>
  4. @Autowired
    private com.google.code.kaptcha.impl.DefaultKaptcha captchaProducer; 

  5. @RequestMapping(value = "/login/captcha.jpg")
    public ModelAndView getCaptcha(HttpServletRequest request, HttpServletResponse response)  throws Exception {
    response.setDateHeader("Expires", 0);  
            response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");  
            response.addHeader("Cache-Control", "post-check=0, pre-check=0");  
            response.setHeader("Pragma", "no-cache");  
            response.setContentType("image/jpeg");  
             
            String capText = captchaProducer.createText();  
            request.getSession().setAttribute(Consts.S_KaptchaCode, capText);  
             
            BufferedImage bi = captchaProducer.createImage(capText);  
            ServletOutputStream out = response.getOutputStream();  
            ImageIO.write(bi, "jpg", out);  
            try {  
                out.flush();
            } finally {  
                out.close();  
            }  
            return null; 
    }



猜你喜欢

转载自blog.csdn.net/qq_24978413/article/details/73106922