文档章节

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...

Candy_Desire
2014/03/18
0
1
Spring mvc 中使用 kaptcha 验证码

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

凯文加内特
2015/11/20
0
0
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

没有更多内容

加载失败,请刷新页面

加载更多

mybatis学习(1)

JDBC连接方式: 1.底层没有使用连接池,操作数据库需要频繁的创建和关闭连接,消耗资源。 2.写原生的JDBC代码在JAVA中,一旦需要修改SQL的话(比如表增加字段),JAVA需要整体重新编译,不利...

杨健-YJ
17分钟前
0
0
怎么组织文档

可以从以下几个方面考虑组织文档: ☐ 各种分支的界面截图和对应的类及文件 ☐ 框架或类图 ☐ 流程图 ☐ 时序图 ☐ 注意事项

-___-
28分钟前
1
0
分布式之数据库和缓存双写一致性方案解析

引言 为什么写这篇文章? 首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。 但是在更新缓存方面,对于更...

别打我会飞
31分钟前
5
0
我的oracle11G,12c OCM之路

ocm认证感悟 ---------------------- 距离拿到ocm证书已经过了1年的时间,当初拿到证书的心情到现在还记得。其实在每个DBA心里都有一个成为强者的梦想,需要被认可,我也一样。我干过开发,做...

hnairdb
31分钟前
1
1
手动部署kubernetes集群(1.13.1最新版)

一、机器规划 使用五台机子部署k8s集群,规划如下: master节点3台(同时也是etcd节点) node节点2台 ip分配如下: ip:192.168.10.101,主机名:k8s-etcd01 ip:192.168.10.102,主机名:k8s...

人在艹木中
36分钟前
28
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部