二维码图形生成方法(地址为qrcode)
需要在lib目录下导入QRCode.jar包
(emmm虽然步骤感觉都对但是我还是没有成功生成二维码TAT 先记录下以后再研究)
package servlet;
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 QRCodeServlet
*/
@WebServlet("/qrcode")
public class QRCodeServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public QRCodeServlet() {
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 {
String code=request.getParameter("code");
Qrcode testQrcode=new Qrcode();
//设置二维码排错率,可选L(7%)M(15%)Q(25%)H(30%)
//排错率越高可存储的信息越少,但对二维码清晰度的要求越低
testQrcode.setQrcodeErrorCorrect('M');
//设置编码格式:Numeric为数字,Alphanumeric为英文字母
//Binary为二进制,Kanji为汉字(第一个大写字母表示)
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);
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[i][j]){
g.fillRect(j*2+3, i*2+3, 2, 2);
}
}
}
}
g.dispose();
image.flush();
ImageIO.write(image,"jpg",response.getOutputStream());
}
}
案例(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=UTF-8">
<title>输入界面</title>
</head>
<body>
<form action="qrcode" method="post" target="qrcodeframe">
输入文本:<input type="text" name="code">
<input type="submit" value="转换">
</form>
<iframe name="qrcodeframe" frameborder="3" border="2"></iframe>
</body>
</html>
还有一个抄来的QRCode类暂时还不知道有没有用,先写上吧
package servlet;
public class QRCode {
public void setQrcodeErrorCorrect(char c) {
// TODO Auto-generated method stub
}
public void setQrcodeEncodeMode(char c) {
// TODO Auto-generated method stub
}
public void setQrcodeVerson(int i) {
// TODO Auto-generated method stub
}
public boolean[][] calQrcode(byte[] d) {
// TODO Auto-generated method stub
return null;
}
}