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

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

  • 相关阅读:
    易语言VS杀毒软件:基情复燃,转受为攻!
    android xml解析
    Activity中与ListActivity中使用listview区别
    Android四大基本组件介绍与生命周期
    eclipse_中的注释_快捷键
    ADB server didn't ACK
    JDK安装配置
    Android开发把项目打包成apk
    分享Kali Linux 2016.2第48周镜像文件
    iOS10 UI教程视图调试
  • 原文地址:https://www.cnblogs.com/longestory/p/4566977.html
Copyright © 2011-2022 走看看