首页 > 编程语言 >Java 生成验证码

Java 生成验证码

时间:2023-04-28 15:13:33浏览次数:30  
标签:Java checkCode int 验证码 生成 base new response

后端:

1、第一步生成验证码字符串

private String getCheckCode() {
    String base = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    int size = base.length();
    Random r = new Random();
    StringBuilder sb = new StringBuilder();
    for (int i = 1; i <= 4; i++) {
        //产生0到size-1的随机值
        int index = r.nextInt(size);
        //在base字符串中获取下标为index的字符
        char c = base.charAt(index);
        //将c放入到StringBuffer中去
        sb.append(c);
    }
    return sb.toString();
}

 

2、第二步生成背景板

public void generateCheckCode(HttpServletRequest request, HttpServletResponse response) throws IOException {
        //服务器通知浏览器不要缓存
        response.setHeader("pragma", "no-cache");
        response.setHeader("cache-control", "no-cache");
        response.setHeader("expires", "0");

        //在内存中创建一个长80,宽30的图片,默认黑色背景
        //参数一:长
        //参数二:宽
        //参数三:颜色
        int width = 80;
        int height = 30;
        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);

        //获取画笔
        Graphics g = image.getGraphics();
        //设置画笔颜色为灰色
        g.setColor(Color.BLACK);
        //填充图片
        g.fillRect(0, 0, width, height);

        //产生4个随机验证码,12Ey
        String checkCode = getCheckCode();
        //将验证码放入HttpSession中
        request.getSession().setAttribute("checkCode", checkCode);

        //设置画笔颜色为黄色
        g.setColor(Color.WHITE);
        //设置字体的小大
        g.setFont(new Font("黑体", Font.BOLD, 24));
        //向图片上写入验证码
        g.drawString(checkCode, 15, 25);

        //将内存中的图片输出到浏览器
        //参数一:图片对象
        //参数二:图片的格式,如PNG,JPG,GIF
        //参数三:图片输出到哪里去
        ImageIO.write(image, "PNG", response.getOutputStream());
    }

前端:

axios.create({
  // baseURL: '/', // api的base_Url
  // 后端的请求路径
  baseURL: 'http://localhost:8090', // api的base_Url
  timeout: 50000 // 请求超时时间
  headers: {'Content-Type': 'application/json'},
  responseType: 'blob'
})
// 获取对象url
this.qrcodeSrc = window.URL.createObjectURL(res.data) // 给变量赋值

 

标签:Java,checkCode,int,验证码,生成,base,new,response
From: https://www.cnblogs.com/gdwm-tyf/p/17362251.html

相关文章

  • Could not create the Java virtual machine解决
    CouldnotcreatetheJavavirtualmachine解决原文链接:https://blog.csdn.net/weixin_42031680/article/details/118652127CouldnotcreatetheJavavirtualmachine的解决文章目录CouldnotcreatetheJavavirtualmachine的解决报错描述报错截图解决方案一:1.......
  • JavaFx 生成二维码工具类封装
    原文地址:JavaFx生成二维码工具类封装-Stars-One的杂货小窝之前星之音乐下载器有需要生成二维码功能,当时用的是一个开源库来实现的,但是没过多久,发现那个库依赖太多,有个http-client的依赖,把软件都搞大了一倍,而且有时候开发的时候下载依赖还报错,就想换个方案于是在网上......
  • 基础备忘(生成EXCEL和CSV文件)
    生成EXCEL和CSV文件通过POI操作生成EXCEL本身没有什么难度,主要记住以下几个概念就行。引包,excel本身有不同版本,POI包也有所不同。workbook、sheet、row、cell、style之间的关系添加maven引用<dependency><groupId>com.opencsv</groupId><artif......
  • java -jar XXX.jar 没有主清单属性以及找不到或无法加载主类的问题
    java-jarXXX.jar没有主清单属性以及找不到或无法加载主类的问题原文链接:https://blog.csdn.net/Mrzhuangr/article/details/124731024文章目录一、问题陈述二、解决方法1、方法一(问题没有真正解决)2、方法二(最终解决了问题)一、问题陈述环境:Idea2021jdk1.8......
  • Java 生成验证码
    1、第一步生成背景板publicvoidgenerateCheckCode(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException{//服务器通知浏览器不要缓存response.setHeader("pragma","no-cache");response.setHeader("cache-con......
  • Java中二进制与十进制转换
    转: Java中二进制与十进制转换 十进制转二进制(除2取余,直到商小于1,逆序排序)如138转二进制138÷2=69 余069÷2=34余134÷2=17余017÷2=8余18÷2=4余04÷2=2余02÷2=1余01÷2= 0余1然后逆序排序1 0  0  0......
  • 中级软件设计师软考备考资源;解决org.apache.ibatis.binding.BindingException: Invali
    中级软件设计师软考备考资源软考资源在百度网盘上org.apache.ibatis.binding.BindingException:Invalidboundstatement(notfound)问题即在mybatis中dao接口与mapper配置文件在做映射绑定的时候出现问题,简单说,就是接口与xml要么是找不到,要么是找到了却匹配不到。这是一个很容易......
  • Unknown run configuration type SpringBootApplicationConfigurationType;Servlet Ser
    UnknownrunconfigurationtypeSpringBootApplicationConfigurationType社区版的idea自己安装插件,去配置大家可分享关于Java微服务相关知识,包括但不限于Java微服务开发经验、架构组成、技术交流、中间件等内容,我们鼓励springcloud架构为基础发散出击,从而达到技术积累的目的,快来沉......
  • Provisional heads are shown、NullPointerException空指针异常?堆栈与队列的区别?Java
    Provisionalheadsareshown排查是否插件拦截,我的以前没有这种,所以排除本地网络节点问题,连接不到图片服务器,以下是解决方法:1.进入到C盘Windows文件夹System32/drivers/etc目录下,打开hosts文件,绑定下2.改下本地dns为公共dns网络节点导致的问题,一般为运营商导致,产生问题的原因为......
  • JAVA+MySQL做一个图书信息管理系统【二次开发】【更新版2.0】【纯java】、Java技术分
    JAVA+MySQL做一个图书信息管理系统【二次开发】【更新版2.0】【纯java】Java技术分享Java技术er集合啦!大家可分享关于Java技术知识,包括但不限于微服务,分布式等前沿技术,快来沉淀自己的技术,一起写出未来吧!你可以从以下几个方面着手(不强制),或者根据自己对话题主题的理解进行创作,参考如......