
cn.basics.servlet.ZxingServlet Maven / Gradle / Ivy
package cn.basics.servlet;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
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.MultiFormatWriter;
import com.google.zxing.client.j2se.MatrixToImageWriter;
import com.google.zxing.common.BitMatrix;
/**
* @ClassName: ZxingServlet
* @Description: TODOG(生成二维码)
* @author [email protected](苟志强)
* @date 2017-3-30 上午9:51:23
*/
public class ZxingServlet extends HttpServlet{
/* 需要使用时 将该配置文件放入web.xml中
ZxingServlet
cn.springmvc.servlet.ZxingServlet
ZxingServlet
/zxingServlet
http://localhost:8080/Report/zxingServlet?width=300&height=300&format=png&type=QRCode&content=内容
*/
/**
* @Fields serialVersionUID : TODOG(版本ID)
*/
private static final long serialVersionUID = -5786537420930323250L;
private int width = 300;
private int height = 300;
private int margin = 1;
private String format = "png";
private String content = "";
private String type = "QRCode";
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
initParameter(request);
if("QRCode".equals(type)){
createQRCode(response);
}else if("BarCode".equals(type)){
createBarCode(response);
}
}
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException{
doPost(request, response);
}
/**初始化参数*/
private void initParameter(HttpServletRequest request){
try {
width = request.getParameter("width")==null?300:Integer.parseInt(request.getParameter("width"));
} catch (Exception e) {
width = 300;
}
try {
height = request.getParameter("height")==null?300:Integer.parseInt(request.getParameter("height"));
} catch (Exception e) {
height = 300;
}
try {
margin = request.getParameter("margin")==null?2:Integer.parseInt(request.getParameter("margin"));
} catch (Exception e) {
margin = 2;
}
format = request.getParameter("format")==null?"png":request.getParameter("format");
format = "".equals(format)?"png":format;
content = request.getParameter("content")==null?"请输入图形码内容!":request.getParameter("content");
type = request.getParameter("type")==null?"QRCode":request.getParameter("type");
}
/**二维码的生成*/
private void createQRCode(HttpServletResponse response){
/**设置二维码的参数*/
Map hints = new HashMap();
// 内容所使用编码
hints.put(EncodeHintType.CHARACTER_SET, "utf-8");
// 留白区域大小
hints.put(EncodeHintType.MARGIN, margin);
try {
BitMatrix bitMatrix = new MultiFormatWriter().encode(content,BarcodeFormat.QR_CODE,width,height,hints);
// 输出二维码
MatrixToImageWriter.writeToStream(bitMatrix, format, response.getOutputStream());
} catch (Exception e) {
System.out.println("生成二维码异常!"+e.toString());
}
}
/**条形码的生成*/
private void createBarCode(HttpServletResponse response){
int codeWidth = 3 + // start guard
(7 * 6) + // left bars
5 + // middle guard
(7 * 6) + // right bars
3; // end guard
codeWidth = Math.max(codeWidth, width);
try {
BitMatrix bitMatrix = new MultiFormatWriter().encode(content,BarcodeFormat.CODE_128, codeWidth, height, null);
// 条形码
MatrixToImageWriter.writeToStream(bitMatrix, format, response.getOutputStream());
} catch (Exception e) {
System.out.println("生成条形码异常!"+e.toString());
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy