java使用kaptcha 驗證碼組件
(1)kaptcha 是一個驗證碼生成工具。你可以生成各種樣式的驗證碼,因為它是可配置的。kaptcha工作的原理是調 com.google.code.kaptcha.servlet.KaptchaServlet,生成一個圖片。同時將生成的驗證碼字符串放到 HttpSession中。
kaptcha可以方便的配置 :
</li>- kaptcha.border 是否有邊框 默認為true 我們可以自己設置yes,no
- kaptcha.border.color 邊框顏色 默認為Color.BLACK
- kaptcha.border.thickness 邊框粗細度 默認為1
- kaptcha.producer.impl 驗證碼生成器 默認為DefaultKaptcha
- kaptcha.textproducer.impl 驗證碼文本生成器 默認為DefaultTextCreator
- kaptcha.textproducer.char.string 驗證碼文本字符內容范圍 默認為abcde2345678gfynmnpwx
- kaptcha.textproducer.char.length 驗證碼文本字符長度 默認為5
- kaptcha.textproducer.font.names 驗證碼文本字體樣式 默認為new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)
- kaptcha.textproducer.font.size 驗證碼文本字符大小 默認為40
- kaptcha.textproducer.font.color 驗證碼文本字符顏色 默認為Color.BLACK
- kaptcha.textproducer.char.space 驗證碼文本字符間距 默認為2
- kaptcha.noise.impl 驗證碼噪點生成對象 默認為DefaultNoise
- kaptcha.noise.color 驗證碼噪點顏色 默認為Color.BLACK
- kaptcha.obscurificator.impl 驗證碼樣式引擎 默認為WaterRipple
- kaptcha.word.impl 驗證碼文本字符渲染 默認為DefaultWordRenderer
- kaptcha.background.impl 驗證碼背景生成器 默認為DefaultBackground
- kaptcha.background.clear.from 驗證碼背景顏色漸進 默認為Color.LIGHT_GRAY
- kaptcha.background.clear.to 驗證碼背景顏色漸進 默認為Color.WHITE
- kaptcha.image.width 驗證碼圖片寬度 默認為200
- kaptcha.image.height 驗證碼圖片高度 默認為50 </ol>
下面一個簡單的實例:
1.首先去官網下載jar:http://code.google.com/p/kaptcha/
2.建立一個web項目,導入kaptcha-2.3.jar到環境變量中。
3.配置web.xml文件
<servlet> <servlet-name>Kaptcha</servlet-name> <servlet-class> com.google.code.kaptcha.servlet.KaptchaServlet </servlet-class> <init-param> <description> Border around kaptcha. Legal values are yes or no. </description> <param-name>kaptcha.border</param-name> <param-value>no</param-value> </init-param> <init-param> <param-name>kaptcha.textproducer.font.size</param-name> <param-value>45</param-value> </init-param> <init-param> <param-name>kaptcha.textproducer.char.string</param-name> <param-value>abcdefnmnwx235678ABCDEFGHKQRSTX</param-value> </init-param> <init-param> <description> Ending background color. Legal values are r,g,b. </description> <param-name>kaptcha.background.clear.from</param-name> <param-value>196,229,248</param-value> </init-param> <init-param> <description> Ending background color. Legal values are r,g,b. </description> <param-name>kaptcha.background.clear.to</param-name> <param-value>196,229,248</param-value> </init-param> <!-- 設置字體個數 --> <init-param> <param-name>kaptcha.textproducer.char.length</param-name> <param-value>5</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>Kaptcha</servlet-name> <url-pattern>/kaptcha.jpg</url-pattern> </servlet-mapping>
jsp頁面 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<%@ page language="java" contentType="text/html; charset=UTF-8"%>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-">
<title>Kaptcha Example</title>
<mce:script type="text/javascript" src="js/jquery-1.3.2.js" mce_src="js/jquery-1.3.2.js"></mce:script>
</head>
<body>
Enter in the
<a href="/misc/goto?guid=4959556119318052384" mce_href="/misc/goto?guid=4959556119318052384">Kaptcha</a> to see if it
matches what is stored in the session attributes.
<table>
<tr>
<td>
<img src="Kaptcha.jpg" mce_src="Kaptcha.jpg" id="kaptchaImage" />
<mce:script type="text/javascript"><!--
$('#kaptchaImage').click(
function() {
$(this).hide().attr('src',
'Kaptcha.jpg?' + Math.floor(Math.random() * 100)).fadeIn();
})
// --></mce:script>
<br />
單擊換圖片
</td>
<td valign="top">
<form method="POST">
<br>
驗證碼::
<input type="text" name="kaptchafield">
<br />
<input type="submit" name="submit">
</form>
</td>
</tr>
</table>
<br />
<br />
<br />
<br />
<%
String c = (String) session
.getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
String parm = (String) request.getParameter("kaptchafield");
System.out.println(c);
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>
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!