kaptcha是一个非常实用的验证码生成工具。有了它,你可以生成各种样式的验证码,因为它是可配置的。kaptcha工作的原理是调用com.google.code.kaptcha.servlet.KaptchaServlet,生成一个图片。同时将生成的验证码字符串放到HttpSession中。
使用kaptcha可以方便的配置:
-
验证码的字体
-
验证码字体的大小
-
验证码字体的字体颜色
-
验证码内容的范围(数字,字母,中文汉字!)
-
验证码图片的大小,边框,边框粗细,边框颜色
-
验证码的干扰线(可以自己继承com.google.code.kaptcha.NoiseProducer写一个自定义的干扰线)
-
验证码的样式(鱼眼样式、3D、普通模糊……当然也可以继承com.google.code.kaptcha.GimpyEngine自定义样式)
……
详细信息请看下面的web.xml文件
下面介绍一下用法:
1.首先去官网下载jar:http://code.google.com/p/kaptcha/
2.建立一个web项目,导入kaptcha-2.3.jar到环境变量中。
3.配置web.xml文件
<!--Kaptcha 验证码 --><!--
<servlet>
<servlet-name>kaptcha</servlet-name>
<servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
<init-param>
<param-name>kaptcha.border</param-name>
<param-value>no</param-value>
</init-param>
<init-param>
<param-name>kaptcha.border.color</param-name>
<param-value>105,179,90</param-value>
</init-param>
<init-param>
<param-name>kaptcha.textproducer.font.color</param-name>
<param-value>red</param-value>
</init-param>
<init-param>
<param-name>kaptcha.image.width</param-name>
<param-value>250</param-value>
</init-param>
<init-param>
<param-name>kaptcha.image.height</param-name>
<param-value>90</param-value>
</init-param>
<init-param>
<param-name>kaptcha.textproducer.font.size</param-name>
<param-value>70</param-value>
</init-param>
<init-param>
<param-name>kaptcha.session.key</param-name>
<param-value>code</param-value>
</init-param>
<init-param>
<param-name>kaptcha.textproducer.char.length</param-name>
<param-value>4</param-value>
</init-param>
<init-param>
<param-name>kaptcha.textproducer.font.names</param-name>
<param-value>宋体,楷体,微软雅黑</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>kaptcha</servlet-name>
<url-pattern>/ClinicCountManager/kaptcha.jpg</url-pattern>
</servlet-mapping>
jsp 页面使用
<table>
<tr>
<td><img src="/ClinicCountManager/kaptcha.jpg"></td>
<td valign="top">
<form method="POST">
<br>sec code:<input type="text" name="kaptchafield"><br />
<input type="submit" name="submit">
</form>
</td>
</tr>
</table>
<br /><br /><br /><br />
<%
String c = (String)session.getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
String parm = (String) request.getParameter("kaptchafield");
out.println("Parameter: " + parm + " ? Session Key: " + c + " : ");
if (c != null && parm != null) {
if (c.equals(parm)) {
out.println("<b>true</b>");
} else {
out.println("<b>false</b>");
}
%>
上面的配置在普通jsp环境下面是有效的,如果在spring mvc环境下,则取不到session值,对于sping mvc环境验证码配置如下:
1.不用在web.xml进行相关配置,在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">no</prop>
<prop key="kaptcha.border.color">105,179,90</prop>
<prop key="kaptcha.textproducer.font.color">red</prop>
<prop key="kaptcha.image.width">250</prop>
<prop key="kaptcha.textproducer.font.size">90</prop>
<prop key="kaptcha.image.height">90</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>
新建生成图片控制类
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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("/")
public class CaptchaImageCreateController {
private Producer captchaProducer = null;
@Autowired
public void setCaptchaProducer(Producer captchaProducer) {
this.captchaProducer = captchaProducer;
}
@RequestMapping("/captcha-image")
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
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
request.getSession().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;
}
}
前台调用方式
<div class="chknumber">
<label>验证码:
<input name="kaptcha" type="text" id="kaptcha" maxlength="4" class="chknumber_input" />
</label>
<img src="/ClinicCountManager/captcha-image.do" width="55" height="20" id="kaptchaImage" style="margin-bottom: -3px"/>
<script type="text/javascript">
$(function(){
$('#kaptchaImage').click(function () {//生成验证码
$(this).hide().attr('src', '/ClinicCountManager/captcha-image.do?' + Math.floor(Math.random()*100) ).fadeIn(); })
});
</script>
</div>
取验证码的方式
String code = (String)session.getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);
分享到:
相关推荐
"spring整合kaptcha验证码的实现" 本文将介绍spring整合kaptcha验证码的实现,主要通过讲解kaptcha的简介、开发工具及使用的核心技术、kaptcha两种使用方式、搭骨架、完善配置文件等几个方面,对spring整合kaptcha...
在实际应用中,Kaptcha还可以与其他框架(如Spring MVC)集成,简化验证码的生成和验证流程。例如,可以创建一个过滤器(Filter)来处理请求,自动在每次需要验证码的页面上生成新的验证码,并在用户提交表单时验证...
通过以上介绍,我们可以看到Kaptcha验证码类库是一个实用且灵活的工具,它简化了验证码功能的实现,帮助开发者构建更安全的Web应用。无论你是新手还是经验丰富的开发者,Kaptcha都是一个值得信赖的选择。
在Spring MVC项目中,生成验证码是一项常见的功能,用于防止恶意自动化的机器人操作,例如注册、登录等场景。...通过以上步骤,我们可以轻松地在Spring MVC应用中集成Kaptcha,为用户提供安全可靠的验证码服务。
在Spring MVC中集成Google kaptcha验证码能够有效地防止恶意登录和批量操作。kaptcha是一个高度可配置的验证码生成库,能够创建各种样式的验证码。以下是如何在Spring MVC项目中使用kaptcha的详细步骤: 1. **Maven...
7. **集成到Web应用**:在Spring MVC、Struts2等常见Web框架中,可以方便地将kaptcha集成到登录或其他需要验证码的表单中,以增强安全性。 8. **安全考虑**:kaptcha的目的是抵御自动化工具,例如自动注册、恶意...
kaptcha验证码组件使用简介解析 Kaptcha验证码组件是基于SimpleCaptcha的开源项目,提供了强大的验证码生成和验证功能。该组件的使用非常方便,只需添加jar包依赖和简单的配置就可以使用了。 一、添加jar包依赖 ...
6. **与Spring框架的集成**:在Spring MVC项目中,`kaptcha`可以方便地与Spring的依赖注入机制结合,使验证码服务的实例化和配置更加灵活。 7. **安全性**:`kaptcha`的验证码具有一定的抗机器学习能力,随着机器...
这样,你就成功地在Spring Boot应用中实现了kaptcha验证码功能,提高了安全性。 总结一下,通过以下步骤可以实现kaptcha验证码与Spring Boot的集成: 1. 添加kaptcha依赖。 2. 创建`CaptchaConfig`配置类,定义...
在开发基于MVC架构的应用程序时,高效且稳定的开发环境至关重要。本文将详细介绍如何构建这样一个环境,特别是在网络速度较慢的情况下,如何利用内部资源来优化开发流程。 首先,我们需要准备必要的开发工具和组件...
3. **易于集成**:kaptcha库设计简洁,易于与其他Java Web应用集成,如Spring MVC、Struts等框架,只需添加对应的依赖并配置相关代码即可。 4. **响应式设计**:随着移动设备的普及,kaptcha也支持生成适应不同屏幕...
这个项目组合"Spring MVC + Shiro + Kaptcha + Excel + Hibernate + Mail"提供了一套全面的技术栈,旨在实现这样的目标。以下是对这些技术组件的详细解释: 1. **Spring MVC**:Spring MVC是Spring框架的一个模块,...
6. **兼容性**:kaptcha-2.3.2版本兼容Java Servlet API,因此可以无缝集成到基于Servlet的Web应用中,如Spring MVC或Struts等框架。 7. **国际化支持**:kaptcha允许设置验证码的文字语言,满足不同地区的使用需求...
在Spring MVC应用中,可以将`KaptchaProducer`实例配置为bean,然后在控制器中注入并使用。这种方式使得验证码的生成和验证过程变得更加简洁和模块化。 除了基本的文本验证码,kaptcha还支持生成基于数学问题的...
本教程将深入探讨如何使用Java语言和kaptcha包来实现不同类型的验证码,包括字符与数字混合的验证码、中文验证码以及算术运算式的验证码。 首先,kaptcha是一个强大的开源验证码生成库,它提供了丰富的配置选项,...
7. **与Web框架集成**:Kaptcha可以轻松地与Spring MVC、Struts2等主流Java Web框架集成。在控制器中添加相应的方法处理验证码的生成和验证逻辑。 8. **无障碍性**:对于视力障碍的用户,Kaptcha还可以提供音频...
图形验证码的生成则可以通过`kaptcha`库来实现,这在用户登录验证等场景中非常常见。 此外,文件中还提到了其他一些依赖,可能包括但不限于日志记录、安全控制、邮件发送等功能的组件。每个依赖都有其特定的版本号...
《kaptcha-2.3.2:高效验证码生成器详解》 在网络安全领域,验证码(CAPTCHA)扮演着至关重要的角色,它能...在实际项目中,结合Spring框架或其他MVC框架,可以轻松地将kaptcha集成到应用中,提升网站的整体安全性能。
然后,需要在 spring-mvc.xml 文件中配置 kaptchaProducer 的 bean: ```xml <!-- 使用Kaptcha生成验证码 --> <bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha"> ...
日志记录是系统监控和问题排查的重要工具,我们使用slf4j作为日志接口,并结合log4j或logback实现具体的日志记录,这允许我们在不同环境中灵活切换日志实现。 作业调度任务由Quartz完成,它能够定时执行后台任务,...