梳理 Spring Boot Web 开发的几个概念

Web 技术栈概念梳理

本文档梳理 Spring Boot Web 开发中常涉及的几组概念:Servlet / WebFlux、Tomcat / Netty、HttpServletResponse / ServerHttpResponse,以及 spring-boot-starter-web / spring-boot-starter-webflux


1. Servlet 与 WebFlux

Servlet

  • 定义:Java EE 标准里的 Web API,采用「一个请求一个线程」的同步、阻塞模型。
  • 技术栈spring-boot-starter-web → 内嵌 Tomcat + Spring MVC
  • 特点:每个请求占用一个线程直到处理结束;请求/响应类型为 HttpServletRequest / HttpServletResponse;代码为同步写法。

WebFlux

  • 定义:Spring 的响应式 Web 框架,基于 Reactor(Netty),用少量线程通过事件驱动处理大量并发。
  • 技术栈spring-boot-starter-webflux → 内嵌 Netty + Spring WebFlux
  • 特点:非阻塞 IO;返回 Mono/Flux;请求/响应类型为 ServerHttpRequest / ServerHttpResponse

如何判断当前环境

判断依据Servlet(MVC)WebFlux
依赖spring-boot-starter-web仅有/主要用 spring-boot-starter-webflux
启动日志Tomcat started on port(s)Netty started on port(s)
可注入的类型HttpServletRequest / HttpServletResponseServerHttpRequest / ServerHttpResponse

能否切换

可以,但属于「换一套 Web 栈」:需改依赖(去掉一种 starter、保留另一种),并相应改写 Controller、Filter、异常处理等(同步 ↔ 响应式),不是改一个配置即可。


2. Tomcat 与 Netty

Tomcat

  • 定位Servlet 容器(Web 容器 / 应用服务器)。
  • 职责:接收 HTTP 请求,按 Servlet 规范交给应用(如 Spring MVC),再写回响应。
  • 模型:同步、阻塞,一个请求占用一个工作线程。
  • 常见用法:运行 Spring MVC、JSP、传统 Java Web 应用。

Netty

  • 定位网络应用框架(不是 Servlet 容器)。
  • 职责:基于 NIO 的非阻塞网络通信(TCP/UDP/HTTP 等),负责连接管理、编解码、事件驱动等。
  • 模型:少量线程 + 事件循环,适合高并发、长连接。
  • 在 Spring 中的角色:作为 Spring WebFlux 的默认 HTTP 服务器,提供 HTTP 能力。

对比小结

维度TomcatNetty
角色Servlet 容器网络 IO 框架
规范实现 Servlet 规范不实现 Servlet
模型同步、阻塞异步、非阻塞
Springstarter-web 内嵌starter-webflux 使用

Tomcat是针对http层的。
Netty是一个网络组件,tcp,udp,http都可以。
Netty是基于Java NIO开发的,而Tomcat是Apache下的针对HTTP的服务器项目,前者更像一个中间件框架,后者更像一个工具。


3. HttpServletResponse 与 ServerHttpResponse

HttpServletResponse

  • 来源jakarta.servlet.http.HttpServletResponse(Servlet 规范)。
  • 使用场景:Spring MVC(Servlet 环境),由 Tomcat 等容器在每次请求时注入。
  • 设置响应头response.setHeader(name, value)

ServerHttpResponse

  • 来源org.springframework.http.server.reactive.ServerHttpResponse(Spring WebFlux)。
  • 使用场景:Spring WebFlux(Reactive 环境),由 Netty 适配层提供。
  • 设置响应头response.getHeaders().add(name, value)

为何在 Servlet 环境下要改用 HttpServletResponse

  • 项目若为 Spring MVC + Tomcat,容器只会注入 HttpServletResponse,不会注入 ServerHttpResponse
  • ServerHttpResponse 是接口,在 Servlet 请求中无法被实例化/注入,会导致参数解析失败(如:No primary or single unique constructor found for interface ServerHttpResponse)。
  • 因此:Servlet 环境用 HttpServletResponse;WebFlux 环境用 ServerHttpResponse,二者不能混用。

4. spring-boot-starter-web 与 spring-boot-starter-webflux

spring-boot-starter-web

  • 作用:引入「基于 Servlet 的 Web 应用」所需依赖。
  • 包含:Spring MVC、内嵌 Tomcat、Jackson、校验等。
  • 效果:应用以同步、阻塞方式处理 HTTP;Controller 使用 HttpServletRequest / HttpServletResponse,返回普通对象或 ResponseEntity

spring-boot-starter-webflux

  • 作用:引入「基于 Reactive 的 Web 应用」所需依赖。
  • 包含:Spring WebFlux、Reactor Netty(内嵌 Netty)、Reactor 等。
  • 效果:应用以异步、非阻塞方式处理 HTTP;Controller 使用 ServerHttpRequest / ServerHttpResponse,返回 Mono/Flux

对比小结

