By default, Kaptcha is very easy to setup and use and the default output produces a captcha that should be fairly hard to bust. The captcha's it produces by default look very similar to the one above. If you would like to change the look of the output, there is several configuration options and the framework is modular so you can write your own morphing code.
下载kaptcha-2.3.2.jar(或直接通过该文章附件下载)
http://code.google.com/p/kaptcha/downloads/list
1.spring 配置文件 applicationContext.xml
- <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>
- package com.vopzoon.app.base.captcha;
- 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;
- /**
- * 防止Captcha机器人登陆
- * @author liuwang
- *
- */
- @Controller
- @RequestMapping("/kaptcha/*")
- public class CaptchaController {
- @Autowired
- private Producer captchaProducer = null;
- @RequestMapping
- 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);
- // Set standard HTTP/1.1 no-cache headers.
- response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
- // Set IE extended HTTP/1.1 no-cache headers (use addHeader).
- response.addHeader("Cache-Control", "post-check=0, pre-check=0");
- // Set standard HTTP/1.0 no-cache header.
- response.setHeader("Pragma", "no-cache");
- // return a jpeg
- response.setContentType("image/jpeg");
- // create the text for the image
- String capText = captchaProducer.createText();
- // store the text in the session
- session.setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);
- // create the image with the text
- BufferedImage bi = captchaProducer.createImage(capText);
- ServletOutputStream out = response.getOutputStream();
- // write the data out
- ImageIO.write(bi, "jpg", out);
- try {
- out.flush();
- } finally {
- out.close();
- }
- return null;
- }
- }
3. JSP代码
- <%@ page language="java" contentType="text/html; charset=UTF-8"
- pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
- <script type="text/javascript" src="js/jquery.js"></script>
- <script type="text/javascript" src="js/functions.js"></script>
- <title>测试页面</title>
- <script type="text/javascript">
- $(function(){
- $('#kaptchaImage').click(function () {//生成验证码
- $(this).hide().attr('src', './kaptcha/getKaptchaImage.do?' + Math.floor(Math.random()*100) ).fadeIn();
- event.cancelBubble=true;
- });
- });
- window.onbeforeunload = function(){
- //关闭窗口时自动退出
- if(event.clientX>360&&event.clientY<0||event.altKey){
- alert(parent.document.location);
- }
- };
- function changeCode() {
- $('#kaptchaImage').hide().attr('src', './kaptcha/getKaptchaImage.do?' + Math.floor(Math.random()*100) ).fadeIn();
- event.cancelBubble=true;
- }
- </script>
- </head>
- <body>
- <div class="chknumber">
- <label>验证码:
- <input name="kaptcha" type="text" id="kaptcha" maxlength="4" class="chknumber_input" />
- </label>
- <br />
- <img src="./kaptcha/getKaptchaImage.do" id="kaptchaImage" style="margin-bottom: -3px"/>
- <a href="#" onclick="changeCode()">看不清?换一张</a>
- </div>
- </body>
- </html>
4.controller中取得校验码
- String kaptchaExpected = (String) request.getSession().getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
5.kaptcha可配置项
- 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
相关推荐
总结来说,使用Kaptcha在Spring MVC中生成验证码主要包括以下几个步骤: 1. 添加Kaptcha的Maven依赖。 2. 在`web.xml`中配置Kaptcha bean,自定义验证码的样式。 3. 创建一个Controller,处理验证码生成和验证的请求...
其中,eclipse是主要的开发工具,mybatis是持久层框架,spring是主要的框架,springmvc是基于spring的mvc框架,而kaptcha是验证码生成工具。 在kaptcha的使用方面,本文主要介绍了两种使用方式:方式一是在spring-...
【谷歌验证码使用工具——kaptcha-2.3.2】是一款基于Java的开源验证码生成库,主要用于网站的身份验证,防止自动化的机器人或者恶意攻击者进行非法操作。kaptcha这个名字是"CAPTCHA"(Completely Automated Public ...
以下是如何在Spring MVC项目中使用kaptcha的详细步骤: 1. **Maven依赖**: 首先,你需要在项目的pom.xml文件中添加kaptcha的依赖。由于官方提供的pom可能存在问题,这里推荐使用阿里云仓库中的版本: ```xml ...
在实际应用中,Kaptcha还可以与其他框架(如Spring MVC)集成,简化验证码的生成和验证流程。例如,可以创建一个过滤器(Filter)来处理请求,自动在每次需要验证码的页面上生成新的验证码,并在用户提交表单时验证...
3. 在需要生成验证码的地方调用Kaptcha的API获取验证码的图像和文本,并将其存储在Session中。 4. 在处理用户提交的表单时,取出Session中的验证码并与用户输入的值进行比较,验证成功后清除Session中的验证码。 ...
四、使用Kaptcha生成验证码 在JSP页面中,可以使用以下代码来生成验证码: ```jsp ${pageContext.request.contextPath}/kaptcha.jpg" /> ``` 五、验证验证码 在Servlet中,可以使用以下代码来验证验证码: ```...
接下来,我们需要创建一个KaptchaProducer实例,这是kaptcha的核心类,用于生成验证码。在Java代码中,你可以这样创建: ```java import com.google.code.kaptcha.impl.DefaultKaptcha; import ...
6. **兼容性**:kaptcha-2.3.2版本兼容Java Servlet API,因此可以无缝集成到基于Servlet的Web应用中,如Spring MVC或Struts等框架。 7. **国际化支持**:kaptcha允许设置验证码的文字语言,满足不同地区的使用需求...
10. **最佳实践**:在实际项目中,除了使用Kaptcha生成验证码,还应考虑定期更换验证码样式,防止被破解。同时,结合其他安全措施,如限流、IP黑名单等,增强网站的安全性。 总的来说,Kaptcha是Java Web开发中一个...
6. **与Spring框架的集成**:在Spring MVC项目中,`kaptcha`可以方便地与Spring的依赖注入机制结合,使验证码服务的实例化和配置更加灵活。 7. **安全性**:`kaptcha`的验证码具有一定的抗机器学习能力,随着机器...
这个项目组合"Spring MVC + Shiro + Kaptcha + Excel + Hibernate + Mail"提供了一套全面的技术栈,旨在实现这样的目标。以下是对这些技术组件的详细解释: 1. **Spring MVC**:Spring MVC是Spring框架的一个模块,...
3. **易于集成**:kaptcha库设计简洁,易于与其他Java Web应用集成,如Spring MVC、Struts等框架,只需添加对应的依赖并配置相关代码即可。 4. **响应式设计**:随着移动设备的普及,kaptcha也支持生成适应不同屏幕...
在Java项目中,引入kaptcha-2.3.jar包后,开发者可以通过调用相应的API来生成验证码。首先,需要创建一个`Kaptcha`实例,这通常是通过`DefaultKaptcha`类实现的。然后,通过`createText()`方法生成随机文本,再通过`...
-- 使用Kaptcha生成验证码 --> <bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha"> <bean class="com.google.code.kaptcha.util.Config"> <prop key="kaptcha.border">yes ...
现在,你可以将这个验证码服务与登录表单结合,当用户尝试登录时,先调用验证码服务生成验证码,然后在提交登录请求时验证验证码。这样,你就成功地在Spring Boot应用中实现了kaptcha验证码功能,提高了安全性。 ...
《kaptcha-2.3.2:高效验证码生成器详解》 在网络安全领域,验证码(CAPTCHA)扮演着至关重要的角色,它能...在实际项目中,结合Spring框架或其他MVC框架,可以轻松地将kaptcha集成到应用中,提升网站的整体安全性能。
8. **kaptcha 0.0.9**:生成图片验证码的库。 9. **quartz-all 1.6.0** 和 **zookeeper 3.4.5**:用于定时任务调度和分布式调度。 10. **Libzkclient 0.3** 和 **Kafkaclient 0.9.0.1**:Kafka客户端,实现消息...
图形验证码的生成则可以通过`kaptcha`库来实现,这在用户登录验证等场景中非常常见。 此外,文件中还提到了其他一些依赖,可能包括但不限于日志记录、安全控制、邮件发送等功能的组件。每个依赖都有其特定的版本号...
此外,我们也考虑了Struts2,但最终选择了Spring MVC,因为其与Spring生态系统的集成更加紧密。 在数据持久化层,我们使用了Hibernate、MyBatis和Spring Data JPA三种不同的ORM框架。Hibernate提供了对象关系映射,...