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);
                    }
                }
            });
        }
    }
    

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

  • 相关阅读:
    关于viewports 设备像素比 密度
    脚本检测 media query 分界点
    chrome Web开放 字体格式不能显示问题
    响应式图片
    ECMAScript 6 proxies
    大小不固定 文字图片居中
    prototype
    基于综合服务平台浅谈Sass应用
    Sass浅谈
    JQ怎么获取margin-left的值
  • 原文地址:https://www.cnblogs.com/longestory/p/4566977.html
Copyright © 2011-2022 走看看