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=" 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();
}
}
}
效果:
