Zxing实现在线二维码生成程序
2015-07-25 17:51
465 查看
关于zxing的使用请参考笔者的另外一篇博文:Java二维码生成与解码工具Zxing使用
首先我们来看看效果:
在文本框中输入内容后点击生成二维码按钮,应用自动对文本框中的内容进行编码,生成二维码图片显示在下方。
要实现这个功能并不复杂,大致思路如下:
点击按钮时,获取文本框中的内容提交到一个Servlet进行处理,在该Servlet中使用Zxing工具库对内容进行编码,返回一张图片即可。接下来看一下这个程序的实现步骤。
1.新建一个Java Dynamic Web Project。
2.在WebContent根目录下新建一个index.jsp页面,即为上面动态图页面:
这里笔者使用到了Jquery库,对Jquery不熟的朋友可以先去简单的了解一下。
我们使用img标签在页面中显示一张图片:
我们把img标签的src属性指定为一个http请求
3.配置二维码生成Servlet。
打开web.xml文件,为请求
剩下的内容就是编写二维码生成逻辑代码,新建一个Servlet,类名
至此为止这个程序已经完成,很简单吧,需要注意一点,我们要把core-3.2.0.jar和javase-3.2.0.jar两个jar包添加到WEB-INF/lib目录下,项目结构如下图所示:
首先我们来看看效果:
在文本框中输入内容后点击生成二维码按钮,应用自动对文本框中的内容进行编码,生成二维码图片显示在下方。
要实现这个功能并不复杂,大致思路如下:
点击按钮时,获取文本框中的内容提交到一个Servlet进行处理,在该Servlet中使用Zxing工具库对内容进行编码,返回一张图片即可。接下来看一下这个程序的实现步骤。
1.新建一个Java Dynamic Web Project。
2.在WebContent根目录下新建一个index.jsp页面,即为上面动态图页面:
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>二维码在线生成工具</title> <script type="text/javascript" src="js/jquery-2.0.3.js"></script> </head> <body> <textarea rows="10" cols="50" id="BarCodeContent"> </textarea> <br/> <button id="GenBarCode">生成二维码</button> <br/> <img id="BarCode" alt="BarCode" > <script type="text/javascript"> $("#BarCode").hide(); $("#GenBarCode").click(function(){ var content = $("#BarCodeContent").val(); content = content.trim(); if(content == "" ) { alert("请输入内容"); return; } var path = "genBarCode.do?content='" + content + "'" $("#BarCode").attr("src",path); $("#BarCode").show(); }); </script> </body> </html>
这里笔者使用到了Jquery库,对Jquery不熟的朋友可以先去简单的了解一下。
我们使用img标签在页面中显示一张图片:
<img id="BarCode" alt="BarCode" >
$("#BarCode").hide();通过这段代码让图片处于隐藏状态,和一般做法不同的是这里我们并不指定图片的src属性,当用户点击按钮时,我们响应按钮的点击事件,在事件处理代码中,设置该img标签的src属性并把该图片设置为显示状态:
$("#GenBarCode").click(function(){ var content = $("#BarCodeContent").val(); content = content.trim(); if(content == "" ) { alert("请输入内容"); return; } var path = "genBarCode.do?content='" + content + "'" $("#BarCode").attr("src",path); $("#BarCode").show(); });
我们把img标签的src属性指定为一个http请求
genBarCode.do,以编辑框中的内容作为参数,接下我们在web.xml文件中配置一个servlet处理该请求。
3.配置二维码生成Servlet。
打开web.xml文件,为请求
genBarCode.do配置一个servlet,内容如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>zxing_web</display-name> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>genBarCode</servlet-name> <servlet-class> com.csii.zxing.servlet.GenBarCodeServlet </servlet-class> </servlet> <servlet-mapping> <servlet-name>genBarCode</servlet-name> <url-pattern>/genBarCode.do</url-pattern> </servlet-mapping> </web-app>
剩下的内容就是编写二维码生成逻辑代码,新建一个Servlet,类名
com.csii.zxing.servlet.GenBarCodeServlet,内容如下:
package com.csii.zxing.servlet; import java.io.IOException; import java.io.OutputStream; import java.util.Hashtable; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.google.zxing.BarcodeFormat; import com.google.zxing.EncodeHintType; import com.google.zxing.MultiFormatWriter; import com.google.zxing.WriterException; import com.google.zxing.client.j2se.MatrixToImageWriter; import com.google.zxing.common.BitMatrix; public class GenBarCodeServlet extends HttpServlet{ private static final long serialVersionUID = -5979464050181485740L; @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doPost(req, resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取本文框中输入的内容 String text = (String) req.getParameter("content"); int width = 200; int height = 200; String format = "gif"; //设置Http响应头中的Content-Type为image/gif,表示该Http返回内容为一张gif图片 resp.setHeader("Content-Type", "image/gif"); Hashtable<EncodeHintType, String> hints = new Hashtable<EncodeHintType, String>(); hints.put(EncodeHintType.CHARACTER_SET, "utf-8"); BitMatrix bitMatrix = null; try { bitMatrix = new MultiFormatWriter().encode(text, BarcodeFormat.QR_CODE, width, height, hints); } catch (WriterException e1) { e1.printStackTrace(); } //获取http响应输出流 OutputStream stream = resp.getOutputStream(); try { //將二维码数据写到Http响应输出流中 MatrixToImageWriter.writeToStream(bitMatrix, format, stream); } catch (IOException e) { e.printStackTrace(); } } }
至此为止这个程序已经完成,很简单吧,需要注意一点,我们要把core-3.2.0.jar和javase-3.2.0.jar两个jar包添加到WEB-INF/lib目录下,项目结构如下图所示:
相关文章推荐
- Zxing实现在线二维码生成程序
- UVA 12897 Decoding Baby Boos
- Zxing实现在线二维码生成程序
- 仿小米,Cal日历的周月切换
- Java Lof4J日志
- 数据库学习
- HNUOJ 13309 Intrepid climber(搜索)
- Treap 基础学习
- 面向对象第三天
- Server触发器创建、删除、修改、查看 (转)
- redis服务器模型分析
- Oc__内存管理高级
- 算法(第四版)学习笔记之java实现基于堆的优先队列
- STL自定义仿函数和组合型函数适配器
- linux系统编程:线程同步-互斥量(mutex)
- 2015 Multi-University Training Contest 2 hdu 5303 Delicious Apples
- netlink demo
- MyBatis教程
- phpCMS二次加密
- hdu 1698 线段树的区间修改 模板~~