之前编写验证码时,会通过写JSP代码控制验证码的类型(数字范围、文字类型等)、干扰点等,现在使用kaptcha直接就可以做到对这些的控制。在这里做为记录,以便日后回顾使用。

        kaptcha生成验证码时,需要在web.xml中进行配置,通过配置,省略了Servlet类的编写,在引入的jar包中已实现Servlet。

需要引入的jar包

jcaptcha-1.0.jar

jcaptcha-api-1.0.jar

kaptcha-2.3.2.jar

web.xml

<!-- jcaptcha图片生成 -->
   <servlet>  
        <servlet-name>kaptcha</servlet-name>  
        <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class> 
       <init-param>
            <param-name>kaptcha.p_w_picpath.width</param-name>
            <param-value>70</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.p_w_picpath.height</param-name>
            <param-value>28</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.textproducer.font.size</param-name>
            <param-value>25</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.textproducer.char.length</param-name>
            <param-value>4</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.textproducer.char.space</param-name>
            <param-value>3</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.textproducer.font.color</param-name>
            <param-value>black</param-value>
        </init-param>
        <init-param> 
            <description>The characters that will create the kaptcha. </description> 
            <param-name>kaptcha.textproducer.char.string</param-name> 
            <param-value>1234567890</param-value> 
        </init-param> 
        <init-param>
            <param-name>kaptcha.noise.color</param-name>
            <param-value>white</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.obscurificator.impl</param-name>
            <param-value>com.google.code.kaptcha.impl.ShadowGimpy</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.noise.impl</param-name>
            <param-value>com.google.code.kaptcha.impl.NoNoise</param-value>
        </init-param>
        
        <init-param>
            <param-name>kaptcha.background.clear.from</param-name>
            <param-value>white</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.background.clear.to</param-name>
            <param-value>white</param-value>
        </init-param>
        <init-param>
            <param-name>kaptcha.border.color</param-name>
            <param-value>181,184,200</param-value>
        </init-param>
    
    </servlet>  
    <servlet-mapping>  
        <servlet-name>kaptcha</servlet-name>  
        <url-pattern>/rest/kaptcha.jpg</url-pattern>  
    </servlet-mapping>

html

<input type="text" value="" id="j_captcha" class="input-verification" name="randCode" placeholder=""/>

Java

String kaptchaExpected = (String)((HttpServletRequest) request).getSession()
                .getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);