当前位置: 首页 > news >正文

SpringBoot快速生成二维码

✨重磅!盹猫的个人小站正式上线啦~诚邀各位技术大佬前来探秘!✨

这里有:

  • 硬核技术干货:编程技巧、开发经验、踩坑指南,带你解锁技术新姿势!
  • 趣味开发日常:代码背后的脑洞故事、工具测评,让技术圈不再枯燥~
  • 独家资源分享:开源项目、学习资料包,助你打怪升级快人一步!

👉 点击直达→ 盹猫猫的个人小站 👈
🌟 来逛逛吧,说不定能挖到你正在找的技术宝藏哦~

目录

🎮 前言

📚 二维码的起源

⭐ 环境准备

🍄 Pom依赖

⭐ 代码步骤

🌿 普通二维码

🌿 带Logo二维码

❓ 疑问解答

📦 总结


欢迎来到 盹猫(>^ω^<)的博客

本篇文章主要介绍了

[SpringBoot生成二维码]
❤博主广交技术好友,喜欢文章的可以关注一下❤

🎮 前言

        二维码在生活中已经很常见了, 常用于快速的登录,邀请等操作,其本质是构建了可被扫码的图形化的快速分享通道,二维码可以由前端代码生成,也可以进行后端生成,所以这很容易打架!😂

当然如果你说过你是全栈工程师,那就只能是你了(老板内心偷乐). 

本篇文章就是记录由前端和后端生成二维码的方式,算了还是先记录后端吧.(这算不算挑起战争🤣)

📚 二维码的起源

        20 世纪 50 年代,为解决收银员手写记录商品售卖情况导致的结账效率慢的问题,日本人(该死)发明了条形码。条形码通过黑白相间、宽度不同的线条组合来存储信息,但由于长度有限,存储的信息很快不能满足社会需求,所以就有了二维码(二维码=记录更多信息的条形码).

⭐ 环境准备

名称版本
springboot3.5.6
jdk21
hutool-all5.8.35
zxing-core3.5.2

除了基础的springboot和jdk外,我们需要hutool-all(糊涂)包帮助快速生成二维码,而生成二维码的核心是用到了zxing-core这个包(一个套一个).

🍄 Pom依赖

    <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-logging</artifactId></exclusion></exclusions></dependency><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.2</version> </dependency><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.35</version></dependency></dependencies>

⭐ 代码步骤

生成二维码主要用到QrCodeUtil下的generate方法:

QrCodeUtil.generate(内容, 宽度, 高度,格式,目标);

内容: 可以是文本,超链接等

宽度和高度: 就是二维码图片的宽度和高度

格式: 生成的图片格式

目标:输出到哪里,可以是文件或者输出流.

🌿 普通二维码

@GetMapping("/hutool/qrcode")
public void generateQRCodeByHutool(@RequestParam String content,HttpServletResponse response
) throws Exception {//设置响应格式response.setContentType("image/png");//获取响应的输出流OutputStream os = response.getOutputStream();// 生成二维码并写入输出流QrCodeUtil.generate(content, 300, 300,"png",os);
}

如上述代码即输出一个普通的二维码宽度和高度为300,格式为png,输出到响应的输出流中.这样浏览器访问 /hutool/qrcode?content=内容  即可将内容输出为二维码图片.

🌿 带Logo二维码

除了宽度和高度外仍然有很多定义的属性,如logo,背景色等对二维码设置的属性,这样放在一个方法中就显得属性值太多了,所以定义了一个QrConfig属性进行配置:

QrCodeUtil.generate(内容, 配置类, 格式, 目标);

