Solo  当前访客:1 开始使用


使用原生servlet的异步请求

Servlet 3.0及更高版本

声明为异步请求方式1:注解

@WebServlet(urlPatterns = {"/asyncServlet"}, asyncSupported = true)  
public class AsyncServlet extends HttpServlet {  
    // ...  
}

声明为异步请求方式2:初始化方法中设置

@Override  
public void init() throws ServletException {  
    super.init();  
    getServletConfig().getServletContext().setAsyncSupported(true);  
}

处理业务

在doGet或者doPost中,启用新线程处理,不使用新线程处理也行,因为将Servlet设置为了异步

Thread backgroundThread = new Thread(new Runnable() {  });

异步请求的结果

  • 用Servlet的异步特性仍然会改变请求的生命周期和过滤器链的执行方式,会多次进入过滤器

流程

  • 当你使用异步处理时,Servlet容器不会立即将响应发送回客户端,而是将请求挂起,允许你在后台处理它。一旦处理完成,你可以通过 AsyncContext对象来恢复请求的处理并生成响应。在这个过程中,过滤器链可能会被再次触发,具体取决于你何时恢复请求的处理。

标题:使用原生servlet的异步请求
作者:temp12138
地址:https://solo.mfyzl.icu/articles/2024/03/15/1710473754748.html

标签:
新一篇: Springmvc中的异步请求 旧一篇: 处理并发使用线程池