参考http://blog.csdn.net/lmb55/article/details/46039445此博客
@WebServlet(“/PrintTwoBarCode”)//对servlet加注解,可以不用在xml配置servlet
public class PrintTwoBarCode extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public PrintTwoBarCode() {
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
String code = request.getParameter("code");//获取二维码封装的信息
Qrcode testQrcode = new Qrcode();
testQrcode.setQrcodeErrorCorrect('M');
testQrcode.setQrcodeEncodeMode('B');
testQrcode.setQrcodeVersion(7);
byte[] d = code.getBytes("gbk");
BufferedImage image = new BufferedImage(98, 98,
BufferedImage.TYPE_BYTE_BINARY);
Graphics2D g = image.createGraphics();
g.setBackground(Color.WHITE);
g.clearRect(0, 0, 98, 98);
g.setColor(Color.BLACK);
if (d.length > 0 && d.length < 120) {
boolean[][] s = testQrcode.calQrcode(d); //通过calQrcode函数将byte数组转换成boolean数组 ,然后依据编码后的boolean数组绘图
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());//把二维码图片写入输出流中
}
}
jsp文件如下
<body>
<div class="box">
<h2>扫一扫开启爱的密码</h2>
<img src="PrintTwoBarCode?code=http://blog.csdn.net/lmb55">
</div>
</body>