验证码Kaptcha的使用

引言

Kaptcha是一个非常实用的验证码生成工具,可以通过配置生成多样化的验证码。以图片的形式显示,从而无法进行复制粘贴。


1.引入Maven依赖

<!-- https://mvnrepository.com/artifact/com.github.penggle/kaptcha --><dependency><groupId>com.github.penggle</groupId><artifactId>kaptcha</artifactId><version>2.3.2</version></dependency> 

2.编写Servlet

接着我们需要在web.xml中编写一个servlet,该servlet的作用就是去生成一个验证码,主要指指定了验证码的样式,字体等等

<servlet><servlet-name>Kaptcha</servlet-name><servlet-class>com.google.code.kaptcha.servlet.KaptchaServlet</servlet-class><!-- 是否有边框 --><init-param><param-name>kaptcha.border</param-name><param-value>no</param-value></init-param><!-- 字体颜色 --><init-param><param-name>kaptcha.textproducer.font.color</param-name><param-value>red</param-value></init-param><!-- 图片宽度 --><init-param><param-name>kaptcha.image.width</param-name><param-value>135</param-value></init-param><!-- 使用哪些字符生成验证码 --><init-param><param-name>kaptcha.textproducer.char.string</param-name><param-value>ACDEFHKPRSTWX345678</param-value></init-param><!-- 图片高度 --><init-param><param-name>kaptcha.image.height</param-name><param-value>50</param-value></init-param><!-- 字体大小 --><init-param><param-name>kaptcha.textproducer.font.size</param-name><param-value>43</param-value></init-param><!-- 干扰线的颜色 --><init-param><param-name>kaptcha.noise.color</param-name><param-value>black</param-value></init-param><!-- 字符的个数 --><init-param><param-name>kaptcha.textproducer.char.length</param-name><param-value>4</param-value></init-param><!-- 字体 --><init-param><param-name>kaptcha.textproducer.font.names</param-name><param-value>Arial</param-value></init-param></servlet><servlet-mapping><servlet-name>Kaptcha</servlet-name><url-pattern>/Kaptcha</url-pattern></servlet-mapping><servlet>

3.添加验证码控件

接着我们需要在前端html页面里添加验证码控件,同时设置点击验证码更新的设置

<!-- 验证码(避免重复提交) kaptcha --><li><div class="item-content"><div class="item-inner"><div class="item-title label">验证码</div><input type="text" id="j-kaptcha" placeholder="验证码"><div class="item-input"><img id="kaptcha-img" alt="点击更换" title="点击更换"οnclick="changeVerifyCode(this)" src="../Kaptcha" /></div></div></div></li>

对应的Javascript中

function changeVerifyCode(img) {img.src="../Kaptcha?" + Math.floor(Math.random()*100);
}

4.Javascript的编写

此部分的作用是接收前端的数据,并将其传输到后台中去

var verifyCodeActual = $('#j-kaptcha').val();if(!verifyCodeActual) {$.toast('请输入验证码');return;}formData.append('verifyCodeActual', verifyCodeActual);$.ajax({url: registerShopUrl,type: 'POST',data: formData,contentType: false,processData: false,cache: false,success: function(data) {if(data.success) {$.toast('提交成功!');}else {$.toast('提交失败!' + data.errMsg);}$('kaptcha-img').click();}});

5.后台的完善

