1.pom.xml导入zxing包
<dependency> <groupId>com.google.zxing</groupId> <artifactId>core</artifactId> <version>3.2.1</version> </dependency>
2.按钮单击后生成二维码弹框
<a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="qrcode">查看二维码</a>
3.layui代码
/** * 点击查看二维码 * * @param data 点击按钮时候的行数据 */ xx.openQrcode = function (data) { func.open({ title: '查看二维码', content: Feng.ctxPath + '/xx/qrcode?pjid=' + data.id, tableId: xx.tableId }); };
4.java代码返回html
/** * 二维码弹框 * * @author linan * @Date 2020-03-09 */ @RequestMapping("/qrcode") public String qrcode(String pjid, Model model) { model.addAttribute("item",pjid); return PREFIX + "/qrcode.html"; }
5.qrcode.html
@layout("/common/_container.html",{js:["/assets/jnProject/jnProject.js"],css:["/assets/jnProject/qrcode.css"]}){ <div class="layui-col-sm12 layui-col-md6 layui-col-sm-offset0 layui-col-md-offset3" style="padding: 20px; background-color: #F2F2F2;margin-top:20vh"> <div class="layui-row layui-col-space15"> <div class="layui-col-sm12 layui-col-md3"> <div class="layui-card" style="height: 170px;"> <div class="layui-card-header"><i class="layui-icon layui-icon-cols"></i>二维码</div> <div class="layui-card-body"> <img id="qr" style="width: 100%;margin-top: 17px" src="${ctxPath}/xx/jnProject_qr/${item}" /> </div> </div> </div> <div class="layui-col-sm12 layui-col-md9"> <div class="layui-card"> <div class="layui-card-header"><i class="layui-icon layui-icon-link"></i>链接</div> <div class="layui-card-body"> <div class="layui-form-item"> <input id="url" type="text" value="${ctxPath}/xx/add?id=${item}" class="layui-input" /> </div> <div class="layui-form-item"> <button id="copy" class="layui-btn" >复制</button><button id="open" class="layui-btn" >打开</button> </div> </div> </div> </div> </div> </div> @}
6.image访问地址生成二维码
/** * 查看项目二维码 */ @RequestMapping("/jnProject_qr/{id}") public void deptQr(@PathVariable Long id, HttpServletResponse resp) throws IOException { ServletOutputStream stream = null; String qrRedirec="http://xxx";//二维码访问链接地址 try { stream = resp.getOutputStream(); Map<EncodeHintType, Object> hints = new HashMap<>(); //编码 hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); //边框距 hints.put(EncodeHintType.MARGIN, 0); QRCodeWriter qrCodeWriter = new QRCodeWriter(); JnProject jnProject = this.jnProjectService.getById(id); String content=qrRedirec+"?id="+id; BitMatrix bm = qrCodeWriter.encode(content, BarcodeFormat.QR_CODE, 500, 500, hints); MatrixToImageWriter.writeToStream(bm, "png", stream,""); } catch (Exception e) { // log.error("二维码生成异常:{}",e.fillInStackTrace()); // throw new GunsException(GunsExceptionEnum.valueOf("审核无效")); e.printStackTrace(); } finally { if (stream != null) { stream.flush(); stream.close(); } } }
效果: