kaptcha验证码插件的使用

原创 2017年09月24日 15:49:32

在SpringMVC的HelloWorld基础下,加入jar

修改web.xml,添加一个servlet

		<!-- kaptcha -->
	<servlet>
		<servlet-name>Kaptcha</servlet-name>
		<servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>Kaptcha</servlet-name>
		<url-pattern>/kaptcha.jpg</url-pattern>
	</servlet-mapping>

在ioc容器中加入验证码的Bean

   <!-- 验证码的Bean -->
	<bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha">
		<property name="config">
			<bean class="com.google.code.kaptcha.util.Config">
				<constructor-arg type="java.util.Properties">
					<props>
						<prop key="kaptcha.image.width">100</prop>
						<prop key="kaptcha.image.height">50</prop>
						<prop key="kaptcha.noise.impl">com.google.code.kaptcha.impl.NoNoise</prop>
						<prop key="kaptcha.textproducer.char.string">0123456789abcdefghijklmnopqrstuvwxyz</prop>
						<prop key="kaptcha.textproducer.char.length">4</prop>
					</props>
				</constructor-arg>
			</bean>
		</property>
	</bean>



编写Controller,注意:把上面加入的Bean注入到controller中

package controller;

import org.springframework.stereotype.Controller;
import java.awt.image.BufferedImage;  
import javax.imageio.ImageIO;  
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
import org.springframework.beans.factory.annotation.Autowired;  
import org.springframework.stereotype.Controller;  
import org.springframework.web.bind.annotation.RequestMapping;  
import org.springframework.web.servlet.ModelAndView;  
import com.google.code.kaptcha.Constants;  
import com.google.code.kaptcha.Producer;
@Controller
public class YanZhengMaController {
	
	
	@Autowired  
	private Producer captchaProducer;
	
	//提交表单后验证的逻辑过程
	@RequestMapping("/kaptcha.action")
	public String kaptchaSuccess(String checkCode,HttpServletRequest request){
		//从前台获得验证码框中的数据
		String username=checkCode;
		//从session中获得正确的验证码的值
		String str = (String) request.getSession().getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
		//比较是否相同(相同怎么样,不相同怎么样,我这只是简单的输出,相不相同都跳转的succees.jsp中)
		System.out.println(username+"---------"+str);
		return "success";
	}
	
	
	
	
	
	
	
	 //生成验证码的handler
	 @RequestMapping("/kaptcha.jpg")  
	 //这个requestMapping中的值应该和web.xml中servlet中拦截的url相同,和jsp中表单中显示验证码图片的src相同
	    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {  
	  
	        response.setDateHeader("Expires", 0);  
	        // Set standard HTTP/1.1 no-cache headers.  
	        response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");  
	        // Set IE extended HTTP/1.1 no-cache headers (use addHeader).  
	        response.addHeader("Cache-Control", "post-check=0, pre-check=0");  
	        // Set standard HTTP/1.0 no-cache header.  
	        response.setHeader("Pragma", "no-cache");  
	        // return a jpeg  
	        response.setContentType("image/jpeg");  
	        // create the text for the image  
	        String capText = captchaProducer.createText();  
	        // store the text in the session ,把验证码的值存在session中
	        request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);  
	        // create the image with the text  
	        BufferedImage bi = captchaProducer.createImage(capText);  
	        ServletOutputStream out = response.getOutputStream();  
	        // write the data out  
	        ImageIO.write(bi, "jpg", out);  
	        try {  
	            out.flush();  
	        } finally {  
	            out.close();  
	        }  
	        return null;  
	    }  
	
	
	
	
	

	/**
	 * @return the captchaProducer
	 */
	public Producer getCaptchaProducer() {
		return captchaProducer;
	}

	/**
	 * @param captchaProducer the captchaProducer to set
	 */
	public void setCaptchaProducer(Producer captchaProducer) {
		this.captchaProducer = captchaProducer;
	}
	
	
	

}

