Spring MVC 中使用 Google kaptcha 验证码
验证码是抵抗批量操作和恶意登录最有效的方式之一。
验证码从产生到现在已经衍生出了很多分支、方式。google kaptcha 是一个非常实用的验证码生成类库。
通过灵活的配置生成各种样式的验证码,并将生成的验证码字符串放到 HttpSession 中,方便获取进行比较。
本文描述在 spring mvc 下快速的将 google kaptcha 集成到项目中(单独使用的话在 web.xml 中配置 KaptchaServlet)。
1.maven 依赖
官方提供的 pom 无法正常使用,使用阿里云仓库对应 kaptcha。
<!-- google 验证码 --> <dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>${kaptcha.version}</version> </dependency>
2.前端
<img id="kaptchaImage" src="${pageContext.request.contextPath}/captcha-image" width="116" height="36">
$(function(){$('#kaptchaImage').click(function () {$(this).hide().attr('src', '${ctx}/captcha-image?' + Math.floor(Math.random()*100) ).fadeIn();event.cancelBubble=true;});});
3.mvc-context 配置
<!--goole captcha 验证码配置--><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.size">45</prop><prop key="kaptcha.textproducer.font.color">blue</prop><prop key="kaptcha.textproducer.char.length">4</prop><prop key="kaptcha.session.key">code</prop></props></constructor-arg></bean></property></bean>
更多参数:http://www.cnblogs.com/louis80/p/5230507.html
4.服务端
@Controller public class CaptchaController {private final Producer captchaProducer;@Autowiredpublic CaptchaController(Producer captchaProducer) {this.captchaProducer = captchaProducer;}@RequestMapping(value = "captcha-image")public String getKaptchaImage(HttpServletRequest request, HttpServletResponse response) throws Exception {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();request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);BufferedImage bi = captchaProducer.createImage(capText);ServletOutputStream out = response.getOutputStream();ImageIO.write(bi, "jpg", out);try {out.flush();} finally {out.close();}return null;} }
5.session 中获取验证码
request.getSession().getAttribute(Constants.KAPTCHA_SESSION_KEY);
Spring MVC 中使用 Google kaptcha 验证码相关推荐
- Spring mvc 中使用 kaptcha 验证码
2019独角兽企业重金招聘Python工程师标准>>> 生成验证码的方式有很多,个人认为较为灵活方便的是Kaptcha ,他是基于SimpleCaptcha的开源项目.使用Kaptc ...
- 彻底解决Spring mvc中时间的转换和序列化等问题
彻底解决Spring mvc中时间的转换和序列化等问题 参考文章: (1)彻底解决Spring mvc中时间的转换和序列化等问题 (2)https://www.cnblogs.com/childkin ...
- spring mvc中的@propertysource
在spring mvc中,在配置文件中的东西,可以在java代码中通过注解进行读取了: @PropertySource 在spring 3.1中开始引入 比如有配置文件 config.propert ...
- spring_在Spring MVC中使用多个属性文件
spring 每个人都听说过将单个Web应用程序组合成一个大型Web应用程序的门户. 门户软件的工作原理类似于mashup -来自多个来源的内容是在单个服务中获取的,大部分都显示在单个网页中. 门户软 ...
- Spring MVC中处理Request和Response的策略
前沿技术早知道,弯道超车有希望 积累超车资本,从关注DD开始 作者:码农小胖哥, 图文编辑:xj 来源:https://mp.weixin.qq.com/s/3eFygsiVl8dC2nRy8_8n5 ...
- Spring MVC 中的 forward 和 redirect
Spring MVC 中,我们在返回逻辑视图时,框架会通过 viewResolver 来解析得到具体的 View,然后向浏览器渲染.假设逻辑视图名为 hello,通过配置,我们配置某个 ViewRes ...
- Spring MVC中获取当前项目的路径
Spring MVC中获取当前项目的路径 在web.xml中加入以下内容 <!--获取项目路径--><context-param><param-name>webAp ...
- Spring 2.5:Spring MVC中的新特性
转载说明:infoQ就是牛人多,看人家去年就把Spring2.5注视驱动的MVC写出来了,还是这么详细,我真是自叹不如,今天偶尔看到这篇文章非常认真的拜读了2遍,简直是茅厕顿开啊....\(^o^)/ ...
- Spring MVC中的二三事
HandlerMapping和HandlerAdapter 这个两个组件应该算是spring mvc中最重要的几个组件之一了,当一个请求到达DispatcherSerlvet后,spring mvc就 ...
最新文章
- dedecms /member/reg_new.php SQL Injection Vul
- 英伟达小姐姐的Python隐藏技巧合集,推特2400赞,代码可以直接跑
- string.h 的实现
- 鉴机识变,面向未来|RocketMQ Summit 2022 即将来袭
- BOOL与bool的区别(bool不是c的关键字,c++中bool也不是int)
- Python---shelve模块
- 2440 休眠唤醒的实现过程(作者:wogoyixikexie@gliet)
- 课程设计---约瑟夫环
- 有关/etc/resolv.conf、/etc/hosts、/etc/sysconfig/network
- 数组|leetcode27.移除元素
- MFC中CString转换成char数组的问题
- 导入ansys的实体怎么进行parameter_ANSYS在线缆线束设计中的仿真应用
- 撩开Docker的面纱
- 被弃用的 Docker 未死:带着 1.05 亿美元融资“回归”,估值高达 21 亿
- 微信小程序发布流程(上传审核)
- C++封装Detours库挂钩函数
- Altium Designer之泪点和常规铺铜操作笔记
- u大师u盘装系统win7_使用U盘安装Win7/Win8/Win10系统完美教程
- iPad如何分屏?iPad分屏详细教程来啦!
- 06【连词】 Conjunction
热门文章
- python支持向量机框架_Netflix 内部 Python 框架 Metaflow 正式开源,可加速机器学习模型部署...
- php怎样弄成中文,php怎样替换中文字符
- java 继承先后顺序_Java中的继承关系的加载顺序
- 关于 #!/bin/bash脚本头文件的类型说明
- c语言贪吃蛇编写分析,刚学C语言,想写一个贪吃蛇的代码
- 怎样快速学习html5,如何快速学习HTML5?带你了解HTML5学什么?
- ios底部栏设计规范_UI设计:iOS 界面规范
- spark连接Oracle数据库,Spark通过jdbc采用分区的方式从oracle读数据
- Node学习9-gulp
- Expo大作战(三十)--expo sdk api之Permissions(权限管理模块),Pedometer(计步器api)