servlet中用ZXing生成条码二维码并输出到web页面的示例

jopen 9年前

1、生成条码的servlet代码:

import java.io.IOException;    import javax.servlet.ServletException;  import javax.servlet.ServletOutputStream;  import javax.servlet.http.HttpServlet;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse;    import com.google.zxing.BarcodeFormat;  import com.google.zxing.WriterException;  import com.google.zxing.client.j2se.MatrixToImageWriter;  import com.google.zxing.common.BitMatrix;  import com.google.zxing.oned.Code128Writer;    /**    * @Description: 生成条码(CODE128格式)  */  public class BarCode1DServlet extends HttpServlet {     /**       * @Fields serialVersionUID : default serialVersionUID     */    private static final long serialVersionUID = 1L;      private static final String KEY = "keycode";   private static final String WIDTH = "mwidth";   private static final String HEIGHT = "mheight";   private static final String IMAGETYPE = "JPEG";     @Override   protected void doGet(HttpServletRequest req, HttpServletResponse resp)     throws ServletException, IOException {    String keycode = req.getParameter(KEY);    if (keycode != null && !"".equals(keycode)) {     ServletOutputStream stream = null;     try {      Code128Writer writer = new Code128Writer();      int width=180;      int height=60;      String mwidth = req.getParameter(WIDTH);      if (mwidth != null && !"".equals(mwidth.trim())) {       try{        width=Integer.valueOf(mwidth);       } catch (NumberFormatException e) {                                          //TODO output to log        }      }       String mheight = req.getParameter(HEIGHT);      if (mheight != null && !"".equals(mheight.trim())) {       try{        height = Integer.valueOf(mheight);       } catch (NumberFormatException e) {        //TODO output to log        }      }      stream = resp.getOutputStream();      BitMatrix m = writer.encode(keycode, BarcodeFormat.CODE_128, width, height);      MatrixToImageWriter.writeToStream(m, IMAGETYPE, stream);     } catch (WriterException e) {      e.printStackTrace();     } finally {      if (stream != null) {       stream.flush();       stream.close();      }     }    }   }     @Override   protected void doPost(HttpServletRequest req, HttpServletResponse resp)     throws ServletException, IOException {    this.doGet(req, resp);   }          }

2、生成qrcode二维码的servlet示例

import java.io.IOException;    import javax.servlet.ServletException;  import javax.servlet.ServletOutputStream;  import javax.servlet.http.HttpServlet;  import javax.servlet.http.HttpServletRequest;  import javax.servlet.http.HttpServletResponse;    import com.google.zxing.BarcodeFormat;  import com.google.zxing.WriterException;  import com.google.zxing.client.j2se.MatrixToImageWriter;  import com.google.zxing.common.BitMatrix;  import com.google.zxing.qrcode.QRCodeWriter;    /**    * @Description: 生成二维码 (QR格式)   * @author lwei   */  public class BarCode2DServlet extends HttpServlet {     /**       * @Fields serialVersionUID : serialVersionUID     */       private static final long serialVersionUID = 1L;      private static final String KEY = "keycode";   private static final String SIZE = "msize";   private static final String IMAGETYPE = "JPEG";     @Override   protected void doGet(HttpServletRequest req, HttpServletResponse resp)     throws ServletException, IOException {    String keycode = req.getParameter(KEY);        if (keycode != null && !"".equals(keycode)) {     ServletOutputStream stream = null;     try {      int size=129;      String msize = req.getParameter(SIZE);      if (msize != null && !"".equals(msize.trim())) {       try{        size=Integer.valueOf(msize);       } catch (NumberFormatException e) {        //TODO output to log       }      }      stream = resp.getOutputStream();      QRCodeWriter writer = new QRCodeWriter();      BitMatrix m = writer.encode(keycode, BarcodeFormat.QR_CODE, size, size);      MatrixToImageWriter.writeToStream(m, IMAGETYPE, stream);     } catch (WriterException e) {      e.printStackTrace();     } finally {      if (stream != null) {       stream.flush();       stream.close();      }     }    }   }     @Override   protected void doPost(HttpServletRequest req, HttpServletResponse resp)     throws ServletException, IOException {    this.doGet(req, resp);   }     }

3、web.xml中的配置

        <servlet>      <servlet-name>barCode</servlet-name>      <servlet-class>com.XXX.XXX.common.servlet.BarCode1DServlet</servlet-class>     </servlet>     <servlet-mapping>      <servlet-name>barCode</servlet-name>      <url-pattern>/barCode</url-pattern>     </servlet-mapping>     <servlet>      <servlet-name>qrCode</servlet-name>      <servlet-class>com.XXX.XXX.common.servlet.BarCode2DServlet</servlet-class>     </servlet>     <servlet-mapping>      <servlet-name>qrCode</servlet-name>      <url-pattern>/qrCode</url-pattern>     </servlet-mapping>

4、页面引用


<img alt="条码" src="${pageContext.request.contextPath}/barCode?keycode=RT100200300400"></img>      <img alt="二维码" src="${pageContext.request.contextPath}/qrCode?keycode=RT100200300400500"></img>

够详细吧....