如何通過Kaptcha在Web頁面生成驗證碼
kaptcha 是一個擴展自 simplecaptcha 的驗證碼庫,方便我們不再寫此類功能。
他的代碼是谷歌托管的,可以從這里下載http://code.google.com/p/kaptcha/
工程內(nèi)已經(jīng)附帶了示例,可以方便開發(fā)者使用。
需要的操作就是把kaptcha-2.3.2.jar增加到工程內(nèi),然后配置訪問圖片的Servlet:
示例中的配置是:
<servlet-mapping> <servlet-name>Kaptcha</servlet-name> <url-pattern>/Kaptcha.jpg</url-pattern> </servlet-mapping>
也就是說訪問Kaptcha.jpg時其實就是訪問了輸出驗證碼圖片的Servlet。
示例中的KaptchaExample.jsp是調(diào)用頁面,這里介紹了如何驗證用戶輸入是否和驗證碼符合。
但是沒有如何刷新的操作,刷新其實很簡單,這里稍微修改即可。
注意,必須加隨機參數(shù),否則讀取緩存就不會有效果。
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Kaptcha Example</title> <script type="text/javascript"> function refImg(){ document.getElementById("Kaptcha").src="<%=basePath%>Kaptcha.jpg?data="+Math.random(); } </script> </head> <body> <table> <tr> <td><img id="Kaptcha" src="<%=basePath%>Kaptcha.jpg" onclick="refImg()"></td> <td valign="top"> <form method="POST"> <br>sec code:<input type="text" name="kaptchafield"><br /> <input type="submit" name="submit"> </form> </td> </tr> </table> <br /> <% String c = (String)session.getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY); String parm = (String) request.getParameter("kaptchafield"); out.println("Parameter: " + parm + " ? Session Key: " + c + " : "); if (c != null && parm != null) { if (c.equals(parm)) { out.println("<b>true</b>"); } else { out.println("<b>false</b>"); } } %> </body> </html>
另外修改后使用的是絕對路徑,在實際開發(fā)中應該注意這個問題。
做示例時使用的是kaptcha-2.3.2,見附件。
以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
解決FontConfiguration.getVersion報空指針異常的問題
這篇文章主要介紹了解決FontConfiguration.getVersion報空指針異常的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06java eclipse 出現(xiàn) xxx cannot be resolved to a type 錯誤解決方法
這篇文章主要介紹了java eclipse 出現(xiàn) xxx cannot be resolved to a type 錯誤解決方法的相關資料,需要的朋友可以參考下2017-03-03SpringBoot使用SensitiveWord實現(xiàn)敏感詞過濾
這篇文章主要為大家詳細介紹了SpringBoot如何使用SensitiveWord實現(xiàn)敏感詞過濾功能,文中示例代碼講解詳細,感興趣的小伙伴可以了解一下2023-01-01詳述IntelliJ IDEA提交代碼前的 Code Analysis 機制(小結)
本篇文章主要介紹了詳述IntelliJ IDEA提交代碼前的 Code Analysis 機制(小結),具有一定的參考價值,感興趣的小伙伴們可以參考一下。2017-11-11Java報錯:FileNotFoundException的解決方案
在Java編程中,FileNotFoundException 是一種常見的受檢異常,通常發(fā)生在試圖打開一個不存在的文件或文件路徑錯誤時,本文將詳細探討FileNotFoundException的成因、解決方案以及預防措施,幫助開發(fā)者理解和避免此類問題,需要的朋友可以參考下2024-06-06Java?I/O?(Input/Output)文件字節(jié)流舉例詳解
Java的輸入輸出流(IO)是用于與外部設備(如文件、網(wǎng)絡連接等)進行數(shù)據(jù)交互的機制,下面這篇文章主要給大家介紹了關于Java?I/O?(Input/Output)文件字節(jié)流的相關資料,需要的朋友可以參考下2024-08-08Java if(boolean)和if(boolean=true)區(qū)別解析
這篇文章主要介紹了Java if(boolean)和if(boolean=true)區(qū)別解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-02-02