SpringMVC 整合 kaptcha(验证码功能)
一、添加依赖
<dependency>
<groupId>com.github.penggle</groupId>
<artifactId>kaptcha</artifactId>
<version>2.3.2</version>
</dependency>
二、springmvc配置文件
<!-- kaptcha 验证码配置 -->
<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">no</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>
三、后端
package com.beovo.dsd.controller; import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.Producer;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping; import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.awt.image.BufferedImage;
import java.io.IOException; /**
* 验证码控制器
* @author Jimc.
* @since 2018/11/21.
*/
@Controller
public class CaptchaController { @Autowired
private Producer captchaProducer; /**
* 获取 kaptcha 验证码
*
* @param request
* @param response
* @throws Exception
*/
@RequestMapping(value = "captcha")
public void getKaptchaImage(HttpServletRequest request, HttpServletResponse response) {
HttpSession session = request.getSession();
response.setDateHeader("Expires", 0);
response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
response.addHeader("Cache-Control", "post-check=0, pre-check=0");
response.setHeader("Pragma", "no-cache");
response.setContentType("image/jpeg");
// 生成验证码
String capText = captchaProducer.createText();
session.setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);
// 向客户端写出
ServletOutputStream out = null;
try {
BufferedImage bi = captchaProducer.createImage(capText);
out = response.getOutputStream();
ImageIO.write(bi, "jpg", out);
out.flush();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (out != null){
out.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
四、前端
<form>
<fieldset>
<ul>
<li class="frame-style form-error">
<label class="user-icon" for="username"></label>
<input name="username" type="text" id="username"/>
<i>用户名</i>
</li>
<li class="frame-style form-error">
<label class="password-icon" for="password"></label>
<input name="password" type="password" id="password"/>
<i>密码</i>
</li>
<li class="frame-style form-error">
<label class="captcha-icon" for="captcha"></label>
<input name="captcha" type="text" id="captcha" class="captcha"/>
<i>验证码</i>
<div class="captcha-region">
<img src="${ctxPath}/captcha" id="img-captcha">
</div>
</li> </ul>
<div class="space"></div> <div class="clearfix">
<label class="inline">
<input type="checkbox" class="ace">
<span class="lbl">记住密码</span>
</label> <button type="button" class="width-35 pull-right btn btn-sm btn-primary" onclick="login()">
<i class="icon-key"></i>
登录
</button>
</div> <div class="space-4"></div>
</fieldset>
</form>
<script type="text/javascript">
$(function () {
$("#img-captcha").on('click', function () {
$(this).attr('src', '${ctxPath}/captcha?' + Math.floor(Math.random() * 10000)).fadeIn();
});
})
</script>

五、kaptcha 配置参数详解
|
Constant |
描述 |
默认值 |
|
kaptcha.border |
图片边框,合法值:yes , no |
yes |
|
kaptcha.border.color |
边框颜色,合法值: r,g,b (and optional alpha) 或者 white,black,blue. |
black |
|
kaptcha.border.thickness |
边框厚度,合法值:>0 |
1 |
|
kaptcha.image.width |
图片宽 |
200 |
|
kaptcha.image.height |
图片高 |
50 |
|
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 |
验证码长度 |
5 |
|
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 |
文字间隔 |
2 |
|
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 |
|
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 |
SpringMVC 整合 kaptcha(验证码功能)的更多相关文章
- Springboot整合kaptcha验证码
01.通过配置类来配置kaptcha 01-01.添加kaptcha的依赖: <!-- kaptcha验证码 --> <dependency> <groupId>c ...
- SpringMVC整合kaptcha(验证码功能)
一.依赖 <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha& ...
- 【Spring】基于SpringMVC的图片验证码功能实现
后台实现代码: ImgController.java 文件 package cn.shop.controller; import java.awt.Color; import java.awt.Fon ...
- (五)SpringMVC之使用Kaptcha实现验证码功能
一.什么是Kaptcha Kaptcha是Google开发的用于自动生成验证码的插件. 二.怎么导入Kaptcha ① 如果没有用Maven管理工具的话就直接导入包(可以直接下载:pau8) http ...
- SpringMVC整合Shiro,Shiro是一个强大易用的Java安全框架,提供了认证、授权、加密和会话管理等功能
SpringMVC整合Shiro,Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能. 第一步:配置web.xml <!-- 配置Shiro过滤器,先让Shiro ...
- Springboot +redis+⾕歌开源Kaptcha实现图片验证码功能
Springboot +redis+⾕歌开源Kaptcha实现图片验证码功能 背景 注册-登录-修改密码⼀般需要发送验证码,但是容易被 攻击恶意调⽤ 什么是短信-邮箱轰炸机 手机短信轰炸机是批.循环给 ...
- SpringMVC整合Tiles框架
SpringMVC整合Tiles框架 Tiles组件 tiles-iconfig.xml Tiles是一个JSP布局框架. Tiles框架为创建Web页面提供了一种模板机制,它能将网页的布局和内容分离 ...
- SpringMVC整合Shiro——(3)
SpringMVC整合Shiro,Shiro是一个强大易用的Java安全框架,提供了认证.授权.加密和会话管理等功能. 第一步:配置web.xml <!-- 配置Shiro过滤器,先让Shiro ...
- springmvc整合redis架构搭建实例
新换环境,又有新东西可以学习了,哈皮! 抽空学习之余看了一下redis,个人对Springmvc的爱是忠贞不渝,所以整理了一下Springmvc整合redis的环境搭建.分享学习. 第一步: 创建ma ...
随机推荐
- win8下使用IIS服务器及自定义服务器端包含模块(SSI)步骤
配置完过段时间就容易忘记,特此记录. 1.开启IIS服务器. 默认没有安装,需要先安装. 打开控制面板--> 打开“程序和功能”--> 左侧选择“启用或关闭windows功能”--> ...
- IOS照相机的启动,图片的读取,存储demo
#import @interface ViewController : UIViewController@property (retain, nonatomic) IBOutlet UIImageVi ...
- user(),current_user()函数的区别
user() 表示当前的登录用户 current_user() 表示对应于mysql.user表里对应的账号.
- 过河问题(POJ1700)
题目链接:http://poj.org/problem?id=1700 解题报告: 1.贪心算法,每次过两个速度最慢的人,抵消那个较慢的人的时间. #include <stdio.h> # ...
- windows/Linux主机重启NetBackup服务和后台进程
关闭并启动所有NetBackup服务和后台进程 要关闭并启动所有NetBackup服务和后台驻留程序,请从命令行输入以下命令: 在Windows上: 要关闭所有NetBackup服务: install ...
- CentOS 6\7修改主机名
1.CentOS6修改主机名 1)临时修改主机名: 显示主机名: oracle@localhost:~$ hostname localhost 修改 oracle@localhost:~$ sudo ...
- 2018.7.19 . php复习
PHP程序设计 1.请写出HTML标记meta的完整英文单词:metadata 2.相当于http文件头作用(向浏览器传回正确和精确地显示网页内容的消息)的meta标记的属性是http-equiv 3 ...
- 第50章 读写内部FLASH—零死角玩转STM32-F429系列
第50章 读写内部FLASH 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fire ...
- java.util包中 Set 和 List 的区别
http://ligaosong.iteye.com/blog/903692 对于Set 和 List都是 接口 Collection 的子接口 1.Set 不允许重复,List允许重复 2.Set ...
- data-ng-app 指令
1.data-ng-app指令定义了一个AngularJS应用程序的根元素. 2.data-ng-app会在页面加载完毕后自动进行初始化应用程序. 3.data-ng-app可以通过一个值连接到代码模 ...