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

 更新时间:2020年10月17日 11:12:18   作者:cuisuqiang  
这篇文章主要介绍了如何通过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" 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,见附件。

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

相关文章

  • 解决FontConfiguration.getVersion报空指针异常的问题

    解决FontConfiguration.getVersion报空指针异常的问题

    这篇文章主要介绍了解决FontConfiguration.getVersion报空指针异常的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-06-06
  • java eclipse 出现 xxx cannot be resolved to a type 错误解决方法

    java eclipse 出现 xxx cannot be resolved to a type 错误解决方法

    这篇文章主要介绍了java eclipse 出现 xxx cannot be resolved to a type 错误解决方法的相关资料,需要的朋友可以参考下
    2017-03-03
  • SpringBoot整合Netty心跳机制过程详解

    SpringBoot整合Netty心跳机制过程详解

    这篇文章主要介绍了SpringBoot整合Netty心跳机制过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • SpringBoot使用SensitiveWord实现敏感词过滤

    SpringBoot使用SensitiveWord实现敏感词过滤

    这篇文章主要为大家详细介绍了SpringBoot如何使用SensitiveWord实现敏感词过滤功能,文中示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-01-01
  • 详述IntelliJ IDEA提交代码前的 Code Analysis 机制(小结)

    详述IntelliJ IDEA提交代码前的 Code Analysis 机制(小结)

    本篇文章主要介绍了详述IntelliJ IDEA提交代码前的 Code Analysis 机制(小结),具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-11-11
  • Java报错:FileNotFoundException的解决方案

    Java报错:FileNotFoundException的解决方案

    在Java编程中,FileNotFoundException 是一种常见的受检异常,通常发生在试图打开一个不存在的文件或文件路径错误时,本文将详细探讨FileNotFoundException的成因、解决方案以及预防措施,帮助开发者理解和避免此类问题,需要的朋友可以参考下
    2024-06-06
  • Java I/O (Input/Output)文件字节流举例详解

    Java I/O (Input/Output)文件字节流举例详解

    Java的输入输出流(IO)是用于与外部设备(如文件、网络连接等)进行数据交互的机制,下面这篇文章主要给大家介绍了关于Java I/O (Input/Output)文件字节流的相关资料,需要的朋友可以参考下
    2024-08-08
  • Maven打包跳过测试的三种方法

    Maven打包跳过测试的三种方法

    这篇文章主要介绍了Maven打包跳过测试的三种方法,帮助大家更好的理解和使用maven,感兴趣的朋友可以了解下
    2020-11-11
  • Java基础之二叉搜索树的基本操作

    Java基础之二叉搜索树的基本操作

    发现许多小伙伴还不清楚Java二叉搜索树的基本操作,今天特地整理了这篇文章,文中有非常详细的代码示例,对正在学习Java的小伙伴很有帮助,需要的朋友可以参考下
    2021-05-05
  • Java if(boolean)和if(boolean=true)区别解析

    Java if(boolean)和if(boolean=true)区别解析

    这篇文章主要介绍了Java if(boolean)和if(boolean=true)区别解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02

最新评论