使用谷歌的kaptcha进行验证码验证

使用谷歌的kaptcha进行验证码验证


我的实现思路
1. jsp页面发出请求到Controller
1. Controller层接收请求去寻找对应的验证码视图
1. 验证码视图层生成验证码
1. 返会给jsp页面进行验证码显示
具体实现

引入jar包
        <!--谷歌验证码生成  jar--><dependency><groupId>com.google.code</groupId><artifactId>kaptcha</artifactId><version>${kaptcha.version}</version></dependency><!--/谷歌验证码生成  jar-->
jsp页面
<input type="text" placeholder="请输入验证码" value="" id="inputCode" /><img src="${pageurl }/identify/getImageCode" id="reflush"onclick="$('#reflush').attr('src','/identify/getImageCode');" />
验证码刷新js
$(function(){//验证码的验证$("#inputCode").blur(function(){var $value=$(this).val();if ($value=="") {alert("验证码不能为空");}else{$.post("/identify/codeIsTrue",{"inputCode":$value},function(data){alert(data.result);},"json");}$('#reflush').attr('src','/identify/getImageCode');});
});
Controller层
package com.education.project.web.controller;import java.util.HashMap;
import java.util.Map;import javax.servlet.http.HttpSession;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;import com.google.code.kaptcha.Constants;
@Controller
@RequestMapping("/identify")
public class IdentityCodeController {@RequestMapping("/code")public String code(){return "/code/index";}@RequestMapping("/getImageCode")public String createCode(){return "kaptchaImageCodeView";}@RequestMapping(value="/codeIsTrue", method=RequestMethod.POST)public @ResponseBody Map<String, Object> codeIsTrue(String inputCode,HttpSession session){Map<String, Object> map=new HashMap<>();if (inputCode.equals(session.getAttribute(Constants.KAPTCHA_SESSION_KEY))) {map.put("result", "验证成功");}else{map.put("result", "验证失败,你输入的验证码为:"+inputCode+",正确的验证码为:"+session.getAttribute(Constants.KAPTCHA_SESSION_KEY));}return map;}
}
验证码的视图层(自定义视图解析器)view.xml
<bean id="kaptchaImageCodeView" class="com.education.project.web.view.KaptchaImageCodeView"p:captchaProducer-ref="captchaProducer"/>
验证码的实现类(继承springmvc的AbstractView)
package com.education.project.web.view;import java.awt.image.BufferedImage;
import java.util.Map;import javax.imageio.ImageIO;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.view.AbstractView;import com.google.code.kaptcha.Constants;
import com.google.code.kaptcha.Producer;public class KaptchaImageCodeView extends AbstractView {private Producer captchaProducer = null;public void setCaptchaProducer(Producer captchaProducer) {this.captchaProducer = captchaProducer;}@Overrideprotected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request,HttpServletResponse response) throws Exception {// Set to expire far in the past.response.setDateHeader("Expires", 0);// Set standard HTTP/1.1 no-cache headers.response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");// Set IE extended HTTP/1.1 no-cache headers (use addHeader).response.addHeader("Cache-Control", "post-check=0, pre-check=0");// Set standard HTTP/1.0 no-cache header.response.setHeader("Pragma", "no-cache");// return a jpegresponse.setContentType("image/jpeg");// create the text for the imageString capText = captchaProducer.createText();// store the text in the sessionrequest.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);// create the image with the textBufferedImage bi = captchaProducer.createImage(capText);ServletOutputStream out = response.getOutputStream();// write the data outImageIO.write(bi, "jpg", out);out.flush();out.close();}}
在springmvc的配置文件中集成自定义视图
<bean class="org.springframework.web.servlet.view.XmlViewResolver"p:order="10"p:location="classpath:views.xml"/>
验证码样式配置(具体配置参照以下文档)
<bean id="captchaProducer" class="com.google.code.kaptcha.impl.DefaultKaptcha"><property name="config"><bean class="com.google.code.kaptcha.util.Config"><constructor-arg type="java.util.Properties"><props><prop key="kaptcha.border">no</prop><prop key="kaptcha.border.color">105,179,90</prop><prop key="kaptcha.image.width">160</prop><prop key="kaptcha.image.height">50</prop><prop key="kaptcha.session.key">code</prop><prop key="kaptcha.textproducer.font.color">red</prop><prop key="kaptcha.textproducer.font.size">35</prop><prop key="kaptcha.textproducer.char.space">3</prop><prop key="kaptcha.textproducer.char.length">5</prop><!-- 配置中文 <prop key="kaptcha.textproducer.impl">com.google.code.kaptcha.text.impl.ChineseTextProducer</prop>--> <prop key="kaptcha.textproducer.font.names">彩云,宋体,楷体,微软雅黑</prop><prop key="kaptcha.background.clear.from">white</prop><prop key="kaptcha.background.clear.to">black</prop></props></constructor-arg></bean></property>
配置文档

这里写图片描述

结果展示

这里写图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/33637.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

谷歌二次验证 Google Authenticator

后台登录要搞令牌&#xff0c;类似于steam令牌、企鹅令牌等等 开启Google的登陆二步验证&#xff08;即Google Authenticator服务&#xff09;后用户登陆时需要输入额外由手机客户端生成的一次性密码。 实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责…

Google验证码Kaptcha的详细过程

使用Google验证码&#xff1a;Kaptcha 1.首先是导入jar包 2.第二步 配置jar包中的KaptchaServlet的路径 <!--配置google的验证码返回一个图片--><servlet><servlet-name>KaptchaServlet</servlet-name><servlet-class>com.google.code.kaptch…

谷歌公开测试Google Bard聊天机器人【无需排队,全面公测】

&#x1f951; Welcome to Aedream同学 s blog! &#x1f951; https://bard.google.com/ 更新&#xff01;&#xff01;&#xff01;&#xff01; bard全面放开了&#xff0c;可以用起来了&#xff0c;只需要满足网络就可以。 缺陷是暂时不支持中文 经过多年的谨慎发展&…

【Google Bard】公测已开始,与文心一言、chatGPT相比如何?

一、Google Bard简介 自从2022年11月30日&#xff0c;openAI开放聊天机器人chatGPT之后&#xff0c;其热度一直居高不下。 openAI公司成立于2015年&#xff0c;成立后不久&#xff0c;微软就对其工作给予了大力支持&#xff0c;包括资金援助、以及提供高性能服务器。 在这些…

读书笔记-别说你懂写网文

作者&#xff1a;千幻冰云 第一节 移动互联网时代的网络文学和商业化写作 1. 读者 读者分两类&#xff0c;一类是付费读者&#xff0c;一类是非付费读者。 2. 收入 决定网络写手收入的指标主要有两个&#xff1a;一是买断千字稿酬&#xff0c;一是读者订阅分成稿酬。 作者的名气…

阅文的IP梦

配图来自Canva可画 近日&#xff0c;阅文集团联合上海科技报最新发布的《2021科幻网文新趋势报告》显示&#xff0c;随着近年来互联网的不断发展&#xff0c;影响到大众生活的方方面面&#xff0c;也包括文学领域。 网文平台的创作者&#xff0c;尤其是年轻创作者的数量开始增…

魔改GPT自动写网文,速度一秒十字,还能给太监作品无限续更 | 开源

博雯 发自 凹非寺量子位 报道 | 公众号 QbitAI 如果一个人只看网文&#xff0c;那会写出来怎样的文字&#xff1f; 看了100G网文后&#xff0c;这个AI模型帮你试了一下。 先来一段自由创作&#xff1a; 乍眼看去很有内味&#xff0c;而且基本是一秒十字甚至更快的生成速度&…

外星生命或智能摆在面前,你能认出来吗?——“梯径”提供的思路

导语 外星生命一定长得像人类吗&#xff1f;最近和你火热聊天的 ChatGPT 有智能和意识吗&#xff1f;当外星智慧生命出现在眼前&#xff0c;即使它们不是我们熟悉的样子&#xff0c;我们能识别出来吗&#xff1f;是否可以用严格的数学形式来定量描述生命和智能的复杂度&#xf…

ai智能混剪批量剪辑软件开发工具|批量视频剪辑开发分享

AI智能批量剪辑系统研发主要涉及以下技术&#xff1a; 1. 视频处理技术&#xff1a;包括视频压缩、格式转换、去水印、稳定性处理等。 2. 视频剪辑技术&#xff1a;包括时间轴编辑、音视频素材分离、剪辑片段拼接等。 3. AI算法技术&#xff1a;包括图像识别、语音识别、自然…

竞彩足球分析小工具

18年世界杯时期&#xff0c;自己写了一个分析足球竞彩的小工具。工具虽然简单&#xff0c;但是可以增加购彩的乐趣。曾经这段代码差一点就丢了&#xff0c;现在拿出来给分享吧&#xff0c;这样就不用担心找不着了。作为一个普通球迷&#xff0c;边看球边买足彩也算是一种非常快…

kaggle比赛:Predict California sales prices(房价预测)

目录 1、比赛介绍&#xff1a;2、导入数据&#xff1a;3、项目构建&#xff1a;特征选择&#xff1a;预处理&#xff1a;训练&#xff1a;模型推理及保存预测结果&#xff1a; 4、上传预测结果到kaggle:5、总结&#xff1a; 本文内容来源于《动手深度学习》一书。跟着沐神做kag…

实际波动率预测:kaggle比赛

实际波动率预测 1. 比赛概述1.1 背景介绍1.2 赛事目标1.3 评估指标和结果提交 2. 数据介绍2.1 book_[train/test].parquet2.2 trade_[train/test].parquet2.3 train.csv2.4 test.csv2.5 sample_submission.csv 3. Optiver提供的[官方帮助文档](https://www.kaggle.com/jiashenl…

[Kaggle比赛] 高频股价预测小结

高频股价预测 文章目录 高频股价预测问题描述问题分析数据分析数据集数据清洗 解决方案数据预处理归一化PricesVolume时间信息对于预测值的处理噪声 模型探索基于LSTM的RNN模型递归神经网络(RNN)长短期记忆&#xff08;LSTM&#xff09;网络模型实现参数调整 卷积神经网络卷积神…

Predict Future Sales 预测未来销量, Kaggle 比赛,LB 0.89896 排名6%

Predict Future Sales 数据分析1. 数据基本处理1.1 读入数据集1.2 基线模型预测1.3 节省存储空间 2. 数据探索2.1 训练集分析 sales_train2.1.1 每件商品的销量2.1.2 每个商店的销量2.1.3 每类商品的销量2.1.4 销量和价格的离群值 2.2 测试集分析2.3 商店特征2.3.1 商店信息清洗…

世界杯押注还得看技术流,这个预测AI把赔率也算上了

胡澎 发自 凹非寺 量子位 报道 | 公众号 QbitAI 世界杯小组赛将收官&#xff0c;你还依然信AI吗&#xff1f; 冷门频出&#xff0c;黑马击败豪强。不少AI模型始料未及。 到底还能不能愉快找到科学规律&#xff1f;或者说足球比赛乃至其他竞技体育赛事&#xff0c;数据科学家在A…

足球大数据预测实战之高胜率盈亏条件验证及优化算法

上周接到一位老用户&#xff0c;之前为他做过数据验证&#xff0c;给出了组合条件下的胜率回查&#xff0c;结果有些难看啊。这期主要介绍常用人工智能算法中在足球预测中的应用&#xff0c;以及数据验证后的实际效果。 由上图为用户依据条件查证后的比赛场次和概率统计。可以看…

苹果手机朝下无法唤醒Siri,这个解决方法你知道吗

Siri对于苹果手机的用户来说是一个非常大的吸引点&#xff0c;能够指挥苹果手机中的Siri去做很多事情&#xff0c;如&#xff1a;放一首歌曲、百度一些知识点、这句话用英语怎么说等等功能。但是&#xff0c;不知道你们有没有发现一般我们苹果手机朝下无法唤醒Siri。是不是觉得…

如何解决Siri无法正常运行的问题

Siri 是一位智能助理,能帮助你在 Apple 设备上更快速轻松地处理各种事务,甚至不用等你开口。 Mac 上的 Siri 可帮助您执行日常任务&#xff0c;如获取问题的快速***、播放音乐等。您可以询问 Siri 几乎任何内容&#xff0c;Siri 都可以为您执行或回答您的问题。如果在使用 Siri…

【推荐实践】多场景多任务学习在美团到店餐饮推荐的实践

省时查报告-专业、及时、全面的行研报告库 省时查方案-专业、及时、全面的营销策划方案库 【免费下载】2023年2月份热门报告合集 ChatGPT团队背景研究报告 ChatGPT的发展历程、原理、技术架构及未来方向 ChatGPT使用总结&#xff1a;150个ChatGPT提示此模板 ChatGPT数据集之谜 …

倒计时3天!2023新榜AIGC生态大会看点剧透

倒计时3天&#xff01;「AIGC赋能重塑内容生态」2023新榜AIGC生态大会将于7月14日在北京丽都皇冠假日酒店重磅登场。 内容行业正在步入AI时代。 AIGC&#xff08;AI Generated Content&#xff0c;即人工智能生成内容&#xff09;被认为是继OGC、PGC和UGC之后的新型内容生产方式…