1.springMVC-servlet.xml配置bean

<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.image.width">160</prop>  <!-- 图片高度 --><prop key="kaptcha.image.height">50</prop>  <prop key="kaptcha.session.key">code</prop>  <!-- 设置字体颜色 --><prop key="kaptcha.textproducer.font.color">red</prop> <!-- 设置字体大小 --> <prop key="kaptcha.textproducer.font.size">35</prop>  <!-- 文字价格 --><prop key="kaptcha.textproducer.char.space">5</prop>  <!-- 设置字体个数 -->  <prop key="kaptcha.textproducer.char.length">6</prop>  <!-- 配置中文--> <!-- <prop key="kaptcha.textproducer.impl">com.google.code.kaptcha.text.impl.ChineseTextProducer</prop> --><!-- 设置字体样式 --> <prop key="kaptcha.textproducer.font.names">彩云,宋体,楷体,微软雅黑</prop>  </props>  </constructor-arg>  </bean>  </property>
</bean> 

2.控制类VerifyCodeController.java

package com.shenqz.controller;  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.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;  import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.Producer; /** * 随机验证码控制层 *  * 使用kaptcha-2.3.2.jar支持 *  * @author shenqz*  */
@Controller
public class VerifyCodeController {  private Producer captchaProducer = null; @Autowired  public void setCaptchaProducer(Producer captchaProducer) {  this.captchaProducer = captchaProducer;  }@RequestMapping("captcha-image.do")  public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {  // 禁止服务器端缓存  response.setDateHeader("Expires", 0);// 设置标准的 HTTP/1.1 no-cache headers.  response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");  // 设置IE扩展 HTTP/1.1 no-cache headers (use addHeader).  response.addHeader("Cache-Control", "post-check=0, pre-check=0");// 设置标准 HTTP/1.0 不缓存图片  response.setHeader("Pragma", "no-cache");//返回一个 jpeg 图片,默认是text/html(输出文档的MIMI类型)  response.setContentType("image/jpeg");//为图片创建文本  String capText = captchaProducer.createText();// 将文本保存在session中,这里就使用包中的静态变量吧
        request.getSession().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();  }  System.out.println("Session 验证码是:" + request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY));  return null;  }  @RequestMapping("checkCode.do")  @ResponseBodypublic String checkCode(HttpServletRequest request)  {  //获取用户输入的验证码  /*String submitCode = WebUtils.getCleanParam(request,"j_code"); */ //从session中获取系统生成的验证码  String kaptchaCode = request.getParameter("kaptchaCode");String kaptchaExpected = (String) request.getSession().getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);   System.out.println("用户输入的验证码是:"+kaptchaCode+",系统生成的验证码:"+kaptchaExpected);  //进行比较  if(!kaptchaCode.isEmpty() && kaptchaCode.equalsIgnoreCase(kaptchaExpected)){  return "true";}else {  return "false";  }  }}  

3.jsp页面index.jsp

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<base href="<%=basePath%>">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
<script type="text/javascript" src="js/jquery-1.8.3.js" ></script>
<script type="text/javascript">  $(function(){  //生成验证码           $('#kaptchaImage').click(function () {    $(this).hide().attr('src', 'captcha-image.do?' + Math.floor(Math.random()*100) ).fadeIn(); });        $('#submitBtn').click(function(){  $.post('checkCode.do?kaptchaCode='+$('#kaptchaCode').val(),function(data){  if (data=='true'){  window.location.href="captchaSuccess.jsp";}else{  alert("验证码错误!");      return false;  }  });  });  });    window.onbeforeunload = function(){    //关闭窗口时自动退出    if(event.clientX>360&&event.clientY<0||event.altKey){       alert(parent.document.location);    }    };          function changeCode() {  //刷新  $('#kaptchaImage').hide().attr('src', 'captcha-image.do?' + Math.floor(Math.random()*100) ).fadeIn();    event.cancelBubble=true;    } </script>
</head><body><table> <tr>  <td>验证码:<input type="text" name="kaptchaCode" id="kaptchaCode" value="" /></td>  <td align="right"><img src="captcha-image.do" height="25px" width="100px" id="kaptchaImage"/> <a href="#" οnclick="changeCode()">看不清?换一张</a>   <input type="button" value="验证" id="submitBtn"/></td></tr>  </table></body>
</html>

4.页面效果

5.相关jar

kaptcha-2.3.2.jar

转载于:https://www.cnblogs.com/shenqz/p/7648869.html

kaptchaCode(验证码)相关推荐

  1. (二十三)admin-boot项目之captcha验证码整合

    (二十三)captcha验证码整合 项目地址:https://gitee.com/springzb/admin-boot 如果觉得不错,给个 star 简介: 这是一个基础的企业级基础后端脚手架项目, ...

  2. 验证码操作相关工具类

    导包 <!-- 谷歌验证码组件 --> <dependency><groupId>com.github.penggle</groupId><art ...

  3. 【Spring Boot组件集成实战】集成Kaptcha谷歌验证码

    更多精彩内容,请访问 Spring Boot组件集成实战专栏 ! 推荐项目:一套基于Spring Boot+Layui的内容管理系统/快速开发脚手架(含完整的开发文档.演示网址等) 文章目录 1. 验 ...

  4. kaptcha 生成验证码并进行校验

    一.验证码校验策略: 生成图片验证码--->存入session---->前台提交验证码---->校验session存储的验证码字段 二.代码类 CaptchaConfig 验证码配置 ...

  5. kaptcha图形验证码组件

    kaptcha 是一个非常实用的验证码生成工具.有了它,你可以生成各种样式的验证码,因为它是可配置的.kaptcha工作的原理是调用 com.google.code.kaptcha.servlet.K ...

  6. easy-captcha实现验证码功能

    1. 添加easy-captcha依赖 <!-- 验证码 --><dependency><groupId>com.github.whvcse</groupId ...

  7. Spring Security自定义登录验证,验证码,动态管理uri访问权限,Thymeleaf,限制密码强度、过期、错误密码锁定超时自动解锁、禁用历史密码、新密码和现密码差异要求编辑距离

    在本教程中,我将指导您如何编写代码,以使用具有基于表单的身份验证的Spring安全API来保护Spring Boot应用程序中的网页.用户详细信息存储在MySQL数据库中,并使用春季JDBC连接到数据 ...

  8. captcha实现验证码功能

    首先在pom.xml中添加hutool包: <dependency><groupId>cn.hutool</groupId><artifactId>hu ...

  9. 权限管理后端篇(四)之java实现验证码

    验证码的作用 防止恶意破解密码.刷票.论坛灌水.刷页. 有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登录尝试,实际上使用验证码是现在很多网站通行的方式(比如招商银行的网上个人银 ...

最新文章

  1. P1034 矩形覆盖
  2. VISUAL STUDIO 2008 破解方法
  3. 使用注解实现ssh整合
  4. 系统架构设计师 - 项目管理 - 挣值管理
  5. 设置 Visual Studio 文件版权信息 - C语言零基础入门教程
  6. sso登陆劫持漏洞(单点登录劫持,低危)
  7. 有一门课不及格的学生(信息学奥赛一本通-T1048)
  8. Django开发密码管理表实例【附源码】
  9. 使用GDAL库中的RPC校正问题
  10. 企业网络信息安全意识宣贯——屏保制作
  11. App云测试服务对比
  12. 什么可以代替pencil?pencil的平替推荐
  13. 【数据库】三级模式两级映射详解
  14. linux 运维工程师必备技能
  15. html5背景图片能加链接,CSS中用背景图片做为超链接的方法
  16. BDL語法知識 变量的初始话
  17. 关于利率的c语言程序,【c语言】储蓄利息的计算
  18. UEM系列(一)用户体验管理介绍
  19. windows的IOCP(Input Output Completion Port,输入输出完成端口)
  20. 可以将TCP BBR算法模块化到低版本内核取代锐速吗

热门文章

  1. iOS SDK: Send E-mail In-App
  2. 第2章数据库服务器的安装与卸载
  3. kaggle为什么总是难以拿到金牌
  4. NoClassDefFoundError: org/apache/flink/streaming/api/datastream/DataStream一例解决
  5. check hierarchy时cadence ic5141崩溃退出
  6. hexo博客完整备份
  7. pyspark连接mysql
  8. linux创建目录记录日志,创建LVM的日志记录
  9. abv asp是静态网页吗_2019年seo动态网页优化“指南针”
  10. curl上传文件linux,在Linux中如何使用curl从一个服务器流式传输文件到另一个服务器(有限的服务器资源)...