文档章节

spring mvc 使用kaptcha生成验证码 maven

秦学强
 秦学强
发布于 2017/07/09 22:03
字数 752
阅读 3
收藏 0
kaptcha maven:
<!-- 验证码 -->
		<dependency>
			<groupId>com.github.axet</groupId>
			<artifactId>kaptcha</artifactId>
			<version>0.0.9</version>
		</dependency>

1.spring 配置文件 applicationContext.xml
[html]  view plain copy
  1. <bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha">  
  2.         <property name="config">  
  3.             <bean class="com.google.code.kaptcha.util.Config">  
  4.                 <constructor-arg>  
  5.                     <props>  
  6.                         <prop key="kaptcha.border">yes</prop>  
  7.                         <prop key="kaptcha.border.color">105,179,90</prop>  
  8.                         <prop key="kaptcha.textproducer.font.color">blue</prop>  
  9.                         <prop key="kaptcha.image.width">125</prop>  
  10.                         <prop key="kaptcha.image.height">45</prop>  
  11.                         <prop key="kaptcha.textproducer.font.size">45</prop>  
  12.                         <prop key="kaptcha.session.key">code</prop>  
  13.                         <prop key="kaptcha.textproducer.char.length">4</prop>  
  14.                         <prop key="kaptcha.textproducer.font.names">宋体,楷体,微软雅黑</prop>  
  15.                     </props>  
  16.                 </constructor-arg>  
  17.             </bean>  
  18.         </property>  
  19.     </bean> 
2. Controller的实现
[java]  view plain copy
  1. package com.vopzoon.app.base.captcha;  
  2.   
  3. import java.awt.image.BufferedImage;  
  4.   
  5. import javax.imageio.ImageIO;  
  6. import javax.servlet.ServletOutputStream;  
  7. import javax.servlet.http.HttpServletRequest;  
  8. import javax.servlet.http.HttpServletResponse;  
  9. import javax.servlet.http.HttpSession;  
  10.   
  11. import org.springframework.beans.factory.annotation.Autowired;  
  12. import org.springframework.stereotype.Controller;  
  13. import org.springframework.web.bind.annotation.RequestMapping;  
  14. import org.springframework.web.servlet.ModelAndView;  
  15.   
  16. import com.google.code.kaptcha.Constants;  
  17. import com.google.code.kaptcha.Producer;  
  18.   
  19. /** 
  20.  * 防止Captcha机器人登陆 
  21.  * @author liuwang 
  22.  * 
  23.  */  
  24. @Controller   
  25. @RequestMapping("/kaptcha/*")  
  26. public class CaptchaController {  
  27.       
  28.     @Autowired  
  29.     private Producer captchaProducer = null;  
  30.   
  31.     @RequestMapping  
  32.     public ModelAndView getKaptchaImage(HttpServletRequest request, HttpServletResponse response) throws Exception {  
  33.         HttpSession session = request.getSession();  
  34.         String code = (String)session.getAttribute(Constants.KAPTCHA_SESSION_KEY);  
  35.         System.out.println("******************验证码是: " + code + "******************");  
  36.           
  37.         response.setDateHeader("Expires"0);  
  38.           
  39.         // Set standard HTTP/1.1 no-cache headers.  
  40.         response.setHeader("Cache-Control""no-store, no-cache, must-revalidate");  
  41.           
  42.         // Set IE extended HTTP/1.1 no-cache headers (use addHeader).  
  43.         response.addHeader("Cache-Control""post-check=0, pre-check=0");  
  44.           
  45.         // Set standard HTTP/1.0 no-cache header.  
  46.         response.setHeader("Pragma""no-cache");  
  47.           
  48.         // return a jpeg  
  49.         response.setContentType("image/jpeg");  
  50.           
  51.         // create the text for the image  
  52.         String capText = captchaProducer.createText();  
  53.           
  54.         // store the text in the session  
  55.         session.setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);  
  56.           
  57.         // create the image with the text  
  58.         BufferedImage bi = captchaProducer.createImage(capText);  
  59.         ServletOutputStream out = response.getOutputStream();  
  60.           
  61.         // write the data out  
  62.         ImageIO.write(bi, "jpg", out);  
  63.         try {  
  64.             out.flush();  
  65.         } finally {  
  66.             out.close();  
  67.         }  
  68.         return null;  
  69.     }  
  70.   
  71. }  


