文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

使用Spring Boot怎么样实现一个验证码生成功能

2023-05-31 12:26

关注

这篇文章给大家介绍使用Spring Boot怎么样实现一个验证码生成功能,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

1、验证码生成类

import java.awt.*;import java.awt.image.BufferedImage;import java.io.OutputStream;import java.util.HashMap;import java.util.Map;import java.util.Random;public class ImageCode { private static char mapTable[] = {   '0', '1', '2', '3', '4', '5',   '6', '7', '8', '9', '0', '1',   '2', '3', '4', '5', '6', '7',   '8', '9'}; public static Map<String, Object> getImageCode(int width, int height, OutputStream os) {  Map<String,Object> returnMap = new HashMap<String, Object>();  if (width <= 0) width = 60;  if (height <= 0) height = 20;  BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);  // 获取图形上下文  Graphics g = image.getGraphics();  //生成随机类  Random random = new Random();  // 设定背景色  g.setColor(getRandColor(200, 250));  g.fillRect(0, 0, width, height);  //设定字体  g.setFont(new Font("Times New Roman", Font.PLAIN, 18));  // 随机产生168条干扰线,使图象中的认证码不易被其它程序探测到  g.setColor(getRandColor(160, 200));  for (int i = 0; i < 168; i++) {   int x = random.nextInt(width);   int y = random.nextInt(height);   int xl = random.nextInt(12);   int yl = random.nextInt(12);   g.drawLine(x, y, x + xl, y + yl);  }  //取随机产生的码  String strEnsure = "";  //4代表4位验证码,如果要生成更多位的认证码,则加大数值  for (int i = 0; i < 4; ++i) {   strEnsure += mapTable[(int) (mapTable.length * Math.random())];   // 将认证码显示到图象中   g.setColor(new Color(20 + random.nextInt(110), 20 + random.nextInt(110), 20 + random.nextInt(110)));   //直接生成   String str = strEnsure.substring(i, i + 1);   g.drawString(str, 13 * i + 6, 16);  }  // 释放图形上下文  g.dispose();  returnMap.put("image",image);  returnMap.put("strEnsure",strEnsure);  return returnMap; } //给定范围获得随机颜色 static Color getRandColor(int fc, int bc) {  Random random = new Random();  if (fc > 255) fc = 255;  if (bc > 255) bc = 255;  int r = fc + random.nextInt(bc - fc);  int g = fc + random.nextInt(bc - fc);  int b = fc + random.nextInt(bc - fc);  return new Color(r, g, b); }}

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 资料下载
  • 历年真题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