如何通过Kaptcha在Web页面生成验证码
程序员文章站
2022-06-22 09:34:36
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,见附件。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。