zoukankan      html  css  js  c++  java
  • work_04_谷歌验证码工具Kaptcha

    1.Kaptcha 简介

    Kaptcha 是一个可高度配置的实用验证码生成工具,可自由配置的选项如:

    • 验证码的字体
    • 验证码字体的大小
    • 验证码字体的字体颜色
    • 验证码内容的范围(数字,字母,中文汉字!)
    • 验证码图片的大小,边框,边框粗细,边框颜色
    • 验证码的干扰线
    • 验证码的样式(鱼眼样式、3D、普通模糊、...)

    maven工程,在pom文件中加入依赖包。(本案例基于ssm)

        <!-- 验证码类 kaptcha -->
        <dependency>
            <groupId>com.github.penggle</groupId>
            <artifactId>kaptcha</artifactId>
            <version>2.3.2</version>
        </dependency>

     web.xml

    <!--谷歌的验证码生成工具-->
        <servlet>
            <servlet-name>kaptcha</servlet-name>
            <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>kaptcha</servlet-name>
            <!--页面上需要使用验证码的地址  就是 url-pattern-->
            <url-pattern>/static/images/kaptcha.jpg</url-pattern>
        </servlet-mapping>
        <!-- 验证码在session中存放时间-->
        <session-config>
            <session-timeout>20</session-timeout>
        </session-config>

     2.使用方法

    <div>
      <input type="text" id="captcha" name="captcha"/>
        <img alt="验证码" src="${ctx}/static/images/kaptcha.jpg" title="点击更换" id="img_captcha" onclick="javascript:refreshCaptcha();" 
          style
    ="height:45px;85px;float:right;margin-right:98px;"/> </div>

     配置验证码的样式,主要的样式可以通过init-param的装载属性,然后在页面上的img标签上面即可直接使用src

    <init-param>
          <param-name>border</param-name>
          <param-value>yes</param-value>
    </init-param>
    kaptcha.border 图片边框,合法值:yes , no yes
    kaptcha.border.color 边框颜色,合法值: r,g,b (and optional alpha) 或者 white,black,blue. black
    kaptcha.image.width 图片宽 200
    kaptcha.image.height 图片高 50
    kaptcha.producer.impl 图片实现类 com.google.code.kaptcha.impl.DefaultKaptcha
    kaptcha.textproducer.impl 文本实现类 com.google.code.kaptcha.text.impl.DefaultTextCreator
    kaptcha.textproducer.char.string 文本集合,验证码值从此集合中获取 abcde2345678gfynmnpwx
    kaptcha.textproducer.char.length 验证码长度 5
    kaptcha.textproducer.font.names 字体 Arial, Courier
    kaptcha.textproducer.font.size 字体大小 40px.
    kaptcha.textproducer.font.color 字体颜色,合法值: r,g,b 或者 white,black,blue. black
    kaptcha.textproducer.char.space 文字间隔 2
    kaptcha.noise.impl 干扰实现类 com.google.code.kaptcha.impl.DefaultNoise
    kaptcha.noise.color 干扰 颜色,合法值: r,g,b 或者 white,black,blue. black
    kaptcha.obscurificator.impl

    图片样式:<br />水纹 com.google.code.kaptcha.impl.WaterRipple <br />

    鱼眼 com.google.code.kaptcha.impl.FishEyeGimpy <br />

    阴影 com.google.code.kaptcha.impl.ShadowGimpy

    com.google.code.kaptcha.impl.WaterRipple
    kaptcha.background.impl 背景实现类 com.google.code.kaptcha.impl.DefaultBackground
    kaptcha.background.clear.from 背景颜色渐变,开始颜色 light grey
    kaptcha.background.clear.to 背景颜色渐变, 结束颜色 white
    kaptcha.word.impl 文字渲染器 com.google.code.kaptcha.text.impl.DefaultWordRenderer
    kaptcha.session.key session key KAPTCHA_SESSION_KEY
    kaptcha.session.date session date KAPTCHA_SESSION_DATE

    3.session验证 验证码

    public class VerifyCaptcha {
        public static boolean verify(HttpServletRequest request) {
            // 从session中取出servlet生成的验证码text值
            String expected = (String) request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);
            // 获取用户页面输入的验证码
            String received = request.getParameter("kaptcha");
            return received != null && received.equalsIgnoreCase(expected);
        }
    }

    kaptcha已经帮我们把验证码的值写入了session中,我们可以通过,获取页面穿过来的参数,自定义判断是否正确。其session的名称是Constants.KAPTCHA_SESSION_KEY


     

     

  • 相关阅读:
    ViScript 1.0 Released
    How to: 修改程序的拖拽行为
    API Hooking 的原理
    小T历险记
    我的酒窝.NET
    MSN Space
    Naive Container 发布1.0版本
    EFT acceptance and functional testing tool for Windows application
    [译]JavaScript:如何判断值的类型
    [译]JavaScript:多行字符串
  • 原文地址:https://www.cnblogs.com/asndxj/p/12746121.html
Copyright © 2011-2022 走看看