1. 程式人生 > >Java驗證碼——kaptcha的使用

Java驗證碼——kaptcha的使用

toa RoCE jar包 哪些 -m cap ctu gin black

一.配置kaptcha的jar包

  技術分享圖片

  pom.xml配置:

<-- 目前只有2.3.2版本-->    
<!-- https://mvnrepository.com/artifact/com.github.penggle/kaptcha -->
        <dependency>
            <groupId>com.github.penggle</groupId>
            <artifactId>kaptcha</artifactId>
            <
version>2.3.2</version> </dependency>

二.kaptcha樣式配置

  web.xml:配置kaptcha的servlet及部分樣式

    <servlet>
        <servlet-name>Kaptcha</servlet-name>
        <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
        <!--
定義驗證碼樣式 --> <!-- 是否有邊框 --> <init-param> <param-name>kaptcha.border</param-name> <!-- 沒有邊框 no --> <param-value>no</param-value> </init-param> <!-- 字體顏色 --> <init-param
> <param-name>kaptcha.textproducer.font.color</param-name> <param-value>red</param-value> </init-param> <!-- 圖片寬度 --> <init-param> <param-name>kaptcha.image.width</param-name> <param-value>135</param-value> </init-param> <!-- 使用哪些字符生成驗證碼 --> <init-param> <param-name>kaptcha.textProducer.char.string</param-name> <param-value>ACDEFHKPRSTWX345679</param-value> </init-param> <!-- 圖片高度 --> <init-param> <param-name>kaptcha.image.height</param-name> <param-value>50</param-value> </init-param> <!-- 字體大小 --> <init-param> <param-name>kaptcha.textproducer.font.size</param-name> <param-value>43</param-value> </init-param> <!-- 幹擾線的顏色 --> <init-param> <param-name>kaptcha.noise.color</param-name> <param-value>black</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.font.names</param-name> <param-value>Aria</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>Kaptcha</servlet-name> <url-pattern>/Kaptcha</url-pattern> </servlet-mapping>

  kaptcha詳細參數:

技術分享圖片

三.後端驗證

  從前端接收驗證碼並驗證是否正確:

import javax.servlet.http.HttpServletRequest;

public class CodeUtil {
    public static boolean checkVerifyCode(HttpServletRequest request) {
        String verifyCodeExpected = (String) request.getSession()
                .getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
        String verifyCodeActual = HttpServletRequestUtil.getString(request, "verifyCodeActual");
        if (verifyCodeActual == null || !verifyCodeActual.equals(verifyCodeExpected)) {
            return false;

        }
        return true;
    }
}

·  前端部分js代碼:

.....
<!-- 獲取輸入框驗證碼-->
var verifyCodeActual=$(‘#j_captcha‘).val();
            if(!verifyCodeActual){
                $.toast("請輸出驗證碼");
                return;
            }
<!--通過ajax異步提交-->
            formData.append(‘verifyCodeActual‘,verifyCodeActual);
            $ajax({
                url:registerShopUrl,
                type:‘POST‘,
                data:formData,
                contentType:false,
                processData:false,
                cacche:false,
                success:function(data){
                     if(data.success){
                         $.toast("提交成功");
                     }
                     else{
                         $.toast("提交失敗:"+data.errMsg);
                     }
                     $(‘#captcha_img‘).click();
                }
            })

Java驗證碼——kaptcha的使用