Spring MVC 使用kaptcha生成验证码

1.下载kaptcha-2.3.2.jar(或直接通过该文章附件下载)

http://code.google.com/p/kaptcha/downloads/list

kaptcha-2.3.2-jdk14.jar

kaptcha-2.3.2.jar

  1. 向spring.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.textproducer.font.color">blue</prop>

    <prop key="kaptcha.image.width">125</prop>

    <prop key="kaptcha.image.height">45</prop>

    <prop key="kaptcha.textproducer.font.size">40</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>

  2. 编写controller(设置)

    @Controller

    @RequestMapping("/yzm/")

    public class YZMController {

    @Autowired

    private Producer producer;

    @RequestMapping("/yzm")

    public void yzm(HttpServletRequest request, HttpServletResponse response,

    HttpSession session) throws IOException {

    String lastYZM = (String) session.getAttribute("yzm");

    System.out.println("*******************上一次的验证码是" + lastYZM+ "**********************");

    // 设置浏览器不要对数据进行缓存

    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");

    String yzm = producer.createText();

    System.out.println("*******************本次的验证码是" + yzm+ "**********************");

    session.setAttribute("yzm", yzm);

    BufferedImage image = producer.createImage(yzm);

    OutputStream out = response.getOutputStream();

    ImageIO.write(image, "jpg", out);

    try {

    out.flush();

    } finally {

    out.close();

    }

    }

    }

  3. kaptcha可配置选项

    kaptcha.border 是否有边框默认为true 我们可以自己设置yes,no

    kaptcha.border.color 边框颜色默认为Color.BLACK

    kaptcha.border.thickness 边框粗细度默认为1

    kaptcha.producer.impl 验证码生成器默认为DefaultKaptcha

    kaptcha.textproducer.impl 验证码文本生成器默DefaultTextCreator

    kaptcha.textproducer.char.string 验证码文本字符内容范围默认为abcde2345678gfynmnpwx

    kaptcha.textproducer.char.length 验证码文本字符长度默认为5

    kaptcha.textproducer.font.names 验证码文本字体样式默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize)

    kaptcha.textproducer.font.size 验证码文本字符大小默认为40

    kaptcha.textproducer.font.color 验证码文本字符颜色默认为Color.BLACK

    kaptcha.textproducer.char.space 验证码文本字符间距默认为2

    kaptcha.noise.impl 验证码噪点生成对象默认为DefaultNoise

    kaptcha.noise.color 验证码噪点颜色默认为Color.BLACK

    kaptcha.obscurificator.impl 验证码样式引擎默认为WaterRipple

    kaptcha.word.impl 验证码文本字符渲染默认为DefaultWordRenderer

    kaptcha.background.impl 验证码背景生成器默认为DefaultBackground

    kaptcha.background.clear.from 验证码背景颜色渐进默认为Color.LIGHT_GRAY

    kaptcha.background.clear.to 验证码背景颜色渐进默认为Color.WHITE

    kaptcha.image.width 验证码图片宽度默认为200

    kaptcha.image.height 验证码图片高度默认为50

    Constant

    描述

    默认值

    kaptcha.border

    图片边框,合法值:yes , no

    yes

    kaptcha.border.color

    边框颜色,合法值: r,g,b (and optional alpha) 或者 white,black,blue.

    black

    kaptcha.border.thickness

    边框厚度,合法值:>0

    kaptcha.image.width

    图片宽

    kaptcha.image.height

    图片高

    kaptcha.producer.impl

    图片实现类

    com.google.code.kaptcha.impl.DefaultKaptcha

    kaptcha.textproducer.impl

    文本实现类

    com.google.code.kaptcha.text.impl.DefaultTextCreator

    kaptcha.textproducer.char.string

    文本集合,验证码值从此集合中获取

    abcde2345678gfynmnpwx

    kaptcha.textproducer.char.length

    验证码长度

    kaptcha.textproducer.font.names

    字体

    Arial, Courier

    kaptcha.textproducer.font.size

    字体大小

    40px.

    kaptcha.textproducer.font.color

    字体颜色,合法值: r,g,b  或者 white,black,blue.

    black

    kaptcha.textproducer.char.space

    文字间隔

    kaptcha.noise.impl

    干扰实现类

    com.google.code.kaptcha.impl.DefaultNoise

    kaptcha.noise.color

    干扰 颜色,合法值: r,g,b 或者 white,black,blue.

    black

    kaptcha.obscurificator.impl

    图片样式: 
    水纹com.google.code.kaptcha.impl.WaterRipple 
    鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 
    阴影com.google.code.kaptcha.impl.ShadowGimpy

    com.google.code.kaptcha.impl.WaterRipple

    kaptcha.background.impl

    背景实现类

    com.google.code.kaptcha.impl.DefaultBackground

    kaptcha.background.clear.from

    背景颜色渐变,开始颜色

    light grey

    kaptcha.background.clear.to

    背景颜色渐变, 结束颜色

    white

    kaptcha.word.impl

    文字渲染器

    com.google.code.kaptcha.text.impl.DefaultWordRenderer

    kaptcha.session.key

    session key

    KAPTCHA_SESSION_KEY

    kaptcha.session.date

    session date

    KAPTCHA_SESSION_DATE

    SSM(Spring+SpringMVC+mybatis)使用Log4j记录日志

    为了方便调试,一般都会使用日志来输出信息,Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。

    Log4j的配置很简单,而且也是通用的,下面给出一个基本的配置,换到其他项目中也无需做多大的调整,如果想做调整或者想了解Log4j的各种配置,参看我转载的一篇博文,很详细:

    http://blog.csdn.net/zhshulin/article/details/37937365

    下面给出配置文件目录:

    log4j.properties

    为了方便调试,一般都会使用日志来输出信息,Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件,甚至是套接口服务器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。

    Log4j的配置很简单,而且也是通用的,下面给出一个基本的配置,换到其他项目中也无需做多大的调整,如果想做调整或者想了解Log4j的各种配置,参看我转载的一篇博文,很详细:

    http://blog.csdn.net/zhshulin/article/details/37937365

    下面给出配置文件目录:

    log4j.properties#定义LOG输出级别

    log4j.rootLogger=INFO,Console,File

    #定义日志输出目的地为控制台

    log4j.appender.Console=org.apache.log4j.ConsoleAppender

    log4j.appender.Console.Target=System.out

    #可以灵活地指定日志输出格式,下面一行是指定具体的格式

    log4j.appender.Console.layout = org.apache.log4j.PatternLayout

    log4j.appender.Console.layout.ConversionPattern=[%c] - %m%n

    #文件大小到达指定尺寸的时候产生一个新的文件

    log4j.appender.File = org.apache.log4j.RollingFileAppender

    #指定输出目录

    log4j.appender.File.File = logs/ssm.log

    #定义文件最大大小

    log4j.appender.File.MaxFileSize = 10MB

    # 输出所以日志,如果换成DEBUG表示输出DEBUG以上级别日志

    log4j.appender.File.Threshold = ALL

    log4j.appender.File.layout = org.apache.log4j.PatternLayout

    log4j.appender.File.layout.ConversionPattern =[%p] [%d{yyyy-MM-dd HH\:mm\:ss}][%c]%m%n

