博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Zxing实现在线二维码生成程序
阅读量:6245 次
发布时间:2019-06-22

本文共 3577 字,大约阅读时间需要 11 分钟。

关于zxing的使用请参考笔者的另外一篇博文:

首先我们来看看效果:

这里写图片描述

在文本框中输入内容后点击生成二维码按钮,应用自动对文本框中的内容进行编码,生成二维码图片显示在下方。

要实现这个功能并不复杂,大致思路如下:

点击按钮时,获取文本框中的内容提交到一个Servlet进行处理,在该Servlet中使用Zxing工具库对内容进行编码,返回一张图片即可。接下来看一下这个程序的实现步骤。

1.新建一个Java Dynamic Web Project。

2.在WebContent根目录下新建一个index.jsp页面,即为上面动态图页面:

<%@ page language="java" contentType="text/html; charset=utf-8"    pageEncoding="utf-8"%>
二维码在线生成工具
BarCode

这里笔者使用到了Jquery库,对Jquery不熟的朋友可以先去简单的了解一下。

我们使用img标签在页面中显示一张图片:

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,内容如下:

zxing_web
index.jsp
genBarCode
com.csii.zxing.servlet.GenBarCodeServlet
genBarCode
/genBarCode.do

剩下的内容就是编写二维码生成逻辑代码,新建一个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
hints = new Hashtable
(); 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目录下,项目结构如下图所示:

这里写图片描述

转载于:https://www.cnblogs.com/lanzhi/p/6468622.html

你可能感兴趣的文章
Java基础学习总结(23)——GUI编程
查看>>
SVN学习总结(2)——SVN冲突解决
查看>>
nagios的安装搭建以及添加监控主机
查看>>
Harbor和YUM部署for CentOS 7
查看>>
shell脚本练习一(if语句、case语句、for语句、while语句)
查看>>
Web服务(二)httpd配置参数详细介绍
查看>>
unity中射线碰撞检测总结
查看>>
Mysql触发器
查看>>
运维自动化之使用PHP+MYSQL+SHELL打造私有监控系统(七)
查看>>
ArcSDE 10.1 的安装
查看>>
python面向对象——方法
查看>>
Python--分析微信好友是否被删除
查看>>
MYSQL一些字符串的处理,如拼接,截取等,便于用在同一字段中多个值的处理...
查看>>
网络工程师
查看>>
在C#下的SQL模糊查询语句 (Visual Studio)
查看>>
第三章 广域通信网
查看>>
xhtml+css基础知识2
查看>>
我的友情链接
查看>>
Java环境变量配置
查看>>
Magent搭建Memcached集群
查看>>