生成验证码的方式有很多,个人认为较为灵活方便的是Kaptcha ,他是基于SimpleCaptcha的开源项目。使用Kaptcha 生成验证码十分简单并且参数可以进行自定义。只需添加jar包配置下就可以使用。kaptcha所有配置都可以通过web.xml来完成,如果项目使用了Spring MVC,那么实现方式会略有不同。
一、Servlet项目
1、添加jar包依赖
maven项目,在pom.xml中添加dependency
1
2
3
4
5
6
|
<!-- kaptcha --> <dependency> <groupId>com.google.code.kaptcha</groupId>
<artifactId>kaptcha</artifactId>
<version> 2.3 . 2 </version>
</dependency> |
非maven项目,在官网下载kaptcha的jar包,然后添加到项目lib库中。
下载地址:http://code.google.com/p/kaptcha/downloads/list
2、配置web.xml
1
2
3
4
5
6
7
8
|
<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> |
注:url-pattern 自定义
kaptcha的参数都有默认值,如果要配置kaptcha,在init-param增加响应的参数即可
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
<servlet> <servlet-name>Kaptcha</servlet-name>
<servlet- class >com.google.code.kaptcha.servlet.KaptchaServlet</servlet- class >
<init-param>
<param-name>kaptcha.image.width</param-name>
<param-value> 200 </param-value>
<description>Width in pixels of the kaptcha image.</description>
</init-param>
<init-param>
<param-name>kaptcha.image.height</param-name>
<param-value> 50 </param-value>
<description>Height in pixels of the kaptcha image.</description>
</init-param>
<init-param>
<param-name>kaptcha.textproducer. char .length</param-name>
<param-value> 4 </param-value>
<description>The number of characters to display.</description>
</init-param>
<init-param>
<param-name>kaptcha.noise.impl</param-name>
<param-value>com.google.code.kaptcha.impl.NoNoise</param-value>
<description>The noise producer.</description>
</init-param>
</servlet> |
3、jsp代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
<script type= "text/javascript" >
$(function(){ //生成验证码
$( '#kaptchaImage' ).click(function () {
$( this ).hide().attr( 'src' , '/code/captcha-image?' + Math.floor(Math.random()* 100 ) ).fadeIn(); });
}); window.onbeforeunload = function(){ //关闭窗口时自动退出
if (event.clientX> 360 &&event.clientY< 0 ||event.altKey){
alert(parent.document.location);
}
}; function changeCode() { //刷新
$( '#kaptchaImage' ).hide().attr( 'src' , '/code/captcha-image?' + Math.floor(Math.random()* 100 ) ).fadeIn();
event.cancelBubble= true ;
} </script> <div class = "form-group" >
<label>验证码 </label>
<input name= "j_code" type= "text" id= "kaptcha" maxlength= "4" class = "form-control" />
<br/>
<img src= "/code/captcha-image" id= "kaptchaImage" style= "margin-bottom: -3px" />
<a href= "#" onclick= "changeCode()" >看不清?换一张</a>
</div> |
二、Spring mvc 中使用kaptcha
1、spring 配置文件 applicationContext.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
<bean id= "captchaProducer" class = "com.google.code.kaptcha.impl.DefaultKaptcha" >
<property name= "config" >
<bean class = "com.google.code.kaptcha.util.Config" >
<constructor-arg>
<props>
<prop key= "kaptcha.border" >yes</prop>
<prop key= "kaptcha.border.color" > 105 , 179 , 90 </prop>
<prop key= "kaptcha.textproducer.font.color" >blue</prop>
<prop key= "kaptcha.image.width" > 125 </prop>
<prop key= "kaptcha.image.height" > 45 </prop>
<prop key= "kaptcha.textproducer.font.size" > 45 </prop>
<prop key= "kaptcha.session.key" >code</prop>
<prop key= "kaptcha.textproducer.char.length" > 4 </prop>
<prop key= "kaptcha.textproducer.font.names" >宋体,楷体,微软雅黑</prop>
</props>
</constructor-arg>
</bean>
</property>
</bean>
|
2、Controller的实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
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 @RequestMapping ( "/code" )
public class CaptchaController {
@Autowired private Producer captchaProducer = null ;
@RequestMapping (value = "captcha-image" )
public ModelAndView getKaptchaImage(HttpServletRequest request, HttpServletResponse response) throws Exception {
HttpSession session = request.getSession();
String code = (String)session.getAttribute(Constants.KAPTCHA_SESSION_KEY);
System.out.println( "验证码: " + code );
response.setDateHeader( "Expires" , 0 );
response.setHeader( "Cache-Control" , "no-store, no-cache, must-revalidate" );
response.addHeader( "Cache-Control" , "post-check=0, pre-check=0" );
response.setHeader( "Pragma" , "no-cache" );
response.setContentType( "image/jpeg" );
String capText = captchaProducer.createText();
session.setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);
BufferedImage bi = captchaProducer.createImage(capText);
ServletOutputStream out = response.getOutputStream();
ImageIO.write(bi, "jpg" , out);
try {
out.flush();
} finally {
out.close();
}
return null ;
}
} |
3、kaptcha可配置项
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
kaptcha.border 是否有边框 默认为 true 我们可以自己设置yes,no
kaptcha.border.color 边框颜色 默认为Color.BLACK kaptcha.border.thickness 边框粗细度 默认为 1 kaptcha.producer.impl 验证码生成器 默认为DefaultKaptcha kaptcha.textproducer.impl 验证码文本生成器 默认为DefaultTextCreator kaptcha.textproducer. char .string 验证码文本字符内容范围 默认为abcde2345678gfynmnpwx
kaptcha.textproducer. char .length 验证码文本字符长度 默认为 5 kaptcha.textproducer.font.names 验证码文本字体样式 默认为 new Font( "Arial" , 1 , fontSize), new Font( "Courier" , 1 , fontSize)
kaptcha.textproducer.font.size 验证码文本字符大小 默认为 40 kaptcha.textproducer.font.color 验证码文本字符颜色 默认为Color.BLACK kaptcha.textproducer. char .space 验证码文本字符间距 默认为 2 kaptcha.noise.impl 验证码噪点生成对象 默认为DefaultNoise kaptcha.noise.color 验证码噪点颜色 默认为Color.BLACK kaptcha.obscurificator.impl 验证码样式引擎 默认为WaterRipple kaptcha.word.impl 验证码文本字符渲染 默认为DefaultWordRenderer kaptcha.background.impl 验证码背景生成器 默认为DefaultBackground kaptcha.background.clear.from 验证码背景颜色渐进 默认为Color.LIGHT_GRAY kaptcha.background.clear.to 验证码背景颜色渐进 默认为Color.WHITE kaptcha.image.width 验证码图片宽度 默认为 200 kaptcha.image.height 验证码图片高度 默认为 50
|
相关推荐
本篇文章主要介绍了spring mvc 使用kaptcha生成验证码实例,详细的介绍了使用Kaptcha 生成验证码的步骤,有兴趣的可以了解一下
kaptcha 是一个非常实用的...有了它,你可以生成各种样式的验证码,因为它是可配置的,下面这篇文章主要给大家介绍了关于Spring MVC中使用Google kaptcha验证码的方法,需要的朋友可以参考借鉴,下面来一起看看吧。
Spring MVC的使用kaptcha生成验证码 patchca整合Spring MVC生成漂亮的验证码 两种验证码的生成例子。
主要介绍了spring整合kaptcha验证码的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
, 在精通Spring MVC4中,我们将会从头开始构建一个有用的Web应用。本书共计10章,分别介绍了快速搭建Spring Web应用、精通MVC结构、URL映射、文件上传与错误处理、创建Restful应用、保护应用、单元测试与验收测试、...
精通Spring MVC 4 中文
本文详细介绍spring MVC的原理和开发心得体会。
编译器版本:IntelliJ IDEA 2020.3.2 x64 JDK版本:java 1.8.0_111 SpringBoot集成Kaptcha验证码生成器快速入门Demo,演示Kaptcha验证码生成器后端代码和前端测试页面
十三、如何给spring3 MVC中的Action做JUnit单元测试? 十四、spring mvc 转发与重定向 十五、spring mvc 处理ajax请求 十六、spring mvc 关于写几个配置文件的说明 十七、spring mvc 如何取得Spring管理的bean 十八...
十三、如何给spring3 MVC中的Action做JUnit单元测试? 十四、spring mvc 转发与重定向 十五、spring mvc 处理ajax请求 十六、spring mvc 关于写几个配置文件的说明 十七、spring mvc 如何取得Spring管理的bean 十八...
Spring MVC所需jar包,包含java开发中 Spring MVC架构中最常用的jar包
Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于...
Spring MVC是Spring框架中用于Web应用快速开发的一个模块,其中的MVC是Model-View-Controller的缩写。作为当今业界最主流的Web开发框架,Spring MVC已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。 ...
Spring MVC是Spring框架中用于Web应用快速开发的一个模块,其中的MVC是Model-View-Controller的缩写。作为当今业界最主流的Web开发框架,Spring MVC已经成为当前最热门的开发技能,同时也广泛用于桌面开发领域。 ...
主要介绍Spring MVC 的使用注解来配置的使用实例
《Spring MVC+MyBatis开发从入门到项目实战》适用于拥有Java基础的软件开发人员学习框架开发,也适用于大中专院校在校师生学习开发技术,以及软件从业实习生提升框架开发技术水平,也可作为高等院校计算机及相关专业...
这篇文章将教你快速地上手使用 Spring 框架. 如果你手上有一本《Spring in Action》, 那么你最好从第三部分"Spring 在 Web 层的应用--建立 Web 层"开始看, 否则那将是一场恶梦! 首先, 我需要在你心里建立起 Spring...
关于构建Sping MVC的Jar包,包括Sping2.5.6和Hibernate3.6.8