项目spring-boot-starter-webspring-boot-starter-webflux
Web 框架Spring MVCSpring WebFlux
内嵌服务器TomcatNetty
请求/响应类型HttpServletRequest/ResponseServerHttpRequest/Response
Controller 返回普通对象、ResponseEntityMono<T>、Flux<T>
编程风格同步、阻塞响应式、非阻塞

5. 关系总览

Spring Boot Web 选型 ├── spring-boot-starter-web │ ├── Spring MVC(同步) │ └── Tomcat(Servlet 容器) │ └── HttpServletRequest / HttpServletResponse │ └── spring-boot-starter-webflux ├── Spring WebFlux(响应式) └── Netty(网络框架,作为 HTTP 服务器) └── ServerHttpRequest / ServerHttpResponse 
  • 选 starter-web:MVC + Tomcat + Servlet API。
  • 选 starter-webflux:WebFlux + Netty + Reactive API。
  • 二者是两套不同的技术栈,不能在同一应用中混用请求/响应类型(如 Servlet 环境下不能注入 ServerHttpResponse)。

文档基于项目实践整理,便于后续选型与排错时查阅。

Read more

GTC2026前瞻(二)Agentic AI 与开源模型篇+(三)Physical AI 与机器人篇

GTC2026前瞻(二)Agentic AI 与开源模型篇+(三)Physical AI 与机器人篇

(二)Agentic AI 与开源模型篇 Agentic AI与开源模型:英伟达想定义的,不只是“更聪明的模型”,而是“能持续工作的数字劳动力” 如果说过去两年的大模型竞赛,核心问题还是“谁能生成更像人的答案”,那么到了 GTC 2026,问题已经明显变了。英伟达把 Agentic AI 直接列为大会四大核心主题之一,官方对这一主题的定义也很明确:重点不再是单轮问答,而是让 AI agent 能够推理、规划、检索并执行动作,最终把企业数据转化为可投入生产的“数字劳动力”。这说明,Agentic AI 在英伟达的语境里,已经不是一个前沿概念,而是下一阶段 AI 商业化的主战场。(NVIDIA) 一、GTC 2026真正的变化,是 AI 开始从“会回答”走向“会做事”

35道常见的前端vue面试题,零基础入门到精通,收藏这篇就够了

35道常见的前端vue面试题,零基础入门到精通,收藏这篇就够了

来源 | https://segmentfault.com/a/1190000021936876 今天这篇文章给大家分享一些常见的前端vue面试题。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 对于前端来说,尽管css、html、js是主要的基础知识,但是随着技术的不断发展,出现了很多优秀的mv*框架以及小程序框架。因此,对于前端开发者而言,需要对一些前端框架进行熟练掌握。这篇文章我们一起来聊一聊VUE及全家桶的常见面试问题。 1、请讲述下VUE的MVVM的理解? MVVM 是 Model-View-ViewModel的缩写,即将数据模型与数据表现层通过数据驱动进行分离,从而只需要关系数据模型的开发,而不需要考虑页面的表现,具体说来如下: Model代表数据模型:主要用于定义数据和操作的业务逻辑。 View代表页面展示组件(即dom展现形式):负责将数据模型转化成UI 展现出来。 ViewModel为model和view之间的桥梁:监听模型数据的改变和控制视图行为、处理用户交互。通过双向数据绑定把 View 层和 Model 层连接了起来,而View

【前端开发】HTML+CSS+JavaScript前端三剑客的基础知识体系了解

【前端开发】HTML+CSS+JavaScript前端三剑客的基础知识体系了解

前言 🌟🌟本期讲解关于HTML+CSS+JavaScript的基础知识,小编带领大家简单过一遍~~~ 🌈感兴趣的小伙伴看一看小编主页:GGBondlctrl-ZEEKLOG博客 🔥 你的点赞就是小编不断更新的最大动力                                        🎆那么废话不多说直接开整吧~~   目录 1.HTML  1.1什么是HTML 1.2HTML的基本结构 1.3HTML的快速入门 1.4HTML常见的标签 1.段落标签 2.图片标签 3.超链接标签 4.input标签 5.⽆语义标签: div&span  2.CSS  2.1什么是CSS 2.2CSS基础结构 2.3CSS选择器 1.标签选择器 2.class选择器 3.id选择器 4.通配符选择器  5.

Android WebView 版本升级方案详解

Android WebView 版本升级方案详解 目录 1. 问题背景 2. WebViewUpgrade 项目介绍 3. 升级方法详解 4. 替代方案对比 5. 接入与使用步骤 6. 注意事项与限制 7. 总结与建议 问题背景 WebView 版本差异带来的问题 Android 5.0 以后,WebView 升级需要去 Google Play 安装 APK,但即使安装了也不一定能正常工作。像华为、Amazon 等特殊机型的 WebView 的 Chromium 版本一般比较低,只能使用它自己的 WebView,无法使用 Google 的 WebView。 典型问题场景 H.265 视频播放问题: