如何使用java、servlet创建二维码-亚博电竞手机版

归功于智能手机,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包可以通过亚博电竞手机版官网下载。

把他们导入到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

enter text to create qr code

秘密就在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码。

你可以试试扫一扫下面的二维码关注码农网微信:

展开全文
内容来源于互联网和用户投稿,文章中一旦含有亚博电竞手机版的联系方式务必识别真假,本站仅做信息展示不承担任何相关责任,如有侵权或涉及法律问题请联系亚博电竞手机版删除

最新文章

网站地图