专栏首页技术开发——你我他SpringBoot实现验证码--kaptcha

SpringBoot实现验证码--kaptcha

目标:SpringBoot实现验证码--kaptcha 工具:IDEA--2020.1 学习目标:SpringBoot实现验证码--kaptcha 本次学习的工程比较简单,不放置工程!

添加kaptcha--验证码的依赖

    <!--验证码的实现-->
    <dependency>
        <groupId>com.github.penggle</groupId>
        <artifactId>kaptcha</artifactId>
        <version>2.3.2</version>
    </dependency>

编写验证码配置类

package com.xmaven.config;

import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.servlet.KaptchaServlet;
import org.springframework.boot.web.servlet.ServletRegistrationBean;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;

@Component
public class KaptchaConfig {
    @Bean
    public ServletRegistrationBean<KaptchaServlet> kaptchaServlet() {
        //设置验证码的路径
        ServletRegistrationBean<KaptchaServlet> registrationBean = new ServletRegistrationBean<>(new KaptchaServlet(), "/captcha/kaptcha.jpg");


        registrationBean.addInitParameter(Constants.KAPTCHA_SESSION_CONFIG_KEY,
                Constants.KAPTCHA_SESSION_KEY);
        //宽度
        registrationBean.addInitParameter(Constants.KAPTCHA_IMAGE_WIDTH,"250");
        //高度
        registrationBean.addInitParameter(Constants.KAPTCHA_IMAGE_HEIGHT,"60");
        //字体大小
        registrationBean.addInitParameter(Constants.KAPTCHA_TEXTPRODUCER_FONT_SIZE,"50");
        //registrationBean.addInitParameter(Constants.KAPTCHA_BORDER_THICKNESS,"1"); //边框

        //无边框
        registrationBean.addInitParameter(Constants.KAPTCHA_BORDER,"no");
        //文字颜色
        registrationBean.addInitParameter(Constants.KAPTCHA_TEXTPRODUCER_FONT_COLOR, "blue");

        //长度
        registrationBean.addInitParameter(Constants.KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "6");

        //字符间距
        registrationBean.addInitParameter(Constants.KAPTCHA_TEXTPRODUCER_CHAR_SPACE, "6");


        //可以设置很多属性,具体看com.google.code.kaptcha.Constants
//      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
        return registrationBean;
    }
}

启动工程,请求这个验证码的路径(一般是你的工程路径加上/captcha/kaptcha.jpg)

以我的工程为例:http://localhost:8080/ssms/captcha/kaptcha.jpg

如何请求到验证码里面的内容呢!

表单提交然后

HttpServletRequest req=(HttpServletRequest) request;
String code2 = (String)req.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);
System.out.println("系统生成的验证码是:"+code2);

今天你学废了吗?

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • java基础--运算符介绍

    背雷管的小青年
  • Sentinel接入SpringCloud(一)

    目标:手动配置限流资源保护 工具:IDEA--2020.1、Nacos、本地服务器(作为测试) 学习目标:手动配置限流资源保护 本次学习的工程下载链接放到文本最...

    背雷管的小青年
  • Spring Boot简单定时任务

    目标:实现springboot的简单的定时任务 工具:IDEA--2020.1 学习目标:实现springboot的简单的定时任务 本次学习的工程下载链接放到文...

    背雷管的小青年
  • 【资料学习】我到底拿什么说服老板采购Tesla V100!

    本文仅献给需要做GPU超算方案和预算的科研前线的人 同类介绍Tesla V100的技术文章很多,我们只highlight关键几个知识点。 2017年5月GTC ...

    GPUS Lady
  • 浅谈数据中心网络泛洪技术

    导语 泛洪在数据中心网络中是一种常见现象,很多时候泛洪转发都是良性的,对网络无影响。以太网标准对网络设备的要求也是允许流量有短时间的泛洪,尤其是框式设备是不可避...

    企鹅号小编
  • 独家: iOS是如何收集用户的地理信息的

    从央视的新闻里我们了解到这个故事应该从三年前讲起: 2011年两名英国的工程师发现苹果手机暗藏的一个文件可以记录苹果手机用户曾经去过的地理位置,并通过隐藏文件...

    FB客服
  • JGR专刊 |桥接天气和气候预报之间的鸿沟

    https://agupubs.onlinelibrary.wiley.com/doi/toc/10.1002/(ISSN)2169-8996.BRIDGE1

    气象学家
  • Chrome OS 双系统安装

    上一篇post [虚拟机中安装Chrome OS(cloudready)]我实践了在虚拟机中安装ChromeOS,从中得出启发,成功的在我的一台PC上装上了Wi...

    gigiwangs
  • 怎么投简历才有效?

    4. 熟人引荐:由既了解在招聘岗位、招聘老板,又了解你本人的能力人品的熟人,在认定你和开发职位非常匹配的情况下,将你推荐给招聘老板;

    叶锦鲤
  • Android硬件加速(二)-RenderThread与OpenGL GPU渲染

    Android4.0之后,系统默认开启硬件加速来渲染视图,之前,理解Android硬件加速的小白文简单的讲述了硬件加速的简单模型,不过主要针对前半阶段,并没怎么...

    看书的小蜗牛

扫码关注云+社区

领取腾讯云代金券