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
    评论
### 回答1: 可以的,Servlet 可以输出响应数据,包括 HTML、JSON、XML 等格式的数据。Servlet 是在服务器端运行的 Java 类,它可以接收客户端的请求,并向客户端发送响应数据。通过使用 Servlet API 中的 HttpServletResponse 对象,Servlet 可以输出各种格式的响应数据,例如: - 使用 PrintWriter 对象输出纯文本数据 - 使用 ServletOutputStream 对象输出二进制数据 - 使用 setContentType() 方法设置响应的 MIME 类型 - 使用 addHeader() 方法添加响应头信息 - 使用 sendRedirect() 方法重定向到另一个页面等等。 因此,Servlet 可以用来处理客户端的请求并生成相应的响应数据,从而实现动态网页的生成和交互。 ### 回答2: 在Servlet中是可以输出内容的。因为Servlet是Java技术的一种实现,用于在服务器端处理HTTP请求和生成响应。通过Servlet的`ServletResponse`接口提供的方法,可以向客户端发送文本、HTML、JSON等格式的响应数据。 在Servlet中,可以使用`PrintWriter`对象或`ServletResponse`接口的`getWriter()`方法获取一个输出流,从而将内容输出到客户端。通过这个输出流,我们可以向客户端发送HTML标签、文本信息、错误消息等等。 通常,我们在Servlet中使用`PrintWriter`对象来输出内容,使用`println()`方法可以方便地输出一行字符串。例如,我们可以在Servlet中使用以下代码输出一个简单的HTML页面: ```java protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); // 设置响应内容的类型 PrintWriter out = response.getWriter(); // 获取输出流 // 输出HTML页面 out.println("<html>"); out.println("<head>"); out.println("<title>Hello World</title>"); out.println("</head>"); out.println("<body>"); out.println("<h1>Hello World!</h1>"); out.println("</body>"); out.println("</html>"); out.close(); // 关闭输出流 } ``` 通过以上代码,当客户端请求该Servlet时,服务器会返回一个包含"Hello World!"的HTML页面。 因此,确实可以在Servlet输出内容,从而生成动态的响应。 ### 回答3: servlet里是可以输出内容的。在servlet中,我们可以使用`response`对象来输出内容到客户端。`response`对象提供了一些方法来向客户端发送数据。 常用的方法包括: 1. `response.getWriter()`: 获取一个用于输出字符数据的`PrintWriter`对象。通过调用`print()`或`println()`方法,我们可以将文本内容输出到客户端。 2. `response.getOutputStream()`: 获取一个用于输出字节数据的`ServletOutputStream`对象。通过调用`write()`方法,我们可以将字节数据输出到客户端。 例如,我们可以在servlet的`doGet()`方法中使用以下代码输出文本内容到客户端: ```java protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); // 设置响应内容类型为HTML,字符编码为UTF-8 PrintWriter out = response.getWriter(); out.println("<html>"); out.println("<head><title>Servlet Output</title></head>"); out.println("<body>"); out.println("<h1>Hello, World!</h1>"); out.println("</body>"); out.println("</html>"); out.close(); } ``` 通过上述代码,客户端将会接收到一段HTML代码,其中包含一个标题为"Hello, World!"的大标题。 除了输出文本内容,我们还可以通过`response`对象发送文件给客户端。例如,可以通过`response.setContentType("application/pdf")`设置响应内容类型为PDF文件,然后通过`response.getOutputStream()`将PDF文件的字节数据输出给客户端。 总而言之,servlet可以通过`response`对象来向客户端输出文本内容或其他类型的数据。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值