zoukankan      html  css  js  c++  java
  • [Servlet3.0新特性]Servlet异步处理

    所谓异步处理就是指数据发送方发送数据给数据接收方后,不必等待数据接收方作出响应,可以继续发送下一个数据的通信方式。

    Servlet 3.0版本提供了相关异步处理的功能,具体实现方式如下:

    • 需要使用注解在对应Servlet配置asyncSupported=true,表示当前Servlet支持异步。
    • 通过Request对象的startAsync(Request, Response)方法获取异步上下文对象。
    • 通过异步上下文对象调用start(new Runnable(){})方法开始异步处理,Runnable类的run()方法提供具体异步的逻辑代码。

    根据上述步骤,通过一个代码实例演示。

    @WebServlet(urlPatterns="/async",asyncSupported=true)
    public class AsyncServlet extends HttpServlet {
        @Override
        protected void doGet(HttpServletRequest req, final HttpServletResponse resp)
                throws ServletException, IOException {
            // 设置响应类型及编码格式
            resp.setContentType("text/html;charset=utf-8");
            resp.getWriter().print("马上开始:<br/>");
            // 刷新缓冲区
            resp.getWriter().flush();
            // 获取异步上下文对象
            final AsyncContext ac = req.startAsync(req, resp);
            // 开始异步处理
            ac.start(new Runnable() {
                @Override
                public void run() {
                    try {
                        for (char ch = 'A'; ch <= 'Z'; ch++) {
                            resp.getWriter().print(ch);
                            resp.getWriter().flush();
                            Thread.sleep(250);
                        }
                        // 表示异步处理完毕
                        ac.complete();
                    } catch (Exception e) {
                        throw new RuntimeException(e);
                    }
                }
            });
        }
    }
    

    转载说明:请注明作者及原文链接,谢谢!

  • 相关阅读:
    s3c2440 nand flash 拷贝实验
    DE270数字系统设计(4)基于Nios的LCD显示
    DE270数字系统设计实验(3)移位寄存器
    s3c2440启动时的内存拷贝过程分析
    s3c2440基本io/ports led点亮
    (转)X11/Xlib.h:没有该文件或目录
    NAND Flash读写技术
    Http中ContentType的取值讲解
    Json对象和Json字符串的区别
    table() function
  • 原文地址:https://www.cnblogs.com/longestory/p/4566977.html
Copyright © 2011-2022 走看看