springMVC-11-验证码

导入依赖

  1. <!--Kaptcha 验证码依赖 前面已导过servlet-api需排除-->
  2. <dependency>
  3. <groupId>com.github.penggle</groupId>
  4. <artifactId>kaptcha</artifactId>
  5. <version>2.3.2</version>
  6. <exclusions>
  7. <exclusion>
  8. <groupId>javax.servlet</groupId>
  9. <artifactId>javax.servlet-api</artifactId>
  10. </exclusion>
  11. </exclusions>
  12. </dependency>
  13. </dependencies>

在web.xml中为com.google.code.kaptcha.servlet.KaptchaServlet注册

  1. <servlet>
  2. <servlet-name>dispatcherServlet</servlet-name>
  3. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  4. <init-param>
  5. <param-name>contextConfigLocation</param-name>
  6. <param-value>classpath:spring-mvc.xml</param-value>
  7. </init-param>
  8. <load-on-startup>1</load-on-startup>
  9. </servlet>
  10. <servlet-mapping>
  11. <servlet-name>dispatcherServlet</servlet-name>
  12. <url-pattern>/</url-pattern>
  13. </servlet-mapping>
  14. <servlet>
  15. <servlet-name>cap</servlet-name>
  16. <servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class>
  17. <init-param>
  18. <!--验证码图片是否需要边框-->
  19. <param-name>kaptcha.border</param-name>
  20. <param-value>no</param-value>
  21. </init-param>
  22. <init-param>
  23. <!--验证码字符位数-->
  24. <param-name>kaptcha.textproducer.char.length</param-name>
  25. <param-value>4</param-value>
  26. </init-param>
  27. <init-param>
  28. <!--字符内容范围-->
  29. <param-name>kaptcha.textproducer.char.string</param-name>
  30. <param-value>abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789</param-value>
  31. </init-param>
  32. <init-param>
  33. <!--验证码底色, 用RGB数值指定-->
  34. <param-name>kaptcha.background.clear.to</param-name>
  35. <param-value>211,229,237</param-value>
  36. </init-param>
  37. <init-param>
  38. <!--把验证码的码值存放在session中, 相当于 session.setAttribute("captcha","验证码")-->
  39. <param-name>kaptcha.session.key</param-name>
  40. <param-value>captcha</param-value>
  41. </init-param>
  42. </servlet>
  43. <!--这个验证码配置就不需要全部的url都配置了-->
  44. <servlet-mapping>
  45. <servlet-name>cap</servlet-name>
  46. <url-pattern>/captcha</url-pattern>
  47. </servlet-mapping>

有了这个配置之后

我们下一步就是把这个验证码请求放到正常jsp界面中

jsp界面

  1. <form action="${pageContext.request.contextPath}/kaptcha">
  2. <img id="captchaImg" src="${pageContext.request.contextPath}/captcha" style="width: 100px" onclick="refresh()">
  3. <input type="text" name="captcha"><br>
  4. <input type="submit" value="提交">
  5. </form>
  6. <script type="text/javascript">
  7. function refresh() {
  8. var i = document.getElementById("captchaImg");
  9. /**
  10. * 有时候发送请求,浏览器会直接读取缓存数据,不会去请求后台数据,比如http://localhost:8080/test/login/index,
  11. * 请求一次之后,再次发送请求的时候,由于url请求没有发生变化,浏览器会自动读取缓存。这一点会给开发带来一些麻烦。
  12. * 添加时间戳参数使得每次请求地址都不一样, 防止浏览器缓存
  13. */
  14. //虽然此处还传入了一个时间戳,但是在control中可以不对这个参数进行获取,control不需要任何改变
  15. i.src = "${pageContext.request.contextPath}/captcha?"+new Date().getTime();
  16. //注意这里没有return false,说明这个点击一方面更改了url,一方面又进行了访问
  17. }
  18. </script>

control中:(通过 realCap.equalsIgnoreCase(captcha) 可以设置不检验大小写)

  1. @RequestMapping(value = "/kaptcha",produces = "text/html;charset=UTF-8")
  2. public String getKaptcha(String captcha,HttpSession session){
  3. //比对
  4. String realCaptcha = (String)session.getAttribute("captcha");
  5. if (captcha.equals(realCaptcha)){
  6. return "验证码通过";
  7. }
  8. return "验证码未通过";
  9. }

结果:出现这个界面

