Java web--生成二维码

  生成二维码的方法有很多,可使用谷歌的ZXing组件、Denso公司的QRcode组件或jQuery组件,因为这篇博客Java web技术相关的,所以使用QRCode组件,需要从网上下载QRCode.jar,并加载到工程lib目录下。

目录

一、二维码会重复吗(我的疑问)

二、生成二维码方法

三、生成二维码实例


一、二维码会重复吗(我的疑问)

  根据我查到的信息,二维码是不会重复的。

  1.二维码代表的是信息,每个信息都是独一无二的。

  2.如果有重复的二维码,那么代表这些二维码指向的是同一种东西。

  3.二维码能重复的概率很小,因为它能表示很多的东西。

二、生成二维码方法

  从网上下载QRCode.jar,并加载到工程lib目录下。重要的事情多说一边。

三、生成二维码实例

    该程序包含两个部分,一个jsp文件,一个servlet类,jsp文件用于获取显示信息,servlet类用于生成二维码。

<%@ 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=UTF-8">
<title>生成二维码</title>
</head>
<body>
<p>生成二维码</p>
<hr>
<form action="../qrcode" method="post" target="qrcodeframe">
输入文本:<input name="code"/><input type="submit" value="转换"/>
</form>
<iframe name="qrcodeframe" frameborder="no" border="0"></iframe>
</body>
</html>
package a02a;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import java.io.IOException;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.swetake.util.Qrcode;

/**
 * Servlet implementation class a02a_sheng
 */
@WebServlet("/qrcode")
public class a02a_sheng extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public a02a_sheng() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doPost(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
        //指定信息生成二维码,获取code
		String code=request.getParameter("code");
		Qrcode testQrcode=new Qrcode();
        //设置二维码的排错率,可选L(7%)、M(15%)、Q(25%)、H(30%)
        //排错率越高能存储的信息越少,但对二维码的清晰度的要求越高
		testQrcode.setQrcodeErrorCorrect('M');
        //设置编码模式,N为数字,A为英文字母,B为二进制,K为汉字
		testQrcode.setQrcodeEncodeMode('B');
        //设置二维码尺寸,范围为1到40,值越大,尺寸越大,存储信息越多
		testQrcode.setQrcodeVersion(7);
		byte[] d=code.getBytes("UTF-8");
		BufferedImage image=new BufferedImage(100,100,BufferedImage.TYPE_BYTE_BINARY);
		Graphics2D g=image.createGraphics();
		g.setBackground(Color.white);
		g.clearRect(0, 0, 100, 100);
		g.setColor(Color.BLACK);
		if(d.length>0&&d.length<120)
		{
			boolean[][] s=testQrcode.calQrcode(d);
			for(int i=0;i<s.length;i++)
			{
				for(int j=0;j<s.length;j++)
				{
					if(s[j][i]){g.fillRect(j*2+3,i*2+3,2,2);}
				}
			}
		}
		g.dispose();
		image.flush();
		ImageIO.write(image, "jpg", response.getOutputStream());
	}

}

   没错,你没看错,这个二维码指向的就是度娘,扫一扫就可以到呦!!!

おすすめ

転載: blog.csdn.net/qq_43238335/article/details/106389774