热门标签 | 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();
}
}









推荐阅读
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • Spring – Bean Life Cycle
    Spring – Bean Life Cycle ... [详细]
  • 本文详细介绍了在MySQL中如何高效利用EXPLAIN命令进行查询优化。通过实例解析和步骤说明,文章旨在帮助读者深入理解EXPLAIN命令的工作原理及其在性能调优中的应用,内容通俗易懂且结构清晰,适合各水平的数据库管理员和技术人员参考学习。 ... [详细]
  • C++ 异步编程中获取线程执行结果的方法与技巧及其在前端开发中的应用探讨
    本文探讨了C++异步编程中获取线程执行结果的方法与技巧,并深入分析了这些技术在前端开发中的应用。通过对比不同的异步编程模型,本文详细介绍了如何高效地处理多线程任务,确保程序的稳定性和性能。同时,文章还结合实际案例,展示了这些方法在前端异步编程中的具体实现和优化策略。 ... [详细]
  • 使用Maven JAR插件将单个或多个文件及其依赖项合并为一个可引用的JAR包
    本文介绍了如何利用Maven中的maven-assembly-plugin插件将单个或多个Java文件及其依赖项打包成一个可引用的JAR文件。首先,需要创建一个新的Maven项目,并将待打包的Java文件复制到该项目中。通过配置maven-assembly-plugin,可以实现将所有文件及其依赖项合并为一个独立的JAR包,方便在其他项目中引用和使用。此外,该方法还支持自定义装配描述符,以满足不同场景下的需求。 ... [详细]
  • 在Java Web服务开发中,Apache CXF 和 Axis2 是两个广泛使用的框架。CXF 由于其与 Spring 框架的无缝集成能力,以及更简便的部署方式,成为了许多开发者的首选。本文将详细介绍如何使用 CXF 框架进行 Web 服务的开发,包括环境搭建、服务发布和客户端调用等关键步骤,为开发者提供一个全面的实践指南。 ... [详细]
  • 更新vuex的数据为什么用mutation?
    更新vuex的数据为什么用mutation?,Go语言社区,Golang程序员人脉社 ... [详细]
  • 通过将常用的外部命令集成到VSCode中,可以提高开发效率。本文介绍如何在VSCode中配置和使用自定义的外部命令,从而简化命令执行过程。 ... [详细]
  • 本文详细介绍了Java反射机制的基本概念、获取Class对象的方法、反射的主要功能及其在实际开发中的应用。通过具体示例,帮助读者更好地理解和使用Java反射。 ... [详细]
  • WinMain 函数详解及示例
    本文详细介绍了 WinMain 函数的参数及其用途,并提供了一个具体的示例代码来解析 WinMain 函数的实现。 ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • 单片微机原理P3:80C51外部拓展系统
      外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC。0.IO接口电路概念与存 ... [详细]
  • 本文详细介绍了 PHP 中对象的生命周期、内存管理和魔术方法的使用,包括对象的自动销毁、析构函数的作用以及各种魔术方法的具体应用场景。 ... [详细]
  • 为了确保iOS应用能够安全地访问网站数据,本文介绍了如何在Nginx服务器上轻松配置CertBot以实现SSL证书的自动化管理。通过这一过程,可以确保应用始终使用HTTPS协议,从而提升数据传输的安全性和可靠性。文章详细阐述了配置步骤和常见问题的解决方法,帮助读者快速上手并成功部署SSL证书。 ... [详细]
  • 在本文中,我们将探讨如何在Docker环境中高效地管理和利用数据库。首先,需要安装Docker Desktop以确保本地环境准备就绪。接下来,可以从Docker Hub中选择合适的数据库镜像,并通过简单的命令将其拉取到本地。此外,我们还将介绍如何配置和优化这些数据库容器,以实现最佳性能和安全性。 ... [详细]
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社区 版权所有