QR 码最常见的应用便是为网站中一个特定的网页或下载页带来流量。因此,QR码常常会编码URL或网站地址,用户可以通过手机摄像头扫描,并在其浏览器中打开。URL可以直接编码在QR码中。
下面是使用QRGen和ZXing库来创建QR码的一个简单的HTTP Servlet的。QR码的内容可以由用户提供。
maven依赖配置
<!-- https://mvnrepository.com/artifact/net.glxn.qrgen/javase -->
<dependency>
<groupId>net.glxn.qrgen</groupId>
<artifactId>javase</artifactId>
<version>2.0</version>
</dependency>
index.jsp (二维码显示的jsp页面)
<img src="getCloudAutQRCode.action?url=url地址"/>
在这里,我们使用QRGen和ZXing从request.getParameter得到的文本生成QR码。一旦生成QR码流,我们就写入response中并设置适当的content-type
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import net.glxn.qrgen.core.image.ImageType;
import net.glxn.qrgen.javase.QRCode;
/**
* 云权限生成二维码
* @author shen.guoliang
* @version 1.0, 2017年5月22日
* @param response
* @param request
* @param session
* @return 参数说明
* @throws IOException
* @see [类,类#方法,类#成员]
* @since [产品/模块版本] 表示从那个版本开始就有这个方法
*/
@RequestMapping("getCloudAutQRCode.action")
public void getCloudAutQRCode(HttpServletResponse response, HttpServletRequest request, HttpSession session) throws IOException{
String url = request.getParameter("url");
System.out.println(url);
ByteArrayOutputStream out = QRCode.from(url).to(ImageType.PNG).withSize(200,200).stream();
response.setContentType("image/png");
response.setContentLength(out.size());
OutputStream outStream = response.getOutputStream();
outStream.write(out.toByteArray());
outStream.flush();
outStream.close();
}
以上代码的前提是,配置好springmvc请求映射条件。