热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

SpringMVC项目中使用kaptcha生成验证码

一、简介kaptcha是一个基于SimpleCaptche的验证码开源项目二、使用1、添加jar包依赖如果你使用maven来统一管理jar包,则在工程的pom.xml中添加dependency<

一、简介

kaptcha是一个基于SimpleCaptche的验证码开源项目

二、使用

1、添加jar包依赖

如果你使用maven来统一管理jar包,则在工程的pom.xml中添加dependency

  

com.google.code.kaptcha
kaptcha
2.3.2

2、添加kaptcha的配置文件spring-kaptcha.xml并定义类captchaProducer


xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:cOntext="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd"
default-autowire="byName">

id="captchaProducer"
class="com.google.code.kaptcha.impl.DefaultKaptcha">




no
105,179,90
blue
250
90
90
code
4
宋体,楷体,微软雅黑
0123456789





3、使用注解的方式把定义的Bean注入到生成验证码的Controller中

@Autowired
private Producer captchaProducer;

4、生成验证码

@Controller
@RequestMapping("/corp/portal")
public class CorpPortalController extends BaseController {
/* 企业找回密码验证码 */
     private static final String CORP_FIND_PWD_AUTH_CODE = "corpFindPwdAuthCode"; 
/**
* 生成找回密码的验证码
*/
@RequestMapping("/findPwdAuthCode.htm")
public void findPwdAuthCode(HttpServletRequest request, HttpServletResponse response, HttpSession session)
throws IOException {
/* Expires过时期限值,指浏览器或缓存服务器在该时间点后必须从真正的服务器中获取新的页面信息 */
response.setDateHeader("Expires", 0);
/* 浏览器和缓存服务器都不应该缓存页面信息 */
//response.setHeader("Cache-Control", "no-cache");
/* 请求和响应的信息都不应该被存储在对方的磁盘系统中 */
//response.setHeader("Cache-Control", "no-store");
/* 浏览器和缓存服务器都可以缓存页面信息 */
//response.setHeader("Cache-Control", "public");
/* 对于客户机的每次请求,代理服务器必须向服务器验证缓存是否过时 */
//response.setHeader("Cache-Control", "must-revalidate");
response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
/* 不让浏览器或中间缓存服务器缓存页面,配合Expires 置为0限定更保险 */
response.setHeader("Pragma", "no-cache");
/*
* response.setContentType(MIME)的作用是使客户端浏览器区分不同类型的数据,
* 并根据不同的MIME调用浏览器内部不同的程序嵌入模块来处理相应的数据
*/
response.setContentType("image/jpeg");
/* 生成验证码 */
String capText = captchaProducer.createText();
/* 保存验证码到Session中 */
request.getSession().setAttribute(CORP_FIND_PWD_AUTH_CODE, capText);
/* 使用给定文字创建图片 */
BufferedImage bi = captchaProducer.createImage(capText);
/* 数据写入输出流 */
ServletOutputStream out = response.getOutputStream();
ImageIO.write(bi, "jpg", out);
try {
out.flush();
} finally {
out.close();
}
}









推荐阅读
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文介绍了Perl的测试框架Test::Base,它是一个数据驱动的测试框架,可以自动进行单元测试,省去手工编写测试程序的麻烦。与Test::More完全兼容,使用方法简单。以plural函数为例,展示了Test::Base的使用方法。 ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • HDFS2.x新特性
    一、集群间数据拷贝scp实现两个远程主机之间的文件复制scp-rhello.txtroothadoop103:useratguiguhello.txt推pushscp-rr ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • 本文介绍了深入浅出Linux设备驱动编程的重要性,以及两种加载和删除Linux内核模块的方法。通过一个内核模块的例子,展示了模块的编译和加载过程,并讨论了模块对内核大小的控制。深入理解Linux设备驱动编程对于开发者来说非常重要。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 一次上线事故,30岁+的程序员踩坑经验之谈
    本文主要介绍了一位30岁+的程序员在一次上线事故中踩坑的经验之谈。文章提到了在双十一活动期间,作为一个在线医疗项目,他们进行了优惠折扣活动的升级改造。然而,在上线前的最后一天,由于大量数据请求,导致部分接口出现问题。作者通过部署两台opentsdb来解决问题,但读数据的opentsdb仍然经常假死。作者只能查询最近24小时的数据。这次事故给他带来了很多教训和经验。 ... [详细]
  • 本文讨论了在ASP中创建RazorFunctions.cshtml文件时出现的问题,即ASP.global_asax不存在于命名空间ASP中。文章提供了解决该问题的代码示例,并详细解释了代码中涉及的关键概念,如HttpContext、Request和RouteData等。通过阅读本文,读者可以了解如何解决该问题并理解相关的ASP概念。 ... [详细]
  • SpringMVC工作流程概述
    SpringMVC工作流程概述 ... [详细]
author-avatar
Lovely_Janle
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有