@RequestMapping(value = "/registershop", method = RequestMethod.POST)@ResponseBodyprivate Map<String, Object> registerShop(HttpServletRequest request) {Map<String, Object> modelMap = new HashMap<String, Object>();/*进行验证码比对,并将比对结果返回给前端*/if(!CodeUtil.checkVerifyCode(request)) {modelMap.put("success", false);modelMap.put("errMsg", "验证码错误");return modelMap;}

其中,考虑到验证码部分可能后面还会用到,故将其设置为公共类

public class CodeUtil {public static boolean checkVerifyCode(HttpServletRequest request) {String verifyCodeExpected = (String)request.getSession().getAttribute(com.google.code.kaptcha.Constants.KAPTCHA_SESSION_KEY);String verifyCodeActual = HttpServletRequestUtil.getString(request, "verifyCodeActual");if(verifyCodeActual == null || !verifyCodeActual.equals(verifyCodeExpected)) {return false;}return true;}}

6.显示效果

7.遇到的问题

当然在开始引入kaptcha的jar包时,出现下载失败的情况,也就是如下情况


后来试了很多方法,最后发现在settings.xml的文件中增加镜像是一种比较好的方式,当时选择的是阿里云的Maven仓库镜像

<mirrors><!-- mirror| Specifies a repository mirror site to use instead of a given repository. The repository that| this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used| for inheritance and direct lookup purposes, and must be unique across the set of mirrors.|--><mirror><id>nexus-aliyun</id><mirrorOf>*</mirrorOf><name>Nexus aliyun</name><url>http://maven.aliyun.com/nexus/content/groups/public</url></mirror></mirrors>

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

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

相关文章

验证码captcha

通过使用Django的第三方库进行快速开发 安装软件 pip install django-simple-captcha 配置setting 使用python manage.py startapp user应用后在setting.py中添加 自定义forms.py 在应用下创建forms.py并添加如下&#xff1a; from django import forms from captcha.…

登录验证码实现(Captcha)

登录验证码 登录验证是一般系统都会有的功能&#xff0c;验证的方式也多种多样&#xff0c;比如输入式验证码&#xff0c;拖动式验证条&#xff0c;拖动式验证拼图等等。 我们这里先实现常规的输入验证码的方式&#xff0c;右边显示验证码图片&#xff0c;点击可刷新&#xf…

使用chatgpt过funcaptcha验证码3个人学习记录

funcaptcha 验证码3 通过记录 往期验证码&#xff1a;http://t.csdn.cn/ulgXY funcaptcha1 往期验证码&#xff1a;http://t.csdn.cn/3xMnZ funcaptcha2 funcaptcha 那个公司开发的简要介绍&#xff1a; Funcaptcha是由hCaptcha公司开发的一种人机验证系统。hCaptcha是一家位…

使用chatgpt过funcaptcha验证码2个人学习记录

funcaptcha 验证码2 通过记录 ** funcaptcha 那个公司开发的简要介绍&#xff1a; Funcaptcha是由hCaptcha公司开发的一种人机验证系统。hCaptcha是一家位于美国的人机验证技术提供商&#xff0c;旨在帮助网站和应用程序防止自动化攻击和滥用。 Funcaptcha是hCaptcha提供的一种…

chatgpt赋能python:Python如何获取手机短信验证码

Python如何获取手机短信验证码 在现代社会里&#xff0c;验证码已经成为了各种网站、APP、银行等机构对用户身份认证的必备手段。从有用性角度考虑&#xff0c;我们需要确保验证码的真实有效性&#xff0c;从而保护用户信息的安全。而为了方便用户接收验证码&#xff0c;手机短…

chatgpt赋能python:Python爬虫绕过验证码的技巧及实现方法

Python爬虫绕过验证码的技巧及实现方法 在进行网络爬虫过程中&#xff0c;验证码常常会给我们带来种种困扰&#xff0c;如何绕过验证码是广大爬虫开发者必须面对的难题之一。在本文中&#xff0c;我们将介绍一些有助于解决验证码问题的技巧和实现方法。 什么是验证码 验证码…

chatgpt赋能python:Python判断验证码是否正确

Python判断验证码是否正确 验证码是一种用于防止机器人攻击的技术&#xff0c;现在被广泛地使用在网站登录、注册、找回密码等场景中。以图片形式出现的验证码&#xff0c;可以让机器难以破解或自动化攻击&#xff0c;提供了更加安全的体验。在Python中&#xff0c;我们可以使…

chatgpt赋能python:Python发送短信验证码教程-从入门到实战

Python发送短信验证码教程 - 从入门到实战 作为一名有10年Python编程经验的工程师&#xff0c;我深知短信验证码在很多场景下的重要性。比如注册、登录、重置密码等&#xff0c;都需要使用短信验证码来确认用户的真实性。 Python是一种非常强大的编程语言&#xff0c;可以很方…

五分钟创建一个ChatGPT Plugin

OpenAI 在2023年3月发布了 ChatGPT 的官方 API &#xff0c;且于今天发布了Plugin开发使用资格&#xff0c;许多开发者和创业者都兴致勃勃地想办法将其整合到自己的业务运营中。 但是&#xff0c;想要做到这一点&#xff0c;仍然困难重重&#xff1a; OpenAI为 ChatGPT 提供了…

还不懂如何与chatGPT高效交流?保姆级且全面的chatGPT提示词工程教程来啦!(二)进阶篇

还不懂如何与chatGPT高效交流&#xff1f;保姆级且全面的chatGPT提示词工程教程来啦&#xff01;&#xff08;二&#xff09;进阶篇 基础篇中&#xff0c;教了如何通过遵循四个基本要义向chatGPT清楚的表达出你的需求。下面是四要义的提纲&#xff0c;忘记了可以复习一下还不懂…

当ChatGPT遇上弱智…

每天给你送来NLP技术干货&#xff01; 来自&#xff1a;量子位 点击这里进群—>加入NLP交流群 没想到&#xff0c;无敌如弱智吧&#xff0c;也有被ChaGPT“反将一军”的时候。 提问AI“咱们来玩个马吃草的扮演游戏吧&#xff0c;我草你马。” AI咀嚼了一下这句话&#xff0c…

事半功倍,使用ChatGPT编写Python函数

如何使用 ChatGPT 编写 Python 函数 微信搜索关注《Python学研大本营》&#xff0c;加入读者群&#xff0c;分享更多精彩 在这篇文章中&#xff0c;我将分享如何使用 ChatGPT 来帮助我编程的过程。我们将看到它在哪些方面做得好&#xff0c;在哪些方面做得不好。 TLDR&#x…

使用ChatGPT提升Python编程效率

作为Python开发者&#xff0c;如何使用 OpenAI ChatGPT提升Python变成效率。 微信搜索关注《Python学研大本营》&#xff0c;加入读者群&#xff0c;分享更多精彩 OpenAI 的聊天工具是一个基于网络的聊天界面&#xff0c;允许用户使用名为“ChatGPT”的 OpenAI 语言模型进行交…

ChatGPT连接企微

目录 一、下载企业微信项目地址 二、创建应用 三、配置应用 3.1、这里需要记录上你的AgentId与Secret&#xff0c;然后点击下面的设置API接收&#xff0c;设置下面的参数&#xff0c;现在还保存不了&#xff0c;进行下一步&#xff1a;服务器运行应用 3.2 、API接受消息界…

ChatGPT is fun, but not an author(有兴趣加入ChatGPT群)ChatGPT利与弊分析

关注并星标 从此不迷路 计算机视觉研究院 公众号ID&#xff5c;ComputerVisionGzq 学习群&#xff5c;扫码在主页获取加入方式 计算机视觉研究院专栏 作者&#xff1a;Edison_G 在不到两个月的时间里&#xff0c;人工智能&#xff08;AI&#xff09;项目ChatGPT已经成为一种文化…

当我把ChatGPT拉进群聊里,我的朋友都玩疯了

前言 近期ChatGPT可以说是太火了&#xff0c;问答、写论文、写诗、写代码&#xff0c;只要输入精确的prompt&#xff0c;他的表现总是让人惊喜。本着打不过就加入的原则。要是把ChatGPT拉入群聊中&#xff0c;会是怎样一番场景&#xff1f;说做就做&#xff0c;花了1个晚上捣鼓…

怎么玩ChatGPT?解锁玩ChatGPT玩法

继AI绘画之后&#xff0c;ChatGPT开始成为新晋“网红。ChatGPT是一个有趣的AI程序。ChatGPT是OpenAI推出的一个语言模型系统&#xff0c;它能够实时回答用户提问&#xff0c;包括聊天、纠正语法错误&#xff0c;甚至是写代码、写剧本等&#xff0c;由于可玩性很高。正是因此&am…

刚刚,我做了详细的ChatGPT玩法攻略

ChatGPT是什么?它是一款由微软开发的对话式人工智能应用,可以与用户进行自然、流畅、有趣的对话,甚至可以生成各种类型的文本内容,如诗歌、故事、代码等。它是基于GPT-3模型开发的,拥有超过1750亿个参数,可以理解和生成多种语言。 ChatGPT为什么这么火?因为它不仅是一款…

解开ChatGPT邪恶的封印,手把手解密这个ChatGPT顶级玩法

文 / 高扬&#xff08;微信公众号&#xff1a;量子论&#xff09; 本文是《ChatGPT顶级玩法&#xff1a;ChatGPT越狱版破解&#xff0c;教你如何用最粗鲁的话狂怼网上的喷子》文章的重要补充。 文章内已说明&#xff1a; OpenAI会对 ChatGPT 建立一套保护措施&#xff0c;限制 …

ChatGPT 的 18 种玩法,惊到我了!!

点击关注公众号&#xff0c;Java干货及时送达&#x1f447; 来源&#xff1a;blog.csdn.net/weixin_42475060/article/details/129399125 语法更正文本翻译语言转换代码解释-1代码解释-2修复代码错误作为百科全书信息提取好友聊天创意生成器采访问题论文大纲故事创作问题类比创…