如何使用java、servlet创建二维码-mile米乐体育
归功于智能手机,qr码逐渐成为主流,它们正变得越来越有用。从候车亭、产品包装、家装卖场、汽车到很多网站,都在自己的网页集成qr码,让人们快速找到它们。随着智能手机的用户量日益增长,二维码的使用正在呈指数上升。
让我们来看看qr码的简要概述,以及如何在java中生成它们。
qr码介绍
qr码(quick response 快速响应码)是矩阵条形码(或二维码)的一种类型,最先为于汽车行业而设计。得益于其快速读取性和较大的存储容量,qr码开始在汽车行业以外流行。图案是在白色背景上由有序排列的黑色方块组成。被编码是的数据可以是四种标准数据(数字、字母数字、字节/二进制、汉字)中的一种,但也可以通过扩展来实现更多数据。
丰田子公司denso wave在1994年发明了qr码,用来追踪生产线上的车辆。从此,qr码成为了最受欢迎的二维条形码直译。qr码的设计支持对内容进行高速解码。
在java中实现qr码的hello world
zebra crossing(zxing)是一个很棒的,几乎可以在所有平台(android、javase、iphone、rim、symbian)中可以用来生成、解析qr码的开源库。但是,如果你只是要生成简单的qr码,利用它反而不好实现。
qrgen在zxing基础上开发,这个库使得利用java生成qr码变为小菜一碟。它需要依赖zxing,所以生成图案时你同时需要zxing和qrgen的jar包。
在zxing的下载页面中你会找不到jar文件。必须要通过源代码自己编译,我帮你生成好了,链接在这里。
- zxing-core-1.7.jar (346 kb)
- zxing-javase-1.7.jar (21 kb)
qrgen的jar包可以通过米乐app官网登录官网下载。
把他们导入到classpath中,然后执行以下java代码:
package net.viralpatel.qrcode; import java.io.bytearrayoutputstream; import java.io.file; import java.io.filenotfoundexception; import java.io.fileoutputstream; import java.io.ioexception; import net.glxn.qrgen.qrcode; import net.glxn.qrgen.image.imagetype; public class main { public static void main(string[] args) { bytearrayoutputstream out = qrcode.from("hello world").to(imagetype.png).stream(); try { fileoutputstream fout = new fileoutputstream(new file( "c:qr_code.jpg")); fout.write(out.tobytearray()); fout.flush(); fout.close(); } catch (filenotfoundexception e) { // do logging } catch (ioexception e) { // do logging } } }
这些代码非常直观。我们用qrcode类来生成qr码流,并通过字节流写入到文件c:\qr_code.jpg中。
下载源代码
- qr_code_java.zip (339 kb)
如果你打开这个jpeg文件,并用你的iphone或android二维码工具来扫一扫,你会看到一个很酷的“hello world”
除了使用qrgen的api来生成数据流,我们还可以使用下面的api来创建qr码:
// get qr file from text using defaults file file = qrcode.from("hello world").file(); // get qr stream from text using defaults bytearrayoutputstream stream = qrcode.from("hello world").stream(); // override the image type to be jpg qrcode.from("hello world").to(imagetype.jpg).file(); qrcode.from("hello world").to(imagetype.jpg).stream(); // override image size to be 250x250 qrcode.from("hello world").withsize(250, 250).file(); qrcode.from("hello world").withsize(250, 250).stream(); // override size and image type qrcode.from("hello world").to(imagetype.gif).withsize(250, 250).file(); qrcode.from("hello world").to(imagetype.gif).withsize(250, 250).stream();
在java中生成网站链接(url)的qr码
qr 码最常见的应用便是为网站中一个特定的网页或下载页带来流量。因此,qr码常常会编码url或网站地址,用户可以通过手机摄像头扫描,并在其浏览器中打开。url可以直接编码在qr码中。在上面的的hello world示例中,只需把“hello world”这个字符串替换为需要编码的url。下面是代码片段:
bytearrayoutputstream out = qrcode.from("http://viralpatel.net").to(imagetype.png).stream();
servlet中的qr码
大多数时候,你需要在网站上动态的生成一些qr码。我们已经看到java中生成qr码是多么的容易。现在,我们看看如何把生成qr码集成到java servlet中。
下面是使用qrgen和zxing库来创建qr码的一个简单的http servlet的。qr码的内容可以由用户提供。
该index.jsp文件包含一个简单的html表单,其中有输入框和一个提交按钮。用户可以输入他希望用于编码的的文本并提交。
index.jsp
秘密就在qrcodeservlet.java里。在这里,我们使用qrgen和zxing从request.getparameter得到的文本生成qr码。一旦生成qr码流,我们就写入response中并设置适当的content-type。
qrcodeservlet.java
package net.viralpatel.qrcodes; import java.io.bytearrayoutputstream; import java.io.file; import java.io.filenotfoundexception; import java.io.fileoutputstream; 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.qrcode; import net.glxn.qrgen.image.imagetype; public class qrcodeservlet extends httpservlet { @override protected void doget(httpservletrequest request, httpservletresponse response) throws servletexception, ioexception { string qrtext = request.getparameter("qrtext"); bytearrayoutputstream out = qrcode.from(qrtext).to(imagetype.png).stream(); response.setcontenttype("image/png"); response.setcontentlength(out.size()); outputstream outstream = response.getoutputstream(); outstream.write(out.tobytearray()); outstream.flush(); outstream.close(); } }
使用web.xml将/qrservlet请求映射到qrcodeservlet.java。
web.xml
qr_code_servlet index.jsp qrcodeservlet net.viralpatel.qrcodes.qrcodeservlet qrcodeservlet /qrservlet
下载源代码
- qr_code_servlet.zip (340 kb)
输出
总结
在java中生成qr码不仅十分容易,还非常方便。将这一功能集成到任何现有的java的应用中简直是小菜一碟!在本教程中,我们学习了如何在java和servlet中生成qr码。
你可以试试扫一扫下面的二维码关注码农网微信: