Java驗證碼——kaptcha的使用
阿新 • • 發佈:2019-05-13
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的使用