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

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

  • 相关阅读:
    正则表达式(常用正则总结)
    What is maven?
    二维数组的遍历使用foreach
    Installing Git
    Hive修改表名,列名,列注释,表注释,增加列,调整列顺序,属性名等操作
    有趣的开源项目集结完毕,HelloGitHub 月刊第 63 期发布啦!
    - zxvf
    tensorflow入门
    Postman v8.7.0
    springboot等javaweb项目将jar包安装(打包)到本地Maven仓库
  • 原文地址:https://www.cnblogs.com/longestory/p/4566977.html
Copyright © 2011-2022 走看看