3. JSP代码
[html]  view plain copy
  1. <%@ page language="java" contentType="text/html; charset=UTF-8"  
  2.     pageEncoding="UTF-8"%>  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">  
  7. <script type="text/javascript" src="js/jquery.js"></script>  
  8. <script type="text/javascript" src="js/functions.js"></script>  
  9.   
  10.   
  11. <title>测试页面</title>  
  12. <script type="text/javascript">  
  13. $(function(){         
  14.     $('#kaptchaImage').click(function () {//生成验证码  
  15.      $(this).hide().attr('src', './kaptcha/getKaptchaImage.do?' + Math.floor(Math.random()*100) ).fadeIn();  
  16.      event.cancelBubble=true;  
  17.     });  
  18. });   
  19.   
  20.   
  21. window.onbeforeunload = function(){  
  22.     //关闭窗口时自动退出  
  23.     if(event.clientX>360&&event.clientY<0||event.altKey){     
  24.         alert(parent.document.location);  
  25.     }  
  26. };  
  27.   
  28.   
  29. function changeCode() {  
  30.     $('#kaptchaImage').hide().attr('src', './kaptcha/getKaptchaImage.do?' + Math.floor(Math.random()*100) ).fadeIn();  
  31.     event.cancelBubble=true;  
  32. }  
  33. </script>  
  34. </head>  
  35. <body>  
  36.           
  37. <div class="chknumber">  
  38.       <label>验证码:  
  39.       <input name="kaptcha" type="text" id="kaptcha" maxlength="4" class="chknumber_input" />               
  40.       </label>  
  41.       <br />  
  42.       <img src="./kaptcha/getKaptchaImage.do" id="kaptchaImage"  style="margin-bottom: -3px"/>  
  43.       <a href="#" onclick="changeCode()">看不清?换一张</a>  
  44. </div>  
  45. </body>  
  46. </html>  


4.controller中取得校验码
[java]  view plain copy
  1. String kaptchaExpected = (String) request.getSession().getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);  

5.kaptcha可配置项
[plain]  view plain copy
  1. kaptcha.border  是否有边框  默认为true  我们可以自己设置yes,no  
  2. kaptcha.border.color   边框颜色   默认为Color.BLACK  
  3. kaptcha.border.thickness  边框粗细度  默认为1  
  4. kaptcha.producer.impl   验证码生成器  默认为DefaultKaptcha  
  5. kaptcha.textproducer.impl   验证码文本生成器  默认为DefaultTextCreator  
  6. kaptcha.textproducer.char.string   验证码文本字符内容范围  默认为abcde2345678gfynmnpwx  
  7. kaptcha.textproducer.char.length   验证码文本字符长度  默认为5  
  8. kaptcha.textproducer.font.names    验证码文本字体样式  默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)  
  9. kaptcha.textproducer.font.size   验证码文本字符大小  默认为40  
  10. kaptcha.textproducer.font.color  验证码文本字符颜色  默认为Color.BLACK  
  11. kaptcha.textproducer.char.space  验证码文本字符间距  默认为2  
  12. kaptcha.noise.impl    验证码噪点生成对象  默认为DefaultNoise  
  13. kaptcha.noise.color   验证码噪点颜色   默认为Color.BLACK  
  14. kaptcha.obscurificator.impl   验证码样式引擎  默认为WaterRipple  
  15. kaptcha.word.impl   验证码文本字符渲染   默认为DefaultWordRenderer  
  16. kaptcha.background.impl   验证码背景生成器   默认为DefaultBackground  
  17. kaptcha.background.clear.from   验证码背景颜色渐进   默认为Color.LIGHT_GRAY  
  18. kaptcha.background.clear.to   验证码背景颜色渐进   默认为Color.WHITE  
  19. kaptcha.image.width   验证码图片宽度  默认为200  
  20. kaptcha.image.height  验证码图片高度  默认为50   
  21.  

