All Downloads are FREE. Search and download functionalities are using the official Maven repository.

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