前言

感觉前端验证码没有后端的严谨
这里使用java后端获取图片验证码方式(超简单,复制粘贴就可以用)

实现

效果一

随机验证码

效果二

运算验证码

效果三

动态中文,这里的中文会一闪一闪的

还有数字字母验证码、数字字母动态验证码

html中

<style>/** 验证码*/.code-img{width: 120px;height: 40px;cursor: pointer;}
</style>
<body><img src="captcha/code" class="code-img" title="看不清,换一张" onclick="refreshCaptcha()">
</body>
<script type="text/javascript">/*** ----------------------------------------------------------------------------------* 刷新验证码*/function refreshCaptcha(){$(".code-img").attr("src", "captcha/code?time="+Math.random());}
</script>

pom.xml依赖

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

java使用方式

package com.modules.controller.sys; // 改为自己的包目录import com.common.vo.Result;
import com.wf.captcha.ArithmeticCaptcha;
import com.wf.captcha.ChineseGifCaptcha;
import com.wf.captcha.GifCaptcha;
import com.wf.captcha.SpecCaptcha;
import com.wf.captcha.utils.CaptchaUtil;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** 验证码获取* @author yyq*/
@CrossOrigin(origins = "*",maxAge = 3600)// 前端请求发生跨域错误,加入这段处理
@Controller
public class CaptchaController {private static final String SESSION_KEY = "captcha";@RequestMapping("captcha/code")public void code(HttpServletRequest request, HttpServletResponse response) throws Exception {// 返回随机数验证码// CaptchaUtil.out(request, response);// 数字加减乘除/*ArithmeticCaptcha captcha = new ArithmeticCaptcha(120, 40);// 可自定义宽高(不设置宽高,则按img标签的大小适应)captcha.setLen(2);// 两位运算*/// 动态中文验证码/*ChineseGifCaptcha captcha = new ChineseGifCaptcha();captcha.setLen(2);// 两位运算*/// 英文与数字验证码//SpecCaptcha captcha = new SpecCaptcha();//英文与数字动态验证码//GifCaptcha captcha = new GifCaptcha();// 英文与数字验证码SpecCaptcha captcha = new SpecCaptcha();captcha.setLen(4);// 验证字符数// 结果String result = captcha.text();//System.out.println(result);// 这里可以单独获取base64格式的验证码//captcha.toBase64();// 将结果存储到session中(由于有些验证码没存储结果,则需要自己存储,记得要转小写,可参考自带校验方法.ver)request.getSession().setAttribute(SESSION_KEY, result.toLowerCase());// 响应到前端captcha.out(response.getOutputStream());/*** 【说明】** 不设置宽度,则按img的宽度来自适应** 其中我们可以设置自定义样式 captcha.set****();* 有font、type、width、height等**/}@RequestMapping("login")public Result login(HttpServletRequest request, String captcha){// 先验证账号、密码、验证码是否为空// 因为生成的时候存储在了session中,我们也可以直接拿值String code = (String) request.getSession().getAttribute(SESSION_KEY);//System.out.println(code);// 对验证码进行验证if (!CaptchaUtil.ver(captcha, request)) {return Result.fail("验证码不正确");}CaptchaUtil.clear(request);  // 清除session中的验证码// 验证账号、密码// 此处Result为个人封装返回对象return Result.success("登录成功");}}

注意:记得拦截器/过滤器把验证码接口放行!

java验证码实现方式,SpringBoot实现后端验证码,CaptchaUtil美观的后端随机、算术、中文动态验证码相关推荐

  1. java计算机毕业设计基于springboot+vue+elementUI的实验室管理系统(前后端分离)

    项目介绍 科技水平一直是体现一个国家强弱的重要标志,而科技的一点诞生地是实验室,如果能够更好的对实验室进行管理是很多实验室管理人员一直研究的一个问题.只有更加科学和合理化的利用实验室才能够更好的让科技 ...

  2. Captcha验证码使用,算术,中文,数字

    这里使用的是Springboot+vue的布置 pom.xml <!--验证码--><dependency><groupId>com.github.whvcse&l ...

  3. 用C#生成随机中文汉字验证码的基本原理

    前几天去申请免费QQ号码,突然发现申请表单中的验证码内容换成了中文,这叫真叫我大跌眼镜感到好笑,Moper上的猫儿们都大骂腾讯采用中文验证码.^_^ 我不得不佩服腾讯为了防止目前网络上横行的QQ号码自 ...

  4. 用C#生成中文汉字验证码的基本原理

    用C#生成中文汉字验证码的基本原理 前几天去申请免费qq号码,突然发现申请表单中的验证码内容换成了中文,这叫真叫我大跌眼镜感到好笑,moper上的猫儿们都大骂腾讯采用中文验证码.^_^     我不得 ...

  5. QQ汉字验证码原理(C#随机中文汉字验证码)

    摘自  http://www.itgrass.com/a/csharp/C-jq/200704/19-8441.html 用C#生成随机中文汉字验证码的基本原理 前几天去申请免费QQ号码,突然发现申请 ...

  6. Java中IDEA,Springboot实现手机获取验证码和倒计时

    问题一:我现在点击获取手机验证码,虽然现实正在发送 但是手机接收不到验证码 我试了很多 也不知道哪的问题 我们使用的是榛子云短信平台, 官网地址:http://smsow.zhenzikj.com 已 ...

  7. java校验码的设计_Java动态验证码单线设计的两种方法

    1.java的动态验证码我这里将介绍两种方法: 一:根据java本身提供的一种验证码的写法,这种呢只限于大家了解就可以了,因为java自带的模式编写的在实际开发中是没有意义的,所以只供学习一下就可以了 ...

  8. Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)十六(商品排序,Thymeleaf快速入门,商品详情页的展示)

    Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)十六(商品详情页的展示) 一.商品排序 1.完善页面信息 这是用来做排序的,默认按照综合排序 ...

  9. Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)二十二(下单和微信支付)

    Java网络商城项目 SpringBoot+SpringCloud+Vue 网络商城(SSM前后端分离项目)二十(下单) 0.学习目标 会调用订单系统接口 实现订单结算功能 实现微信支付功能 1.订单 ...

  10. java的动态验证码单线设计

    1.java的动态验证码我这里将介绍两种方法: 一:根据java本身提供的一种验证码的写法,这种呢只限于大家了解就可以了,因为java自带的模式编写的在实际开发中是没有意义的,所以只供学习一下就可以了 ...

最新文章

  1. Retrofit 找不到 GsonConverterFactory
  2. 获取浏览器窗口宽高问题总结
  3. 深度学习解决多视图非线性数据特征融合问题
  4. 通过100个单词掌握英语语法(十八)did
  5. MYSQL慢日志探索
  6. 关于WM_NCHITTEST消息
  7. 用Heartbeat实现web服务器高可用
  8. Centos 安装 禅道
  9. 计算机网络之网络层:7、距离向量算法RIP
  10. 谷歌智能助理能同时听懂两种语言 超过同类产品
  11. MonkeyScript使用教程
  12. 清华ACL'22 | 一文读懂刘知远所在实验室18篇论文详情
  13. C++卡常数之内存优化
  14. babyion 加载obj模型_如何使用BabylonJS加载OBJ或STL模型
  15. scratch编程记忆力小游戏
  16. springcloud 微服务的组成部分
  17. 大华sdk(java)上传人脸图片到人脸库,订阅人脸识别对比
  18. 【权威发布】360追日团队:Xshellghost技术分析——入侵感染供应链软件的大规模定向攻击
  19. 【HTML5】Web前端——第三课:HTML5 表单相关元素和属性
  20. 荣耀20特别版 鸿蒙,【首发】鸿蒙OS华为首款特别版荣耀20全球发布,3999元你会支持吗...

热门文章

  1. Linux没有可用软件包 p7zip、 p7zip-plugins
  2. Duilib--->Duilib库介绍总结概述
  3. Tornado使用模板
  4. php之sprintf的用法,PHP之sprintf函数用法详解_PHP
  5. 夏普android4.4.2连u盘,即插即用 夏普复合机U盘直接打印教学
  6. 安徽 计算机一级考试题库,计算机一级考试题库和答案
  7. 基于ORL库的PCA人脸识别系统matlab实现
  8. hbase数据库详解
  9. Mac下修改文档编码方式
  10. 百度云下载不限速方式集合