生成二维码的方法有很多,可使用谷歌的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());
}
}
没错,你没看错,这个二维码指向的就是度娘,扫一扫就可以到呦!!!