Servlet形成二维码的输出

  1. 先看看二维码的形成代码
<pre name="code" class="java">public class TwoDimensionCodeServlet extends HttpServlet {

    private int w = 100;
    private int h = 100;
    
    /**
     * 忽略大小写校验.
     */
    public static boolean validate(HttpServletRequest request, String validateCode) {
        String code = (String) request.getSession().getAttribute(SysConstants.SESSION_VALIDATE_CODE);
        return validateCode.toUpperCase().equalsIgnoreCase(code);
    }

    public void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        String validateCode = request.getParameter(SysConstants.SESSION_VALIDATE_CODE); // AJAX验证,成功返回true
        if (StringUtils.isNotBlank(validateCode)) {
            response.getOutputStream().print(validate(request, validateCode) ? "true" : "false");
        } else {
            this.doPost(request, response);
        }
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setHeader("Pragma", "no-cache");
        response.setHeader("Cache-Control", "no-cache");
        response.setDateHeader("Expires", 0);
        response.setContentType("image/jpeg");

		/*
         * 得到参数高,宽,都为数字时,则使用设置高宽,否则使用默认值
		 */
        String width = request.getParameter("width");
        String height = request.getParameter("height");
        if (StringUtils.isNumeric(width) && StringUtils.isNumeric(height)) {
            w = NumberUtils.toInt(width);
            h = NumberUtils.toInt(height);
        }

        BufferedImage image = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
        Graphics g = image.getGraphics();

        String url = request.getParameter("url");
        try {
            BitMatrix byteMatrix = new MultiFormatWriter().encode(new String(url.getBytes("UTF-8"), "UTF-8"), BarcodeFormat.QR_CODE, 100, 100); //将文字转换成二维矩阵,并设置矩阵大小,这里的矩阵大小就是后面生成的图片像素大小

            BufferedImage bufferedImage = MatrixToImageWriter.toBufferedImage(byteMatrix);

            g.dispose();

            OutputStream out = response.getOutputStream();

            ImageIO.write(bufferedImage, "JPEG", out);
            out.close();
        } catch (WriterException e) {
            e.printStackTrace();
        }

    }
}


 


  1. 再看一下servlet的定义web.xml
<!--二维码生成的Servlet-->

<servlet>

<servlet-name>TwoDimensionCodeServlet</servlet-name>

<servlet-class>com.mdy.utils.servlet.TwoDimensionCodeServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>TwoDimensionCodeServlet</servlet-name>

<url-pattern>/share/2dimensioncode</url-pattern>

</servlet-mapping>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值