Java Web实用开发技术-二维码

二维码图形生成方法(地址为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;
		}
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值