欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

如何通过Kaptcha在Web页面生成验证码

程序员文章站 2022-03-11 14:46:31
kaptcha 是一个扩展自 simplecaptcha 的验证码库,方便我们不再写此类功能。他的代码是谷歌托管的,可以从这里下载工程内已经附带了示例,可以方便开发者使用。需要的操作就是把kaptch...

kaptcha 是一个扩展自 simplecaptcha 的验证码库,方便我们不再写此类功能。

他的代码是谷歌托管的,可以从这里下载

工程内已经附带了示例,可以方便开发者使用。

需要的操作就是把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" 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>

另外修改后使用的是绝对路径,在实际开发中应该注意这个问题。

做示例时使用的是kaptcha-2.3.2,见附件。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。