【SpringBoot专题系列】springboot使用servlet之sync、async、sse

【SpringBoot专题系列】springboot使用servlet之sync、async、sse_第1张图片

前言

最近想了解下webFlux,于是就摸索到了之前servlet编程的学习,基于现在用springboot已经成为生产必用的技术,所以就学习一下spring boot如何使用servlet,当然现在servlet已经更新到了4.0版本,今天先学习下servlet3.0

servlet 3.0 新特性

异步处理支持:有了该特性,Servlet 线程不再需要一直阻塞,直到业务处理完毕才能再输出响应,最后才结束该 Servlet 线程。在接收到请求之后,Servlet 线程可以将耗时的操作委派给另一个线程来完成,自己在不生成响应的情况下返回至容器。针对业务处理较耗时的情况,这将大大减少服务器资源的占用,并且提高并发处理速度。 总结一句话就是将request pool和 work pool分开

先学习springboot使用servlet

一、创建SyncServlet,(代码放在github上),@WebServlet(urlPatterns = “/SyncServlet”),这个路径映射

二、创建SyncFilter述,@WebFilter(urlPatterns = {"/SyncServlet"})

三、启动类上面添加@ServletComponentScan,用于扫描加载那些servlet
这是创建了一个阻塞式的servlet。

创建非阻塞式的servlet

一、创建AsyncServlet,主要是AsyncContext这个异步上下文来启动异步,切换到worker线程,我们使用的java8的CompletableFuture来启动线程

二、创建ASyncFilter,这里@WebServlet中的asyncSupported = true,否则会报错

使用Server Send Event

SSE与Servlet异步编程并无什么关系,所谓SSE,就是浏览器向服务器发送一个HTTP请求,保持长连接,服务器不断单向地向浏览器推送“信息”(message),类似WebSockt,也是H5的新特性

一、 创建SSE,这里需要设置返回类型为text/event-stream
二、在SyncFilter添加urlPatterns

你可能感兴趣的:(springboot,servlet)