天天看點

Kaptcha 在Web頁面生成驗證碼

kaptcha 是一個擴充自 simplecaptcha 的驗證碼庫,友善我們不再寫此類功能。

他的代碼是谷歌托管的,可以從這裡下載下傳http://code.google.com/p/kaptcha/

工程内已經附帶了示例,可以友善開發者使用。

需要的操作就是把kaptcha-2.3.2.jar增加到工程内,然後配置通路圖檔的Servlet:

示例中的配置是:

<servlet-mapping>
 <servlet-name>Kaptcha</servlet-name>
 <url-pattern>/Kaptcha.jpg</url-pattern>
</servlet-mapping>
           

也就是說通路Kaptcha.jpg時其實就是通路了輸出驗證碼圖檔的Servlet。

示例中的KaptchaExample.jsp是調用頁面,這裡介紹了如何驗證使用者輸入是否和驗證碼符合。

但是沒有如何重新整理的操作,重新整理其實很簡單,這裡稍微修改即可。

注意,必須加随機參數,否則讀取緩存就不會有效果。

<%@ 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" οnclick="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>
           

 另外修改後使用的是絕對路徑,在實際開發中應該注意這個問題。

做示例時使用的是kaptcha-2.3.2,見附件。 

請您到ITEYE網站看 java小強 原創,謝謝!

http://cuisuqiang.iteye.com/ !

自建部落格位址:http://www.javacui.com/ ,内容與ITEYE同步!