• springboot生成二维码的正确姿势-附视频附源码


    二维码的原理是什么,如何保证不重复?你有没有想过这样一件事,二维码是实现原理是什么?如何保证各个平台的二维码是唯一的?就算你的程序停止运行,但是你的二维码依然存在。设计上要保证唯一性,比如在物流等环境中扫码编程别人的二维码。

    二维码是我们当今社会非常重要的一项技术,不论是我们在买菜,网购,停车等等,都需要扫码,几乎覆盖我们生产、生活的方方面面。

    前言

    你有没有想过这样一些问题:

    二维码的原理是什么,如何保证不重复?保证各个平台的二维码是唯一

    你有没有想过这样一件事,二维码是实现原理是什么?

    就算你的程序停止运行,但是你的二维码依然存在。

    设计上要保证唯一性,比如在物流等容易损坏的环境中,如何保证二维码的准确性?

    初始化 SpringBoot 项目

    https://start.aliyun.com

    引入依赖

            
            <dependency>
                 <groupId>com.google.zxinggroupId>
                 <artifactId>coreartifactId>
                 <version>3.2.0version>
            dependency>
            <dependency>
                 <groupId>com.google.zxinggroupId>
                 <artifactId>javaseartifactId>
                 <version>3.2.0version>
            dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    编码

    编写工具类

    QrCodeController1 工具类

    package cn.net.javapub.springbootqr.demos.web.controller;
    
    import cn.net.javapub.springbootqr.demos.web.utils.QRCodeUtil1;
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    
    import javax.servlet.ServletOutputStream;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.File;
    
    /**
     * 作者 JavaPub
     */
    @Controller
    //@Deprecated
    public class QrCodeController1 {
    	/**
         * 根据 url 生成 普通二维码
         */
        @RequestMapping(value = "/createCommonQRCode")
        public void createCommonQRCode(HttpServletResponse response,HttpServletRequest request) throws Exception {
            ServletOutputStream stream = null;
            try {
                stream = response.getOutputStream();
                String url = request.getParameter("url");
                //使用工具类生成二维码
                QRCodeUtil1.encode(url, stream);
            } catch (Exception e) {
                e.getStackTrace();
            } finally {
                if (stream != null) {
                    stream.flush();
                    stream.close();
                }
            }
        }
     
        /**
         * 根据 url 生成 带有logo二维码
         */
        @RequestMapping(value = "/createLogoQRCode")
        public void createLogoQRCode(HttpServletResponse response,HttpServletRequest request) throws Exception {
            ServletOutputStream stream = null;
            try {
                stream = response.getOutputStream();
    //            String logoPath = Thread.currentThread().getContextClassLoader().getResource("").getPath() 
    //                    + "templates" + File.separator +"logo-"+UUID.randomUUID().toString().trim().replaceAll("-", "")+ ".jpg";
                String logoPath = Thread.currentThread().getContextClassLoader().getResource("").getPath() 
                        + "templates" + File.separator +"logo.jpg";
                String url = request.getParameter("url");
                //使用工具类生成二维码
                QRCodeUtil1.encode(url, logoPath, stream, true);
            } catch (Exception e) {
                e.getStackTrace();
            } finally {
                if (stream != null) {
                    stream.flush();
                    stream.close();
                }
            }
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63

    生成二维码

    附带功能化:

    资源共享

    视频:https://www.bilibili.com/video/BV1cw411w7Rk/

    源码:https://github.com/Rodert/springboot-qr/

  • 相关阅读:
    纳米软件介绍什么是LABVIEW?
    LQ0048 交换瓶子【无标题】
    apache集合工具类ListUtils
    RFID警用装备管理系统-公安警用装备管理可视化系统
    GPU释放显存
    创邻科技Galaxybase助力SPG推动知识图谱应用落地
    Python标准库(Python自带的模块和包)
    Websocket在Java中的实践——最小可行案例
    jdbc&数据库连接池&jdbcTemplate教程
    7.1 实现进程内存块枚举
  • 原文地址:https://blog.csdn.net/qq_40374604/article/details/133965561