我的编程空间,编程开发者的网络收藏夹
学习永远不晚

java:实现用户扫码二维码自动跳转指定链接功能

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

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

java:实现用户扫码二维码自动跳转指定链接功能

0. 引言

近来接到要实现链接转二维码的需求,通过提供二维码给用户,让用户扫描后自动访问指定的H5页面,从而实现业务流转,这样的功能其实在其他很多场景也会用到,比如资产管理系统中,扫码资产二维码,从而实现库存盘点、自动入库、自动出库等功能

今天就这类需求场景,给大家做一个讲解示例

1. 需求分析

首先这类场景,我们先把需求简化,其实根本是要客户访问某个链接,比如库存盘点的功能链接,但是又要与具体的实体绑定,比如要知道这个是对应到具体某一个资产的,但其实只是加一个参数就行了,比如 http://host/assets/check?no=123456, 其中“123456”就是资产编号,这样就对应上了。

也有不是与具体物品绑定的,而是与账号、用户等虚拟信息绑定的场景,比如某一类app推广场景,用户可以生成自己的推广二维码,扫码了二维码注册的新用户,奖励就会算到这个用户的账户中。这种场景就需要和用户绑定,但转换成链接也很好理解,比如http://host/user/invite?userId=123456,这里的userId就是分享二维码的用户的id, 这样只要新用户在访问这个链接是,就能记录是谁推广的

如上,我们的需求定义清楚了,就是要用户访问指定的链接,并且链接上可能会带上一定的参数,而这个链接的展现形式就不是直接显示给链接了,而是以二维码的形式展现。

那我们的核心诉求,就变成了指定的链接转换成二维码。那么,我们来看如何实现

2. 二维码的实质

二维码(QR码)是一种二维图形编码技术,它可以将包含数据的信息以模块化的方式编码成黑白像素点组成的矩阵图案。这些图案可以被扫描设备(如手机相机)捕捉并解码,将其中的数据恢复出来。

实质上,二维码是一种特定的编码方式,可以表示数字、文本、链接、图像等各种类型的数据。

二维码的工作原理基于计算机视觉和图像处理技术。当扫描设备读取二维码时,它首先会通过光源照亮二维码,然后使用感光器记录反射回的光线。这些原始图像数据经过图像预处理、边缘检测和图像分析等步骤后,被转换为数字信号并进行解码,从而恢复出原始的数据。

3. zxing工具实现

在java中,我们可以利用谷歌开源的zxing工具包来实现二维码的生成

zxing源码地址:https://github.com/zxing/zxing

引入jar包

        <dependency>            <groupId>com.google.zxinggroupId>            <artifactId>coreartifactId>            <version>3.3.0version>        dependency>

创建工具类

public class QRcodeUtil {    private static final String CHARSET = "utf-8";    private static final String FORMAT_NAME = "JPG";    // 二维码尺寸    private static final int QRCODE_SIZE = 300;        public static BufferedImage createImage(String url) throws Exception {        Hashtable hints = new Hashtable();        hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.H);        hints.put(EncodeHintType.CHARACTER_SET, CHARSET);        hints.put(EncodeHintType.MARGIN, 1);        BitMatrix bitMatrix = new MultiFormatWriter().encode(url, BarcodeFormat.QR_CODE, QRCODE_SIZE, QRCODE_SIZE,                hints);        int width = bitMatrix.getWidth();        int height = bitMatrix.getHeight();        BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);        for (int x = 0; x < width; x++) {            for (int y = 0; y < height; y++) {                image.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF);            }        }        return image;    }        public static void encode(String url, HttpServletResponse response)            throws Exception {        BufferedImage image = createImage(url);        ImageIO.write(image, FORMAT_NAME, response.getOutputStream());    }}

创建实现转换的接口

@GetMapping("code")    public void qrcode(String url, HttpServletResponse response) throws Exception {        QRcodeUtil.encode(url, response);    }

测试,访问该生成二维码的接口:http://localhost:8092/orders/code?url=http://www.baidu.com

这里我测试生成的链接是百度的,你可以根据自己的需求调整为自己的。需要注意的是,生成的链接一定要带上http://https://表明这是链接,而不是一段文字

生成的二维码如下所示
在这里插入图片描述

手机扫码,正常跳转百度,测试通过

在这里插入图片描述

总结

至此,针对生成二维码的功能就结束了,通过它我们可以实现各种便捷的交互功能,更多的拓展,大家可以动手尝试

来源地址:https://blog.csdn.net/qq_24950043/article/details/131259497

免责声明:

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

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

java:实现用户扫码二维码自动跳转指定链接功能

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录