Spring MVC 使用kaptcha生成验证码的更多相关文章

  1. Spring Boot快速集成kaptcha生成验证码

    Kaptcha是一个非常实用的验证码生成工具,可以通过配置生成多样化的验证码,以图片的形式显示,从而无法进行复制粘贴:下面将详细介绍下Spring Boot快速集成kaptcha生成验证码的过程. 本 ...

  2. 使用kaptcha生成验证码

    原文:http://www.cnblogs.com/xdp-gacl/p/4221848.html kaptcha是一个简单好用的验证码生成工具,通过配置,可以自己定义验证码大小.颜色.显示的字符等等 ...

  3. 转】使用kaptcha生成验证码

    原博文出自于: http://www.cnblogs.com/xdp-gacl/p/4221848.html 感谢! kaptcha是一个简单好用的验证码生成工具,通过配置,可以自己定义验证码大小.颜 ...

  4. Java Web学习总结(22)——使用kaptcha生成验证码

    kaptcha是一个简单好用的验证码生成工具,通过配置,可以自己定义验证码大小.颜色.显示的字符等等.下面就来讲一下如何使用kaptcha生成验证码以及在服务器端取出验证码进行校验. 一.搭建测试环境 ...

  5. Spring mvc框架下使用kaptcha生成验证码

    1.下载jar包并导入. kaptcha-2.3.2.jar 2.spring 配置文件 applicationContext.xml. <bean id="captchaProduc ...

  6. spring mvc 使用kaptcha配置生成验证码实例

    SpringMVC整合kaptcha(验证码功能) 一.依赖 <dependency> <groupId>com.github.penggle</groupId> ...

  7. Sping mvc 环境下使用kaptcha 生成验证码

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

  8. 利用kaptcha生成验证码的详细教程

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

  9. 用kaptcha生成验证码

    1.新建web项目,导入jar包:kaptcha-2.3.jar 2.配置web.xml代码如下: <?xml version="1.0" encoding="UT ...