springMVC-11-验证码的更多相关文章

  1. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(11)-验证码实现和底层修改

    原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(11)-验证码实现和底层修改 ASP.NET MVC+EF框架+EasyUI实现权限管系列  (开篇)   (1):框架搭建    ...

  2. springMVC+Java验证码完善注册功能

    这篇文章简单的写了一个java验证码,为之前写过的springMVC注册功能加上验证码,验证码的作用就不多说了,防止机器人程序恶意注册什么的.. 其中User.java,加上了password和cod ...

  3. Java基于springMVC的验证码案例

    ``` Java验证码案例(基于springMVC方式) 验证码工具类 package com.ekyb.common.util; import java.awt.Color; import java ...

  4. SpringMVC -- 梗概--贰

    1.为什么要配置: mvc:annotation-driven 1>在springMVC的处理流程中,有两个重要组件:HandlerMapping和HandlerAdapter 分别负责解析Ha ...

  5. Gradle一分钟实现Spring-MVC

    前提: 1,已安装JDK 2, 有Intellij IDEA 3, 已安装Gradle 一分钟实现步骤: 1,mkdir Spring-MVC;cd Spring-MVC2,gradle init3, ...

  6. Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建(转)

    这篇文章主要讲解使用eclipse对Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建过程,包括里面步骤和里面的配置文件如何配置等等都会详细说明. 如果还没有搭建好环境( ...

  7. Spring学习—生成图片验证码

    今天想学下一下验证码的生成,就之前搭建好的一个spring框架上写了一个demo,我会贴出细节代码,但是spring的配置就不在介绍了.需要完整代码可以联系我! 会从前台页面到后台实现完整的讲解: 1 ...

  8. eclipse下SpringMVC+Maven+Mybatis+MySQL项目搭建

    这篇文章主要讲解使用eclipse对Spirng+SpringMVC+Maven+Mybatis+MySQL项目搭建过程,包括里面步骤和里面的配置文件如何配置等等都会详细说明. 接下来马上进入项目搭建 ...

  9. SpringMVC入门示例

    1.新建一个Java Web项目 2.导入jar包 3.在WEB-INF下面建一个hello.jsp页面. 1 <%@ page language="java" import ...

  10. ASP.NET MVC+EF框架+EasyUI实现权限管理系列(24)-权限组的设计和实现(附源码)(终结)

    ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇)   (1):框架搭建    (2):数据库访问层的设计Demo    (3):面向接口编程   (4 ):业务逻辑层的封装    ...

随机推荐

  1. MEMS传感器作为变革的驱动力

    MEMS sensors as drivers for change 物联网(IoT)正在改变与周围世界互动的方式.每个人,每件事,都是相互联系的,很快就会相互联系.微机电系统(MEMS)设备和传感器 ...

  2. python+selenium基础篇,句柄操作(多个页面切换)

    1.我们打开网页有时候会开出多个页面,导致我们常常定位不到我们需要的元素,这种情况可能就是句柄的因素,如下图所示: 2.句柄切换代码如下: from selenium import webdriver ...

  3. STS或eclipse中导入新项目出现红色感叹号红色叉叉的问题

    maven项目 原因: jar包缺失 没有正确配置Maven仓库 解决: Window->Preferences->Maven->Installations->Add 添加你的 ...

  4. 密码学系列之:feistel cipher

    密码学系列之:feistel cipher 简介 feistel cipher也叫做Luby–Rackoff分组密码,是用来构建分组加密算法的对称结构.它是由德籍密码学家Horst Feistel在I ...

  5. 一、DNS服务器的搭建

    一.介绍 DNS服务:域名解析   将域名解析ip地址 DNS服务器的功能– 正向解析:根据注册的域名查找其对应的IP地址– 反向解析:根据IP地址查找对应的注册域名,不常用 所有完整的域名都要以点结 ...

  6. Vue.js源码解析-Vue初始化流程

    目录 前言 1. 初始化流程概述图.代码流程图 1.1 初始化流程概述 1.2 初始化代码执行流程图 2. 初始化相关代码分析 2.1 initGlobalAPI(Vue) 初始化Vue的全局静态AP ...

  7. 【VBA】延时函数

    延时函数(单位秒),例如延时0.5秒 1 Sub 延时() 2 delay (0.5) 3 Debug.Print "延时0.5秒" 4 End Sub 5 6 Sub delay ...

  8. java并发编程JUC第十二篇:AtomicInteger原子整型

    AtomicInteger 类底层存储一个int值,并提供方法对该int值进行原子操作.AtomicInteger 作为java.util.concurrent.atomic包的一部分,从Java 1 ...

  9. 【贪心】8.29题解-cut

    cut 题目描述 出于某些方面的需求,我们要把一块N×M的木板切成一个个1×1的小方块. 对于一块木板,我们只能从某条横线或者某条竖线(要在方格线上),而且这木板是不均匀的,从不同的线切割下去要花不同 ...

  10. 【进阶之路】深入理解Java虚拟机的类加载机制(长文)

    我们在参加面试的时候,经常被问到一些关于类加载机制的问题,也都会在面试之前准备的时候背好答案,但是我们是否有去深入了解什么是类加载机制呢?这段时间因为一些事情在家看了些书,这次就和大家分享一些关于Ja ...