本文转载自:http://blog.csdn.net/u014481096/article/details/45845853

共有 人打赏支持
秦学强

秦学强

粉丝 0
博文 69
码字总数 0
作品 0
海淀
程序员
Spring mvc 中使用 kaptcha 验证码

生成验证码的方式有很多,个人认为较为灵活方便的是Kaptcha ,他是基于SimpleCaptcha的开源项目。使用Kaptcha 生成验证码十分简单并且参数可以进行自定义。只需添加jar包配置下就可以使用。k...

凯文加内特
2015/11/20
0
0
Spring mvc-kaptcha 验证码

生成验证码的方式有很多,个人认为较为灵活方便的是Kaptcha ,他是基于SimpleCaptcha的开源项目。使用Kaptcha 生成验证码十分简单并且参数可以进行自定义。只需添加jar包配置下就可以使用。k...

Candy_Desire
2014/03/18
0
1
springboot整合kaptcha验证码

前言: 关于kaptcha简介以及spring整合kaptcha,我在另一篇文章中已详细讲解,请参考:spring整合kaptcha验证码。 本文将介绍springboot整合kaptcha的两种方式。 开发工具及技术: 1、idea 2017...

贪挽懒月
05/10
0
0
spring整合kaptcha验证码

kaptcha简介: kaptcha 是一个很有用的验证码生成工具,由于它有许多可配置项,所以用它可以简单快捷的生成各式各样的验证码。 开发工具及使用的核心技术: 1、eclipse 2、mybatis 3、spring ...

贪挽懒月
05/09
0
0
SpringMVC中使用Kaptcha验证码组件生成比较安全的验证码

一 简介 Kaptcha是一个基于SimpleCaptcha的验证码开源项目,在我们的项目中使用Kaptcha组件可以快速生成比较安全的验证码。同时Kaptcha还提供了许多的参数可以让我们自定义生成的验证码样式 ...

pangfc
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

WinDbg

参考来自:http://www.cnit.net.cn/?id=225 SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols ctrl + d to open dump_file Microsoft (R) Windows Debugger Version 6.12.0002.633......

xueyuse0012
27分钟前
2
0
OSChina 周五乱弹 —— 想不想把92年的萝莉退货

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @罗马的王:分享松澤由美的单曲《地球ぎ》 很久没看圣斗士星矢了 《地球ぎ》- 松澤由美 手机党少年们想听歌,请使劲儿戳(这里) @开源中国首...

小小编辑
54分钟前
10
1
springBoot条件配置

本篇介绍下,如何通过springboot的条件配置,控制Bean的创建 介绍下开发环境 JDK版本1.8 springboot版本是1.5.2 开发工具为 intellij idea(2018.2) 开发环境为 15款MacBook Pro 前言 很多时候,...

贺小五
今天
1
0
javascript source map 的使用

之前发现VS.NET会为压缩的js文添加一个与文件名同名的.map文件,一直没有搞懂他是用来做什么的,直接删除掉运行时浏览器又会报错,后来google了一直才真正搞懂了这个小小的map文件背后的巨大...

粒子数反转
昨天
1
0
谈谈如何学Linux和它在如今社会的影响

昨天,还在农耕脑力社会,今天已经人工智能技术、大数据、信息技术的科技社会了,高速开展并迅速浸透到当今科技社会的各个方面,Linux日益成为人们信息时代的到来,更加考验我们对信息的处理程...

linux-tao
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部