随机推荐

  1. Centos7 创建Eclipse启动

    Eclipse是一个集成开发环境(IDE),包含一个基工作区和定制环境的可扩展插件系统.大部分使用 Java 编写,Eclipse 可以用来开发应用程序.通过各种插件,Eclipse 也可以用于其他编 ...

  2. 使用像素单位设置 EXCEL 列宽或行高

    在导出 Excel 的时候, 经常要需要给列设置宽度或给行设置高度, 在使用 NPOI 或 EppPlus 等组件进行操作的时候, 列宽和行高的单位都不是像素, 好像是英寸,具体是啥也说不清. 平常在 ...

  3. echarts重绘

    myChart.setOption(option,true); //true重绘

  4. oracle中的序列,可以解决自增各种编号自动增长问题,说一下我的小问题。

    1.生成0001-9999的编码 //在PL/sql中 创建一个序列 Create sequence seq_cdptIncrement by 1 --自增数Start with 1 --开始累加数M ...

  5. ClamAV学习【2】——clamscan入口函数浏览

    就简单给代码加上些注释,方便理解.第一次浏览,应该会有不正确的理解.后面会继续学习修改. 文件:clamscan\clamscan.c 代码如下: nt main(int argc, char **a ...

  6. 解决:sql server无法在C盘下创建database/操作系统错误5(拒绝访问)

    问题: ——无法在C盘的任何位置创建数据库文件 ——在非系统盘的F盘可以创建数据库文件 解决方法1:禁用“以管理员批准模式运行所有管理员" 解决方法2:打开C盘对Users用户的完全控制权限 ...

  7. 【vue】——使用watch 观察路由变化,重新获取内容

    更新:11-29 时隔半年,又重新使用VUE进行开发,有了新方案--beforeRouteLeave 在组件内直接使用,前提是你用了vue-router: beforeRouteLeave (to, ...

  8. 异步 JavaScript - 事件循环

    简评:如果你对 JavaScript 异步的原理感兴趣,这里有一篇不错的介绍. JavaScript 同步代码是如果工作的 在介绍 JavaScript 异步执行之前先来了解一下, JavaScrip ...

  9. D02——C语言基础学PYTHON

    C语言基础学习PYTHON——基础学习D02 20180801内容纲要: 1 字符串的系列操作 2 集合 3  文件的读写 4 字符编码转换 5 小结 6 练习:三级菜单(有彩蛋) 1 字符串的系列操 ...

  10. Java_多线程

    线程(Thread) 1.线程是CPU进行资源调度的最小单位 2.线程是进程实际运行的单位,处理进程中无数的小任务 3.线程共享代码和数据空间 4.一个进程可以并发多个线程,线程之间切换系统开销很小 ...