生成验证码的方式有很多,个人认为较为灵活方便的是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整合kaptcha验证码的实现,主要通过讲解kaptcha的简介、开发工具及使用的核心技术、kaptcha两种使用方式、搭骨架、完善配置文件等几个方面,对spring整合kaptcha验证码的实现进行了详细的介绍。...
在Spring MVC中集成Google kaptcha验证码能够有效地防止恶意登录和批量操作。kaptcha是一个高度可配置的验证码生成库,能够创建各种样式的验证码。以下是如何在Spring MVC项目中使用kaptcha的详细步骤: 1. **Maven...
本文将详细讲解如何使用Kaptcha库在Spring MVC框架中配置并实现验证码生成。 Kaptcha是一个轻量级的Java验证码生成库,它提供了多种定制选项,包括字体、颜色、噪声等,使得生成的验证码具有较高的可读性同时又能...
在实际应用中,Kaptcha还可以与其他框架(如Spring MVC)集成,简化验证码的生成和验证流程。例如,可以创建一个过滤器(Filter)来处理请求,自动在每次需要验证码的页面上生成新的验证码,并在用户提交表单时验证...
通过以上介绍,我们可以看到Kaptcha验证码类库是一个实用且灵活的工具,它简化了验证码功能的实现,帮助开发者构建更安全的Web应用。无论你是新手还是经验丰富的开发者,Kaptcha都是一个值得信赖的选择。
7. **集成到Web应用**:在Spring MVC、Struts2等常见Web框架中,可以方便地将kaptcha集成到登录或其他需要验证码的表单中,以增强安全性。 8. **安全考虑**:kaptcha的目的是抵御自动化工具,例如自动注册、恶意...
kaptcha验证码组件使用简介解析 Kaptcha验证码组件是基于SimpleCaptcha的开源项目,提供了强大的验证码生成和验证功能。该组件的使用非常方便,只需添加jar包依赖和简单的配置就可以使用了。 一、添加jar包依赖 ...
这个项目组合"Spring MVC + Shiro + Kaptcha + Excel + Hibernate + Mail"提供了一套全面的技术栈,旨在实现这样的目标。以下是对这些技术组件的详细解释: 1. **Spring MVC**:Spring MVC是Spring框架的一个模块,...
6. **与Spring框架的集成**:在Spring MVC项目中,`kaptcha`可以方便地与Spring的依赖注入机制结合,使验证码服务的实例化和配置更加灵活。 7. **安全性**:`kaptcha`的验证码具有一定的抗机器学习能力,随着机器...
在Spring MVC应用中,可以将`KaptchaProducer`实例配置为bean,然后在控制器中注入并使用。这种方式使得验证码的生成和验证过程变得更加简洁和模块化。 除了基本的文本验证码,kaptcha还支持生成基于数学问题的...
3. **易于集成**:kaptcha库设计简洁,易于与其他Java Web应用集成,如Spring MVC、Struts等框架,只需添加对应的依赖并配置相关代码即可。 4. **响应式设计**:随着移动设备的普及,kaptcha也支持生成适应不同屏幕...
6. **兼容性**:kaptcha-2.3.2版本兼容Java Servlet API,因此可以无缝集成到基于Servlet的Web应用中,如Spring MVC或Struts等框架。 7. **国际化支持**:kaptcha允许设置验证码的文字语言,满足不同地区的使用需求...
接下来,我们将介绍如何在Spring Boot项目中引入和配置kaptcha验证码。 首先,我们需要添加kaptcha库作为项目的依赖。如果你使用Maven,可以在`pom.xml`文件中添加以下依赖: ```xml <groupId>...
要在 SpringMVC 项目中使用 kaptcha,需要首先在 pom.xml 文件中添加 kaptcha 的依赖项: ```xml <groupId>com.google.code</groupId> <artifactId>kaptcha <version>2.3.2 ``` 然后,需要在 spring-mvc.xml ...
本教程将深入探讨如何使用Java语言和kaptcha包来实现不同类型的验证码,包括字符与数字混合的验证码、中文验证码以及算术运算式的验证码。 首先,kaptcha是一个强大的开源验证码生成库,它提供了丰富的配置选项,...
7. **与Web框架集成**:Kaptcha可以轻松地与Spring MVC、Struts2等主流Java Web框架集成。在控制器中添加相应的方法处理验证码的生成和验证逻辑。 8. **无障碍性**:对于视力障碍的用户,Kaptcha还可以提供音频...
《kaptcha-2.3.2:高效验证码生成器详解》 在网络安全领域,验证码(CAPTCHA)扮演着至关重要的角色,它能...在实际项目中,结合Spring框架或其他MVC框架,可以轻松地将kaptcha集成到应用中,提升网站的整体安全性能。
1. **Spring Core 4.0.9 RELEASE** 和 **Spring MVC 4.0.9 RELEASE**:Spring框架提供了依赖注入和面向切面编程,Spring MVC则是Spring框架中的Web MVC模块,用于构建Web应用。 2. **Dubbo 2.5.3**:阿里巴巴出品的...
图形验证码的生成则可以通过`kaptcha`库来实现,这在用户登录验证等场景中非常常见。 此外,文件中还提到了其他一些依赖,可能包括但不限于日志记录、安全控制、邮件发送等功能的组件。每个依赖都有其特定的版本号...
此外,我们也考虑了Struts2,但最终选择了Spring MVC,因为其与Spring生态系统的集成更加紧密。 在数据持久化层,我们使用了Hibernate、MyBatis和Spring Data JPA三种不同的ORM框架。Hibernate提供了对象关系映射,...