通过Java实现各种前端验证码(字母,中文,数字运算)

19 篇文章 0 订阅
订阅专栏

这里借鉴一位大佬的开源项目:EasyCaptcha: 传送门

这里实现的验证码有英语字母,计算,中文类型,内置字体各种类型

 这里那其中一种,计算类型的验证码,讲解如何在Java中实现。

效果图:

首先,导入这个依赖

        <!--验证码-->
        <dependency>
            <groupId>com.github.whvcse</groupId>
            <artifactId>easy-captcha</artifactId>
            <version>1.6.2</version>
        </dependency>

如果maven下载不了这个jar那就去maven的配置文件中,把镜像改成:

	<mirror>
	  <id>aliyunmaven</id>
	  <mirrorOf>*</mirrorOf>
	  <name>阿里云公共仓库</name>
	  <url>https://maven.aliyun.com/repository/public</url>
	</mirror>

jar下载好过后,编写后台返回验证码的请求:

这个验证码也可以不存到redis中,也可以存到session中。只需要这一个方法,就可以返回一个输出流,显示图片验证码了

@Controller
@RequestMapping("/seckill")
public class SecKillController{

    @Autowired
    private RedisTemplate redisTemplate;

    /**
     * 生成验证码的接口
     * @param user 登录的用户
     * @param goodsId 秒杀商品的id
     * @param response  用于输出流
     */
    @RequestMapping(value = "/captcha", method = RequestMethod.GET)
    public void verifyCode(HttpSession session, HttpServletResponse response){
        // 设置请求头输入为图片类型
        response.setContentType("image/jpg");
        // 设置不用缓存,防止验证码不刷新
        response.setHeader("Pargam","No-cache");
        response.setHeader("Cache-Control","no-cache");
        // 设置过期时间,永不失效
        response.setDateHeader("Expires",0);

        // 算术类型(长,宽,几个数的运算)
        ArithmeticCaptcha captcha = new ArithmeticCaptcha(130, 48);
        captcha.setLen(3);  // 几位数运算,默认是两位
        System.out.println(captcha.getArithmeticString()); // 获取运算公式 5x0+5=?
        System.out.println(captcha.text()); // 获取验证码结果

        // 图片英语字母数字类型
        //SpecCaptcha captcha = new SpecCaptcha(130, 48);

        // 英语字母数字gif类型的
        //GifCaptcha captcha = new GifCaptcha(130, 48,4);

        // 中文类型的
        //ChineseCaptcha captcha = new ChineseCaptcha(130, 48,3);

        // 中文gif类型
        //ChineseGifCaptcha captcha = new ChineseGifCaptcha(130, 48,4);

        // 将结果放入Redis,设置5分钟失效时间。或者存入session·
        session.setAttribute("captcha:admin", captcha.text());

        // 输出验证码
        try {
            captcha.out(response.getOutputStream());
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

接下来就是前端:

用一个图片展示,一个文本框输入,点击秒杀的时候在后端校验验证码是否正确

                <div class="row">
                    <div class="form-inline">
                        <img id="captchaImg" width="130" height="48" onclick="refreshCaptcha()" style="display: none" />
                        <input id="captcha" class="form-control" style="display: none">
                        <button class="btn btn-primary btn-block" type="button" id="buyButton" onclick="getSeckillPath()">立即秒杀
                            <input type="hidden" name="goodsId" id="goodsId">
                        </button>
                    </div>
                </div>

js:

<script>

    $(function () {
        // 加载商品信息,课忽略
        getDetail();
        // 首次加载 获取验证码
        $("#captchaImg").attr("src","/seckill/captcha?goodsId="+$("#goodsId").val()+"&time="+new Date());
    });

    // 更新验证码的方法
    function refreshCaptcha() {
        // 点击的时候把地址换成这个
        $("#captchaImg").attr("src","/seckill/captcha?goodsId="+$("#goodsId").val()+"&time="+new Date());
    }

</script>

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccdddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee

fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffgggggggggggggggggggggggggggg

java实现汉字验证码
11-19
今天整理了一个java实现的汉字输入验证码 主要包含两个类,一个是生成验证码,一个是判断验证码输入是否正确 实现原理非常简单,将汉字和干扰线生成图片并将汉字保存到session,前台获取每次生成验证码图片并用文本框值和session值比较,功能就这么简单。
java 中文验证码_java验证码-汉字验证码
weixin_33915387的博客
02-16 189
1 packagexwcms.net.service;2 importjava.awt.Color;3 importjava.awt.Font;4 importjava.awt.Graphics;5 importjava.awt.Graphics2D;6 importjava.awt.image.BufferedImage;7 importjava.io.IOException;8 importj...
Java 生成验证码的四种方式、源码、过程、结果
最新发布
一心向阳,光芒万丈
08-09 1130
使用Java基本的逻辑和方法生成所需要的验证码,且生成的验证码包含大小写字母数字,当然啦,也有纯数字验证码。每一个方式都有详细的注释解析😆😆😆第一种方式 Random随机数类生成验证码第一种方式,是在main方法中生成的验证码,想要获取最终结果的小伙伴,可以把最后的for循环删除,然后把里面的代码提取成一个方法哦😊😊😊运行结果第二种方式 洗牌算法实现验证码这种方式实现验证码很新奇,基本是不常见的验证码,会发现他生成的验证码出奇的乱,很少见😁😁😁运行结果。
java生成汉字验证码
weixin_33901641的博客
01-24 106
java实现的汉字输入验证码,主要包含两个类,一个是生成验证码,一个是判断验证码输入是否正确,实现原理非常简单,将汉字和干扰线生成图片并将汉字保存到session,前台获取每次生成验证码图片并用文本框值和session值比较,功能就怎么简单   复制代码 代码如下: package xwcms.net.service;import java.awt.Color;import java...
java 中文验证码_Java web中文验证码
weixin_34637138的博客
02-16 155
中文验证码chineseRandomCode.jsppageEncoding="UTF-8"%>//生成随机颜色Color getRandColor(Random random, int fc, int bc) {if (fc > 255) {fc = 255;}if (bc > 255) {bc = 255;}int r = fc + random.nextInt(bc - f...
前端验证码之-数字运算验证码
weixin_58031521的博客
03-10 559
完整代码记录:随机生成两个数组,进行加减乘操作。
java实现多种验证码
06-26
本教程将深入探讨如何使用Java语言和kaptcha包来实现不同类型的验证码,包括字符与数字混合的验证码中文验证码以及算术运算式的验证码。 首先,kaptcha是一个强大的开源验证码生成库,它提供了丰富的配置选项,...
java网页图片滑动验证码.zip
06-11
2. **随机生成验证码**:验证码的内容可以是随机生成的数字字母组合,确保每次请求时都不同。可以使用`java.util.Random`类生成随机数,然后将其转换为字符串。 3. **滑动验证逻辑**:当用户滑动验证码块并尝试与...
前端——》easy-captcha验证码的使用
叙传
12-14 1984
在网上看到一个很方便的验证码插件:easy-captcha。使用效果如下。 使用步骤: 1.导入依赖 <!--图形验证码--> <dependency> <groupId>com.github.whvcse</groupId> <artifactId>easy-captcha</artifactId> <version>1.6.2</version> .
java验证码(算术型和字符型)和生成和解析代码,yanzhengma.zip
12-26
算术型验证码通常包含两个或更多数字,通过简单的数学运算(如加、减、乘、除)形成一个问题,用户需要解决这个问题才能验证。字符型验证码则由随机字母数字组合而成,用户需正确输入显示的字符序列。这两种类型的...
【1.3 API服务网关(SpringCloudGateway)】基于SpringCloud Gateway的webflux与Google的kaptcha实现图形验证码功能
本本本添哥
03-07 1242
基于SpringCloud 微服务架构的项目中,需要使用图形验证码,以下是使用的记录。
javaWeb简单的中文验证码
06-18
JavaWeb简单的中文验证码,实测可用!
java 姓名校验_java实现点选汉字验证码(自己修改后的)
weixin_42579969的博客
02-16 568
packagecom.rd.p2p.web;importjava.awt.BasicStroke;importjava.awt.Color;importjava.awt.Font;importjava.awt.Graphics;importjava.awt.Graphics2D;importjava.awt.geom.AffineTransform;importjava.awt.geom.Line...
java实现点选汉字验证码(自己修改后的)
dgqvhtlwq472235338的博客
10-18 392
参考:http://blog.csdn.net/qq_26680031/article/details/51168527 package com.rd.p2p.web; import java.awt.BasicStroke; import java.awt.Color; import java.awt.Font; import java.awt.Grap...
java一个中文验证码程序,Java中文验证码
weixin_35448391的博客
03-14 230
public void validateImage() throws Exception {HttpServletResponse response = this.getResponse();HttpServletRequest request = this.getRequest();request.setCharacterEncoding("utf-8");response.setContent...
java识别验证码
恨_别离的博客
04-28 865
在英文和数字识别中性能还是不错的,但是在中文识别中,无论速度还是识别率还是较弱,建议有条件的话,针对场景进行训练,会获得较好结果,本文仅对目前Tess4J的用法进行介绍。Tesseract-OCR支持中文识别,并且开源和提供全套的训练工具,是快速低成本开发的首选。Github地址:https://github.com/tesseract-ocr/tessdata。
java中文验证码
趙大叔
12-19 825
JSP中文验证码页面,java验证码中文验证码 <%@ page pageEncoding="gb2312" contentType="image/jpeg" import="javax.imageio.*,java.util.*,java.awt.image.*,java.awt.*"%> <%! Color getRandColor(Random random, int
Java中文验证码
leayefang的专栏
05-08 1641
public void validateImage() throws Exception { HttpServletResponse response = this.getResponse(); HttpServletRequest request = this.getRequest(); request.setCharacterEncoding("utf-8");
Java实现中文验证码 (附完整源码)
希望我的博客,能帮上你解决学习中工作中所遇到的问题
02-13 73
Java实现中文验证码 (附完整源码)
写文章

热门文章

  • 一篇文章成为递归大神:MySQL递归查询(with recursive) 26128
  • mybatis中判断传入的数组与集合是否为空+mybatis中Foreach的使用详解 18205
  • MySQL中的cast()函数用法 11752
  • layui下拉框select通过Ajax动态加载数据后,动态渲染选中的值 11475
  • 几个SQL的高级写法 6513

分类专栏

  • 数据库 15篇
  • 后端 24篇
  • 服务器 1篇
  • 安装 8篇
  • 前端 19篇
  • JDK8 1篇
  • MQ 1篇
  • bug 1篇

最新评论

  • docker安装开发常用软件MySQL,Redis,rabbitMQ

    Wmenghu: 卸载docker https://blog.csdn.net/qq_46264836/article/details/129713989?ops_request_misc=&request_id=&biz_id=102&utm_term=%E5%A6%82%E4%BD%95%E5%88%A0%E9%99%A4linux%E7%9A%84docker&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-6-129713989.142^v99^pc_search_result_base4&spm=1018.2226.3001.4187

  • 若依集成aj-captcha实现滑块验证码

    bug冲: ServiceException 呢?

  • 使用css优化页面横向/纵向滚动条样式

    Wmenghu: yes

  • 使用css优化页面横向/纵向滚动条样式

    努力学前端的南宫: less要不要无所谓,要了就是仅在当前页面生效。 是“scoped”吧?

  • 若依集成aj-captcha实现滑块验证码

    HCoJo: 哥们,我跟你的报错一模一样,解决了吗表情包

大家在看

  • 【机器学习】过拟合与欠拟合——如何优化模型性能 1928
  • ICM20948 DMP代码详解(47)
  • 课程记录9.26实验5 751
  • 最新版无忧二级域名分发源码,支持包月续费 213
  • PHP sort()、asort()、和 ksort() 有什么分别

最新文章

  • 前后端分离项目在Linux的部署方法、一台Nginx如何部署多个Web应用
  • Chat2DB下载、以及AI功能使用
  • 一篇文章成为递归大神:MySQL递归查询(with recursive)
2023年12篇
2022年62篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司南京网站关键字优化价格免费网站优化技巧网站排名优化奇迹易速达进行网站内部链接优化的技巧小说网站怎么优化排名承德优化网站外贸网站优化推广怎么做最好合肥市网站推广优化福州搜索网站优化南昌网站seo优化贴心服务孝南区网站优化作用福田全国网站优化方案大亚湾网站优化公司浦口区企业网站优化哪家好网站优化的过程新网站优化加盟从化网站排名推广优化公司上虞网站优化费用网站内容优化中关键词注意事项网站的关键词优化欢跃易速达进行网站关键词优化英文网站title优化扬州网站优化推广企业家用电器网站优化技巧网站建设优化重庆湖北网站优化有哪些武安网站优化费用卫辉网站自然优化南京市网站公告优化怎么样服务好的网站优化与推广方法歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化