您的位置:首页 > Web前端 > JavaScript

jsp生成二维码

2015-12-30 20:54 627 查看

如何用在JSP中生成二维码

1.需要用到的jar包

下载地址:http://pan.baidu.com/s/1eQQc5Ho

2.代码例子

java类:

package vo;

import java.awt.*;
import java.awt.image.BufferedImage;

import com.swetake.util.Qrcode;

public class ToDBC {
String context;
BufferedImage img;
int width = 90;
int height = 90;
public ToDBC(String context){
try{
System.out.println(context);
Qrcode testQrcode =new Qrcode();
testQrcode.setQrcodeErrorCorrect('M');
testQrcode.setQrcodeEncodeMode('B');
testQrcode.setQrcodeVersion(7);
byte[] d = context.getBytes("UTF-8");
BufferedImage bi = new BufferedImage(width, height, BufferedImage.TYPE_BYTE_BINARY);
Graphics2D g = bi.createGraphics();
g.setBackground(Color.WHITE);
g.clearRect(0, 0, width, height);
g.setColor(Color.BLACK);
// 限制最大字节数为119
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,i*2,2,2);
}
}
}
}
g.dispose();
bi.flush();
this.context = context;
this.img = bi;
}
catch (Exception e) {
e.printStackTrace();
}
}
public String getContext() {
return context;
}
public BufferedImage getImg() {
return img;
}
public int getWidth() {
return width;
}
public int getHeight() {
return height;
}

}


servlet类
package controler;

import java.io.IOException;

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

import vo.*;

public class CreateToDBC extends HttpServlet {

@Override
public void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

try {
ImageIO.write(new ToDBC(request.getHeader("Referer")).getImg(), "jpg", response.getOutputStream());
} catch (Exception e) {
e.printStackTrace();
}
}

}


jsp中img标签的调用
<img src="servlet/CreateToDBC">


3.目前遇到的问题

小米似乎并不能扫出这个二维码

微信能扫出,但是多次才能成功一次,可能是分辨率太小了?
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: