归功于智能手机,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代码:

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;/*** 生成二维码* @author chenhong* */
public class Main {public static void main(String[] args) {createQB("Hello QB","string.png");createQB("http://www.baidu.com","url.png");}/*** 生成二维码* @author chenhong* @param* content 二维码内容* @param* fileName 二维码文件名* */public static void createQB(String content,String fileName){ByteArrayOutputStream out = QRCode.from(content).to(ImageType.PNG).stream();try {FileOutputStream fout = new FileOutputStream(new File(fileName));fout.write(out.toByteArray());fout.flush();fout.close();} catch (FileNotFoundException e) {// Do Logging} catch (IOException e) {// Do Logging}}}

Servlet中的QR码

大多数时候,你需要在网站上动态的生成一些QR码。我们已经看到Java中生成QR码是多么的容易。现在,我们看看如何把生成QR码集成到Java Servlet中。

下面是使用QRGen和ZXing库来创建QR码的一个简单的HTTP Servlet的。QR码的内容可以由用户提供。

该index.jsp文件包含一个简单的HTML表单,其中有输入框和一个提交按钮。用户可以输入他希望用于编码的的文本并提交。

index.jsp

<form action="QRCodeServlet" method="get"><p>Enter Text to create QR Code</p><input name="qrtext" type="text"><input value="Generate QR Code" type="submit">
</form>

秘密就在QRCodeServlet.java里。在这里,我们使用QRGen和ZXing从request.getParameter得到的文本生成QR码。一旦生成QR码流,我们就写入response中并设置适当的content-type。

QRCodeServlet

</pre><pre name="code" class="java">protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// TODO Auto-generated method stubString 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();}

源代码+jar包下载地址:http://download.csdn.net/detail/ch717828/9007145

转自:http://www.importnew.com/15028.html

使用Java、Servlet 生成二维码相关推荐

  1. 在java中生成二维码,并直接输出到jsp页面

    在java中生成的二维码不存到磁盘里要直接输出到页面上,这就需要把生成的二维码直接以流的形式输出到页面上,我用的是myeclipse 和 tomcat 它的原理是:在加载页面时,根据img的src(c ...

  2. java实现生成二维码及扫码登录

    java实现生成二维码及扫码登录 1. 场景描述 2. 实现思路 3. 代码实现过程 3.1 pom.xml 3.2 二维码工具类 3.3 生成二维码并下载为图片 3.4 扫码登录 1. 场景描述   ...

  3. Java解析生成二维码-log

    Java解析生成二维码 1.pom.xml依赖 <!-- 引入二维码相关的依赖--><dependency><groupId>com.google.zxing< ...

  4. Java后台生成二维码

    今天做了一下生成二维码的两种方式 第一种就是前台调用接口去生成二维码,第二种就是后台生成二维码 既然我们是后台开发人员,我这里就写后台代码了,后台代码实现很简单,说白了大家调用一个工具类就OK啦. 工 ...

  5. java springMVC生成二维码

    Zxing是Google提供的工具,提供了二维码的生成与解析的方法,现在使用Java利用Zxing生成二维码 1),二维码的生成 将Zxing-core.jar 包加入到classpath下. 我的下 ...

  6. java零碎要点---用java实现生成二维码,与解析代码实现

    创梦综合技术qq交流群:CreDream:251572072 二维码,是一种采用黑白相间的平面几何图形通过相应的编码算法来记录文字.图片.网址等信息的条码图片.如下图 二维码的特点: 1.  高密度编 ...

  7. java后台生成二维码以及页面显示二维码方式

    上篇文章已经说明并发布了后台生成二维码工具类,大家可以直接去看或者去拿. 地址:最简单实用的java生成二维码工具 现在呢说明页面上展示二维码的两种方式: 1.使用img标签的src来请求生成二维码, ...

  8. java实现生成二维码

    1.引入 maven 坐标 <!--Java 生成二维码 --><dependency><groupId>com.google.zxing</groupId& ...

  9. Java端生成二维码

    项目中功能要求生成一个二维码来访问某地址,特封装一个二维码生成工具类 使用开源的一维/二维码图形处理库zxing GayHub地址:https://github.com/zxing/zxing 1.引 ...

最新文章

  1. 图解深度学习(图灵出品)
  2. Redux 学习笔记
  3. POJ - 1509 Glass Beads
  4. php连接postgresql
  5. 零基础跟我学前端之css3基础
  6. Druid源码分析系列1:dataSource.init()的准备工作
  7. Spring系列之Bean生命周期
  8. c语言字符笛卡尔积,JavaScript笛卡尔积超简单实现算法示例
  9. Servlet 数据库访问
  10. js面向对象编程:命名空间
  11. 自动化测试,面试【必备题】
  12. 离散数学复习--第二章:一阶逻辑
  13. 3DMax的Vray模型如何导入到Unity
  14. 数能一体化物联网感知层路由协议研究
  15. 书城项目 软件可行性分析报告
  16. maze走迷宫-C++
  17. 中兴手机怎么与计算机连接网络连接不上,ZTE中兴为什么wifi连接上却不能上网...
  18. 【离散数学】第二章 命题逻辑的推理理论
  19. 小程序源码:团长头像制作小程序
  20. 一分钟了解Mysql的间隙锁——《深究Mysql锁》

热门文章

  1. 西湖大学2023年博士研究生招生简章发布!199位博导,400个名额!
  2. 微信公众号第三方开发之七提交全网发布
  3. 车牌识别的N种办法——从OCR到深度学习
  4. 导航上显示某个地点已关闭什么意思_苹果手机中这4个功能最好立马关闭,不然手机耗电特别快...
  5. 谎言的重灾区!面试官问我有无男女朋友我该怎么回答!
  6. BUAA_OO第一单元总结性博客作业——表达式求导
  7. 双11,美的、格力们又盯上了厨房小家电
  8. WPF Window 窗口获得焦点和失去焦点事件
  9. 如何用matlaab把csv转为mat文件_打印、复印还不会,如何在办公室里混?全程详细教学...
  10. 支付宝沙箱环境支付介绍