谷歌驗證碼kaptcha的簡單使用


前言

瀏覽器驗證碼可解決用戶重復提交表單的問題。

內容: 獲取隨機驗證碼的圖片、獲取隨機驗證碼的內容

第一步:導包

kaptcha

第二部:配置servlet

配置包中的 KaptchaServlet Servlet程序,路徑如圖:

image-20210905224854003

配置操作:在web.xml(web項目配置文件)中加入servlet配置

<servlet>
    <servlet-name>KaptchaServlet</servlet-name>
    <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>KaptchaServlet</servlet-name>
    <url-pattern>/kaptcha.jpg</url-pattern> 
</servlet-mapping>
<!--  命名為 kaptcha.jpg 是為了便於區分,這些代碼包含在web-app標簽中 -->

第三步:使用

1.獲取驗證碼圖片

瀏覽器訪問KaptchaServlet程序路徑即可獲取到驗證碼 每次刷新都有不同驗證碼

示例:

http://localhost:8080/book/kaptcha.jpg
【http://ip:port/工程名/KaptchaServlet程序】

圖片示例:

image-20210905225438435

2.取出驗證碼內容

通過session獲取

在jar包的常量類中可以找到 KAPTCHA_SESSION_KEY 常量值,這個值對應 session 的一個 key 值,這個 session 的 value 值就是驗證碼內容

如圖:

image-20210905225828222

獲取代碼

/* req: HttpServletRequest req */
String token = (String) req.getSession().getAttribute(KAPTCHA_SESSION_KEY); // value就是驗證碼內容
req.getSession().removeAttribute(KAPTCHA_SESSION_KEY); // 刪了

問題及解決

刷新后驗證碼不變

問題瀏覽器:

firefox或ie

問題:

瀏覽器每次刷新都應該獲取到不同的驗證碼,如果刷新后驗證碼不變,考慮是瀏覽器緩存問題。

原因:

瀏覽器為了加快響應速度,可能會保存上次的驗證碼,瀏覽器刷新后會就會定位到上次的驗證碼緩存。

解決:

讓每個驗證碼的參數唯一,例如xcode?d=123xcode?d=32132,這樣瀏覽器就不會重復定位。

可以加個時間戳。

js代碼參考示例:

this.src = "http://localhost:8080/book/kaptcha.jpg?d=" + new Date();

參數


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM