参考
ライブラリのダウンロードURL
https://mvnrepository.com/artifact/com.google.zxing/core/3.3.0
https://mvnrepository.com/artifact/com.google.zxing/javase/3.3.0
手順
- core-3.3.0.jarとjavase-3.3.0.jarをWebContent/WEB-INF/libに置く
- 以下のServletとJSPを作成(JSP側から実行)
qrCode.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>QRコード表示</title>
</head>
<body>
<h1>QRコード表示</h1>
<%-- <img>タグのsrc属性にQRコード描画サーブレットを指定 --%>
<img style="width: 100px; height: 100px" src="QRcodeGenerator">
</body>
</html>
QRcodeGenerator.java
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.util.concurrent.ConcurrentHashMap;
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.google.zxing.BarcodeFormat;
import com.google.zxing.EncodeHintType;
import com.google.zxing.WriterException;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
import com.google.zxing.qrcode.QRCodeWriter;
import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel;
/**
* Servlet implementation class Qrcode
*/
@WebServlet("/QRcodeGenerator")
public class QRcodeGenerator extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//QRコード生成したい文字列の設定
String source = "★★★";
//QRコード生成時のエンコーディング
String encoding = "UTF-8";
//サイズ(ピクセル)
int size = 100;
//生成処理
ConcurrentHashMap hints = new ConcurrentHashMap();
//エラー訂正レベル指定
hints.put(EncodeHintType.ERROR_CORRECTION, ErrorCorrectionLevel.M);
//エンコーディング指定
hints.put(EncodeHintType.CHARACTER_SET, encoding);
//マージン指定
hints.put(EncodeHintType.MARGIN, 0);
QRCodeWriter writer = new QRCodeWriter();
BitMatrix bitMatrix;
try {
bitMatrix = writer.encode(source, BarcodeFormat.QR_CODE, size, size, hints);
BufferedImage image = MatrixToImageWriter.toBufferedImage(bitMatrix);
// 画像をクライアントに返却する
response.setContentType("image/png");
OutputStream os = response.getOutputStream();
ImageIO.write(image, "png", os);
os.flush();
} catch (WriterException e) {
e.printStackTrace();
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}