编写index.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<!-- 引入JQuery -->
<script type="text/javascript" src="js/jquery-3.2.1.min.js"></script>
<script type="text/javascript">
$(function(){//页面一加载后执行的函数
	
 
	//给刷新按钮绑定事件,url后面加个参数防止缓存
    $('#kaptchaImage').click(function () {
        $("#kaptcha").attr('src', 'kaptcha.jpg?' + Math.floor(Math.random()*100) );
    })
	
	
	
});
</script>
</head>
<body>

	<form action="kaptcha.action" method="post">
    <input type="text" name="checkCode">
    <img src="kaptcha.jpg" id="kaptcha">
    <input type="button"  id="kaptchaImage"  value="刷新">
    <input type="submit" value="提交">
</form>




</body>
</html>

结果




GOOGLE kaptcha 验证码生成插件 servlet/jsp项目中使用步骤

GOOGLE kaptcha 验证码生成插件 servlet/jsp项目中使用步骤
  • responsecool
  • responsecool
  • 2014年09月15日 17:03
  • 2947

关于SSM(Spring+SpringMVC+Mybatis)三大框架集成验证码插件Kaptcha简单方法

关于SSM(Spring+SpringMVC+Mybatis)三大框架集成验证码插件Kaptcha简单方法 Kaptcha是一个基于SimpleCaptcha的验证码开源项目。 官网地址:ht...
  • qq_33624284
  • qq_33624284
  • 2018年01月08日 11:13
  • 88

基于google插件Kaptcha实现图片验证码功能

Kaptcha是谷歌的一个验证码插件,通过引入maven依赖的jar便可以使用到我们的项目中,当然生成验证码也必然要验证是否正确,我的实现是在生成验证码时把验证码存到redis中,验证时通过key从r...
  • u013979547
  • u013979547
  • 2016年12月03日 18:16
  • 2108

SpringMVC+kaptcha实现图形验证码

SpringMVC实现图形验证码
  • tzdwsy
  • tzdwsy
  • 2015年11月08日 16:10
  • 1787

struts2使用kaptcha实现验证码功能

1.下载kaptcha-2.3.2.jar,拷贝到项目中; 2.首先在web.xml文件中添加以下代码(包括struts2过滤器和Kaptcha的相关配置): ...
  • u010710857
  • u010710857
  • 2015年04月15日 16:25
  • 1102

kaptcha 验证码技术

1、添加依赖: com.github.penggle kaptcha 2.3.2 2、配置web.xml Kaptcha ...
  • qq_24949727
  • qq_24949727
  • 2016年12月21日 15:56
  • 1021

springboot 集成kaptcha验证码简单实例

在一个web应用中验证码是一个常见的元素。不管是防止机器人还是爬虫都有一定的作用,我们是自己编写生产验证码的工具类,也可以使用一些比较方便的验证码工具。在网上收集一些资料之后,今天给大家介绍一下kap...
  • u014104286
  • u014104286
  • 2017年04月23日 17:21
  • 6172

Java生成验证码(二) 使用Kaptcha组件生成图片验证码

上篇,Java生成验证码,是用原生态的代码来生成图片验证码的,今天我又学习了一个新的方法,可以生成各种样式的图片验证码,体验效果更好,那就是利用kaptcha组件来实现。 效果图: 1、首先创建w...
  • hanxueyu666
  • hanxueyu666
  • 2016年07月25日 22:04
  • 1448

SpringMVC验证码生成,点击刷新及验证--基于kaptcha

直接看结果实验结果输入正确的验证码输入错误的验证码验证码错误后自动刷新除了数字,验证码的内容可以是多种多样的 下面看一下,数字,字母和中文混合的验证码还有其他的设置会在后面讲解这个验证码不是我写的,...
  • frankcheng5143
  • frankcheng5143
  • 2016年02月03日 18:04
  • 3860

(spring mvc)使用google的kaptcha生成验证码

1、添加kaptcha依赖包: com.github.penggle kaptcha 2.3.2 ...
  • javaloveiphone
  • javaloveiphone
  • 2017年02月10日 10:51
  • 524
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:kaptcha验证码插件的使用
举报原因:
原因补充:

(最多只允许输入30个字)