基于Spring+SpringMVC+MyBatis开发书评网Kaptcha组件配置
Posted 被雨遗忘的夏天
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了基于Spring+SpringMVC+MyBatis开发书评网Kaptcha组件配置相关的知识,希望对你有一定的参考价值。
目录
概要
重新复习了一波,先介绍Kaptcha组件配置,因为用户注册登录是基于这个功能实现的
1、 效果图
2、 pom.xml
<!-- Kaptcha验证码组件 -->
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version>
</dependency>
3、 applicationContext.xml
<!-- 配置Kaptcha 所生成的图品样式 -->
<!-- DefaultKaptcha 对象完成验证码的生成 -->
<bean id="kaptchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha">
<property name="config">
<!-- 内嵌一个bean -->
<bean class="com.google.code.kaptcha.util.Config">
<!-- constructor-arg: 构造参数-->
<constructor-arg>
<props>
<!-- 验证码图片不生成边框 -->
<prop key="kaptcha.border">no</prop>
<!-- 验证码图片宽度为120像素 -->
<prop key="kaptcha.image.width">120</prop>
<!-- 验证码图片字体颜色为蓝色 -->
<prop key="kaptcha.textproducer.font.color">blue</prop>
<!-- 每个字符最大占用40像素 -->
<prop key="kaptcha.textproducer.font.size">40</prop>
<!-- 验证码包含4个字符 -->
<prop key="kaptcha.textproducer.char.length">4</prop>
</props>
</constructor-arg>
</bean>
</property>
</bean>
4、 KaptchaController
package com.imooc.reader.controller;
import com.google.code.kaptcha.Producer;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import javax.annotation.Resource;
import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.awt.image.BufferedImage;
import java.io.IOException;
/**
* @ClassName KaptchaController
* @Description 验证码组件控制器
* @date 2021/5/10 21:37
*/
@Controller
public class KaptchaController {
// 属性名kaptchaProducer 需要和applicationContext中定义的一致
// Producer是一个接口
@Resource
private Producer kaptchaProducer;
// 生成验证码图片
// 包含两个原生对象 request和 response
// SpringMVC 依然依赖于J2EE的web模块(Servlet)
@GetMapping(value = "/verify_code")
public void createVerifyCode(HttpServletRequest request , HttpServletResponse response) throws IOException {
// 1、 前期配置
// 过期时间,代表响应立即过期
response.setDateHeader("Expires",0);
// 缓存控制,清空浏览器缓存,不缓存任何图片数据
// 因为要求每一次都是全新的
response.setHeader("Cache-Control" , "no-store,no-cache,must-revalidate");
// 兼容性考虑
response.setHeader("Cache-Control" , "post-check=0,pre-check=0");
response.setHeader("Pragma" , "no-cache");
// 返回前端图片样式
response.setContentType("image/png");
// 2、 生成
// 生成验证码字符文本
String verifyCode = kaptchaProducer.createText();
// 3、 保存
// 保存字符码到Session中
request.getSession().setAttribute("kaptchaVerifyCode",verifyCode);
// 打印出来,方便调试
System.out.println(request.getSession().getAttribute("kaptchaVerifyCode"));
// 4、 输出
// createImage(): 创建验证码图片
// 将生成的verifyCode字符传入图片,二进制图片
BufferedImage image = kaptchaProducer.createImage(verifyCode);
// 输出流
ServletOutputStream out = response.getOutputStream();
// 输出图片流
// 将生成的image 放入输出流out中,格式:png
ImageIO.write(image, "png", out);
// 立即输出
out.flush();
// 关闭输出流
out.close();
}
}
以上是关于基于Spring+SpringMVC+MyBatis开发书评网Kaptcha组件配置的主要内容,如果未能解决你的问题,请参考以下文章
抽奖活动啦!5本SpringMVC+MyBatis相关3本Android Studio相关6本Kafka相关