目标: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);
今天你学废了吗?
评论区