如下代码中,可以为二维码添加自定义的logo, logo是否为圆角等配置信息:

    @GetMapping("/hutool/qrcode/custom")public void generateCustomQRCode(@RequestParam String content,HttpServletResponse response) throws Exception {response.setContentType("image/png");OutputStream os = response.getOutputStream();// 配置二维码参数QrConfig config = new QrConfig(500, 500);config.setErrorCorrection(ErrorCorrectionLevel.L); // 容错等级config.setImg("/home/seaua/Desktop/logo.png"); // 加入logo(路径或InputStream)//圆角config.setRound(0.2);//间隔 二维码到边的留白config.setMargin(2);// 生成并输出QrCodeUtil.generate(content, config, "png", os);}

因为二维码容易被禁,所以这里就不上传效果了,自己动手试一试吧!

❓ 疑问解答

🤔 有很多二维码带有时效性(一段时间不能用了),如何生成带有时效性的二维码?

🖨  时效性二维码实际是时效性链接的生成和验证,我们可以生成的链接中添加过期的时间戳,并且对(时间戳+盐)进行MD5加密同样添加到链接中,这样用户扫描后,跳转到我们定义的链接后即可通过对(时间戳+盐)进行校验,同时与当前时间进行比较,就保证了二维码链接的时效性.

    public String generateQrCodeUrl(Long comboId,Long expireTime){//生成MD5加密串String sign = getMd5Sign(comboId,expireTime);//返回链接return redirect + "?comboId=" +comboId +"&expire=" +expireTime +"&sign=" +sign;}public String getMd5Sign(Long comboId,Long expireTime){//进行自定义格式签名,comboId为业务数据.return MD5.encode(comboId+":"+expireTime+":"+secret);}public Long getExpire(){//获取当前时间戳long timeStamp = System.currentTimeMillis();//设置过期时间return timeStamp + expire * 1000;}

📦 总结

        通过集成hutool依赖,可以很方便的在后端生成二维码,同时自定义二维码的多种属性,如果需要追求二维码的时效性,不要忘了对链接加签名验证哦!

上面就是所有文章内容了,如果内容对你有帮助,麻烦留一个赞👍和收藏⭐支持一下!


如果你对区块链内容感兴趣可以查看我的专栏:小试牛刀-区块链

感谢您的关注和收藏!!!!!!

http://www.dtcms.com/a/423342.html

相关文章:

  • 张家港做网站费用gta5办公室网站正在建设
  • c#网站开发框架有没有免费的推广平台
  • XCVU13P-2FLGA2577I Xilinx AMD VirtexUltraScale+ FPGA
  • K8s优先级调度实战:创建高优先级类
  • 爱站网关键词长尾挖掘工具pc端网站转手机站怎么做
  • 微信小程序的获取当前位置--步骤
  • Mac OS远程执行Shell命令技巧
  • 传媒公司网站设计方案班级网站建设的参考文献
  • 使用python技术获取淘宝商品信息应注意规避哪些风险?
  • 早晨网站建设两当网站建设
  • 网站建设定制开发推广网站一年域名费用多少钱
  • 与主机安全息息相关的EDR
  • Next.js项目演示(从零创建Next.js项目)Next.js入门实战
  • 将x减到0的最小操作数
  • wordpress小说站群齐鲁人才网泰安
  • 主机安全(核心目标、关键领域和最佳实践)
  • 在线生成固定悬浮导航的工具网站wordpress主题 搜索引擎
  • 【Linux系统】—— 环境变量
  • cors跨域问题解决
  • 【网络安全】四、中级篇:SQL注入详解
  • Ceph 分布式存储学习笔记(二):池管理、认证和授权管理与集群配置(下)
  • 网站做百科四川网络推广平台
  • 沈阳做网站的公司jsp做网站de后台管理
  • 驻马店网站开发公司电话管理咨询案例
  • MTK调试-马达
  • 深入探讨Spring Boot项目的构建与部署(指南三)
  • 曲靖网站推广做个什么样的网站
  • Vue3新变化
  • 共识算法的深度探索:从原理到实践的全面指南
  • 微算法科技(NASDAQ: MLGO)研发基于 DPoS 框架的 DL-DPoS(深度链接委托权益证明)机制,增强区块链的共识算法