二维码是什么玩意,有什么好处我就不做过多解释了,如果你还不懂,可以百科一下。
我还是比较注重于亲自动手写一下。
网上java生成二维码文章很多,无非就是用谷歌的Zxing.jar开发包和小日本写的qrcode。
但是都直接生成图片,本文用的是谷歌Zxing.jar(对小日本印象不好)直接通过response.getOutputStream()输出字节流到页面,在页面上显示。
先下载zxing开发包,这里用到的只是core那个jar包。
下图为实现功能的 imageZxing.jsp;
<%@ page language="java" pageEncoding="utf-8"%>
<%@ page contentType="image/jpeg" import="
java.awt.image.*,
java.util.*,
javax.imageio.*,
com.google.zxing.BarcodeFormat,
com.google.zxing.EncodeHintType,
com.google.zxing.MultiFormatWriter,
com.google.zxing.WriterException,
com.google.zxing.common.BitMatrix"
%>
<%
//设置页面不缓存
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
//String text = request.getParameter("str"); 如果内容自己定义的话,可以直接传过来
String text = "hello Mr.Xu!";
int width2 = 100;
int height2 = 100;
//二维码的图片格式
String format = "gif";
Hashtable hints = new Hashtable();
//内容所使用编码
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
try {
BitMatrix bitMatrix = new MultiFormatWriter().encode(text,BarcodeFormat.QR_CODE, width2, height2, hints);
int width = bitMatrix.getWidth();
int height = bitMatrix.getHeight();
BufferedImage image = new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
for (int x = 0; x < width; x++) {
for (int y = 0; y < height; y++) {
image.setRGB(x, y, bitMatrix.get(x, y) ? 0xFF000000 : 0xFFFFFFFF); //二维码图片为黑白两色
}
}
ImageIO.write(image,"gif",response.getOutputStream());
out.clear();
//生成二维码
//File outputFile = new File("d:"+File.separator+"new.gif");
//MatrixToImageWriter.writeToFile(bitMatrix, format, outputFile);
} catch (WriterException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
%>
代码在jsp中实现,只要你导入开发包,就可以直接拿过来用。
在你页面需要二维码图片的地方直接html调用即可
<img id='imageUrl' src='/路径/js/page/imageZxing.jsp'>
第一次写博客,不足之处多多包涵!