Web服务器和Servel容器
Servlet、WebMVC、WebFlux
通信协议方面,Java应用常用的有HTTP、HTTPS、WebSocket、TCP、UDP等;
- HTTP/HTTPS:Web应用最基础的协议,Servlet容器(如Tomcat)和WebFlux(如Netty)均支持。
 - WebSocket:用于双向实时通信,Servlet(通过
javax.websocket)和WebFlux(如WebSocketHandler)均可实现。 - TCP/UDP:通过Java NIO或Netty等库实现,常用于高性能网络通信,WebFlux底层(如Netty)原生支持。
 
Servlet
Servlet其实是 Server Applet,全称 Java Servlet,指的是用Java 编写的服务端程序。
Java EE标准,用于处理请求和响应的基础,定义了处理HTTP请求的核心接口(如ServletRequest、ServletResponse)。特点是同步阻塞I/O,每个请求占用一个线程,线程池容量决定并发上限。
Servlet 容器
Tomcat、Jetty等,Servlet容器负责生命周期管理。
Servlet 容器其实就是管理和加载这些 Servlet 类的,拿到 HTTP 请求之后找到对应的 Servlet 类这就是 Servlet 容器要做的事情。
HTTP 服务器
Apache、Nginx等,
Web 容器
HTTP 服务器 + Servlet 容器 = Web 容器
WebMVC
WebMVC:Spring WebMVC。
基于Servlet API构建的同步阻塞式Web框架,属于Spring生态。
依赖Servlet容器(如Tomcat),使用DispatcherServlet作为核心控制器,通过@Controller和@RequestMapping定义路由。适合传统CRUD应用,与JDBC等阻塞式工具链集成简单。
WebFlux
Spring 5+引入的响应式非阻塞Web框架,支持Reactive Streams规范。支持非阻塞、异步处理,可以在Servlet容器(如Tomcat)或Netty这样的非Servlet环境下运行。
- 特点:
- 非阻塞模型:基于事件循环(如Netty或Servlet 3.1+容器),少量线程处理高并发请求。
 - 响应式编程:使用
Flux和Mono(Reactor库)处理异步数据流。 - 协议支持:除HTTP外,更易集成WebSocket、SSE等实时协议。
 - 适用场景:高并发、低延迟的IO密集型应用(如微服务网关)。
 
 
也可以运行在支持Servlet 3.1+的容器上,比如Tomcat,但此时还是使用非阻塞的方式。而使用Netty的话,是完全脱离Servlet环境的。
总结
- 通信协议是数据传输的规则,如HTTP、WebSocket。
 - Servlet是Java处理Web请求的底层标准,WebMVC是其上层同步框架,WebFlux是响应式替代方案。
 - Servlet和WebMVC是基于命令式编程,而WebFlux是响应式编程,使用函数式风格,比如Reactor库的Flux和Mono。
 - Servlet和WebMVC是同步的,每个请求对应一个线程,适合传统的阻塞式操作;而WebFlux是非阻塞的,使用事件循环,适合高并发和大量IO操作的场景。另外,WebFlux可以脱离Servlet容器,比如用Netty,而WebMVC必须依赖Servlet容器。
 
参考链接
Servlet参考链接:
                    
                
                
            
        
浙公网安备 33010602011771号