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.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.swetake.util.*;
public class MyQrcode extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String content = request.getParameter("content");
Qrcode qr = new Qrcode();
qr.setQrcodeErrorCorrect('M'); // 设置纠错能力 L%7 M%15 Q%25 H%30
qr.setQrcodeEncodeMode('B'); // 设置编码 binary二进制
qr.setQrcodeVersion(7); // 设置版本号 总共有40
BufferedImage bi = new BufferedImage(140, 140, BufferedImage.TYPE_INT_RGB);
Graphics2D g = bi.createGraphics();
g.setBackground(Color.white); // 背景色
g.setColor(Color.black); // 前景色
g.clearRect(0, 0, 140, 140); // 绘制矩形
byte[] bt = content.getBytes();
if (bt.length > 0) {
boolean[][] bo = qr.calQrcode(bt); // 返回表示二维的数组
for (int i = 0; i < bo.length; i++) {
for (int j = 0; j < bo.length; j++) {
if(bo[i][j]) {
g.fillRect(i*3+2, j*3+2, 3, 3);
}
}
}
}
g.dispose();
bi.flush();
ImageIO.write(bi,"jpg",response.getOutputStream());
}
}
JS
<script type="text/javascript">
function qr() {
var text = document.getElementById("content").value;
var img = document.getElementById("image");
img.src="qrcode.do?content="+text;
}
</script>
</head>
<body>
<input type="text" id="content"/>
<input type="button" value="生成二维码" οnclick="qr()"/><br/>
<img id="image" style="border:1px solid red"/>
</body>
<servlet>
<servlet-name>qrcode</servlet-name>
<servlet-class>qrcode.MyQrcode</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>qrcode</servlet-name>
<url-pattern>/qrcode.do</url-pattern>
</servlet-mapping>