我写过一篇文章是java代码后端自己传入链接由本地代码生成二维码图片并保存在本地,今天我们实现调用第三方在线生成二维码
首先我们找到一个在线生成二维码的api接口,因为这样的api接口有许多,这里我提供一个参考链接接口:
http://www.liantu.com/pingtai/
接下来就是实际操作了:
首先我们准备一个jsp页面操作,页面一般放在WEB—INF下的文件中这里随意不过你的路径一定要看清楚。
这里的原理是前端页面输入要转换成二维码的连接,因为可能需要将链接保存,或者添加一些其他的属性我们需要走一遍后台从后台传递给前端数据二维码的地址显示。
<%--
Created by IntelliJ IDEA.
Date: 2018/7/23
Time: 13:58
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<script src="/assets/js/jquery.min.js"></script>
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<h2>生成二维码</h2>
<form >
<table>
<tr>
<td>请输入链接:</td>
<td><input type="text" name="shortUrl" id="shortUrl" value="${qrCode.shortUrl}"></td>
</tr>
<tr>
<img id="imgSrc" src="${qrCode.imgSrc}"/>
</tr>
<tr>
<td><input type="button" value="生成二维码" onclick="getQrCode()"></td>
</tr>
</table>
</form>
</body>
</html>
后台代码:注意:我这里用的是springMVC框架进行页面的请求跳转。如果你不想导包自己搭建环境,你可以参考SpringMVC文件上传直接搭建环境也是很快。地址:https://blog.csdn.net/weixin_41092717/article/details/81080152,自己搭建环境记得配置xml文件和web.xml文件包扫描等。如果不想用框架,使用最原生的servlet+ajax在线生成二维码同样博主的文章中也有地址:
https://blog.csdn.net/weixin_41092717/article/details/81333211
package com.youyuan.qrCode;
import java.io.Serializable;
/**
* Created on 2018/7/23.
* ZCL
*/
public class QrCode implements Serializable{
private int qcID;
private String shortUrl;
private String imgSrc;
private String createTime;
public int getQcID() {
return qcID;
}
public void setQcID(int qcID) {
this.qcID = qcID;
}
public String getShortUrl() {
return shortUrl;
}
public void setShortUrl(String shortUrl) {
this.shortUrl = shortUrl;
}
public String getImgSrc() {
return imgSrc;
}
public void setImgSrc(String imgSrc) {
this.imgSrc = imgSrc;
}
public String getCreateTime() {
return createTime;
}
public void setCreateTime(String createTime) {
this.createTime = createTime;
}
@Override
public String toString() {
return "QrCode{" +
"qcID=" + qcID +
", shortUrl='" + shortUrl + '\'' +
", imgSrc='" + imgSrc + '\'' +
", createTime='" + createTime + '\'' +
'}';
}
}
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* Created by on 2018/7/23.
* ZCL
*/
@Controller
@RequestMapping("/qrCode")
public class QrCodeController {
//这是因为页面在WEB-INF下无法直接访问,通过后台跳转到二维码生成页
@RequestMapping("/getQrcodePage")
public ModelAndView getQrcodePage(HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("去二维码生成页");
ModelAndView mv = new ModelAndView();
try {
mv.setViewName("/admin/qrCode/qrCode");
} catch (Exception e) {
e.printStackTrace();
}
return mv;
}
@RequestMapping("/getQrCode")
public ModelAndView getQrCode(HttpServletRequest request, HttpServletResponse response) throws Exception {
System.out.println("生成二维码页");
ModelAndView mv = new ModelAndView();
String shortUrl = request.getParameter("shortUrl");
String imgSrc = request.getParameter("imgSrc");
QrCode qrCode = new QrCode();
qrCode.setShortUrl(shortUrl);
qrCode.setImgSrc("http://qr.liantu.com/api.php?text="+shortUrl);
//取到数据之后你可以走数据库 dao层进行数据操作 这里随意案例没有走数据库直接返回前端
System.out.println(qrCode.toString());
try {
//如果你没有使用框架返回数据你可以将数据放request.setAttribute("qrCode",qrCode);
//前台页面同样取到图片路径显示
mv.setViewName("/admin/qrCode/qrCode");
mv.addObject("qrCode",qrCode);
} catch (Exception e) {
e.printStackTrace();
}
return mv;
}
}
启动测试:
如此测试完成,希望能帮助到需要的你。
版权声明:本文为博主原创文章,转载请说明转载来源。https://blog.csdn.net/weixin_41092717/article/details/81222903