文档章节

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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

阿里云API网关使用教程

API 网关(API Gateway)提供高性能、高可用的 API 托管服务,帮助用户对外开放其部署在 ECS、容器服务等阿里云产品上的应用,提供完整的 API 发布、管理、维护生命周期管理。用户只需进行简...

mcy0425
33分钟前
4
0
解决远程登陆误按ctrl+s锁屏假死恢复

使用putty时,偶尔发生屏幕假死,不能输入等情况。 后来发现,只要数据ctrl+s,就会假死;输入ctrl+q就可以恢复过来。 很多刚从windows转移到linux上来工作的朋友,在用vi/vim编辑文件时,常常...

HJCui
36分钟前
0
0
@Transactional

事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种方式。编程式事务指的是通过编码方式实现事务;声明式事务基于...

asdf08442a
40分钟前
2
0
widows下强制解除8080端口占用问题

使用win+R打开命令窗口 输入以下命令查看哪个任务占用了8080端口 netstat -ano |findstr "8080" 然后通过任务id强制关闭占用该端口的进程 tskill 10044 // 自己的试情况而定,这个ID是LISTE...

_Artisan
49分钟前
2
0
productFlavors简单实用

最近项目中,不同环境需要配置的参数越来越多,为了减少修改代码次数。研究了一下productFlavors的使用方式,总结如下 1. as3.0以上版本使用productFlavors时需要指定一个flavorDimensions,...

火云
52分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部