当前位置: 首页 > news >正文

Java-请求相关重要的类

在 Java Web 开发(尤其是基于 Servlet 规范和 Spring Boot 的应用)中,处理 HTTP 请求(Request) 与 响应(Response) 涉及多个核心类。

一、底层:Servlet API(由 Tomcat/Jetty 等容器提供)

这些是 Java EE(现 Jakarta EE)标准的一部分,所有 Java Web 框架(包括 Spring)都构建在其之上。

1.HttpServletRequest

作用:封装客户端发来的 HTTP 请求。
能获取什么:

URL、Method(GET/POST)
Headers(如 Authorization、User-Agent)
Query parameters(?id=123)
Form data(application/x-www-form-urlencoded)
Raw body(通过 getInputStream())
Cookies、Session、客户端 IP 等

典型使用场景:拦截器、过滤器、底层日志、安全审计。

2.HttpServletResponse

作用:用于构造返回给客户端的 HTTP 响应。
能做什么:

设置状态码(setStatus(404))
设置响应头(setHeader("Cache-Control", "no-cache"))
写入响应体(getWriter().write("Hello") 或 getOutputStream())

注意:一旦调用 getWriter() 或 getOutputStream(),响应就“提交”了,不能再改头或状态码。

二、Spring MVC 层:高级封装(推荐日常使用)

Spring 对 Servlet API 做了优雅封装,无需直接操作原始流。

3.@RequestBody / @ResponseBody

虽然不是“类”,但它们是处理请求体和响应体的核心机制。
@RequestBody:将 HTTP 请求体(如 JSON)自动反序列化为 Java 对象。
@ResponseBody:将返回值自动序列化为 HTTP 响应体(如 JSON)。

4.ResponseEntity

作用:Spring 提供的完整 HTTP 响应封装类。
包含:响应体(body)、HTTP 状态码(status)、响应头(headers)。
典型用途:

return ResponseEntity.status(201).header("Location", "/users/1").body(user);

5.RequestEntity

作用:用于发起 HTTP 请求时封装请求(常用于 RestTemplate 或 WebClient)。
包含:请求体、方法、URL、头等。
示例:

RequestEntity<User> request = RequestEntity.post(uri).header("Authorization", "Bearer xxx").body(user);

三、数据载体类(用于传输结构化数据)

6.HttpHeaders

作用:Spring 封装的 HTTP 头容器,类型安全、支持多值头。
常与 ResponseEntity / RequestEntity 配合使用:

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("X-Custom", "value");

7.MultiValueMap<String, String>

作用:表示可包含多个值的 Map(如 ?role=admin&role=user)。
常用于表单数据、查询参数、头字段(某些头允许多值)。
Spring 的 LinkedMultiValueMap 是常用实现。

四、JSON 处理相关

8.ObjectMapper(Jackson)

作用:Spring Boot 默认的 JSON 序列化/反序列化工具。
虽不直接出现在 Controller 方法签名中,但支撑了 @RequestBody / @ResponseBody 的底层转换。
也可手动使用:

JsonNode node = objectMapper.readTree(requestBodyString);

注意:org.json.JSONObject 或 Fastjson.JSONObject 属于第三方库,不是标准请求响应类,仅用于临时 JSON 操作。

五、现代响应式编程(Spring WebFlux)

如果使用响应式栈(非阻塞),则对应类为:

9. ServerHttpRequest / ServerHttpResponse

WebFlux 中对 HTTP 请求/响应的抽象(类似 Servlet 的 HttpServletRequest/Response,但支持响应式流)。

10. Mono<ResponseEntity> / Flux

响应式返回类型,用于异步非阻塞处理。

六、核心类关系图

客户端 HTTP 请求↓
[HttpServletRequest] ←(Servlet 容器创建)↓
Spring MVC 解析 → [@PathVariable, @RequestParam, @RequestBody]↓
Controller 方法处理↓
返回 → [ResponseEntity<T>] 或 直接对象(隐式 @ResponseBody)↓
[HttpServletResponse] ←(Spring 填充后由容器发送)↓
客户端收到 HTTP 响应

七、开发建议

image

http://www.jsqmd.com/news/40328/

相关文章:

  • 习题解析之:字母查找2.0
  • 迈向人机共生文明:AI元人文构想的理论框架、架构与意义
  • 2025年空气滤芯批发厂家权威推荐榜单:离心式空气滤芯/油浴式空气滤芯/过滤式空气滤芯源头厂家精选
  • Winlator 如何显示中文
  • 通信原理 —— HDB3 码的编码规则及实现
  • 我写了个容错性很高的 JSON 格式化在线工具给自己用
  • 阿卡德平台:打造个人知识IP的得力帮手
  • 散滞气汤的用法和主要对症
  • Windows安装MySQL,无服务模式,随用随有,一键初始化,可替换phpstudy_pro
  • requirements management, decomposition and allocation - ENGINEER
  • 2025年国内专业商标注册服务权威评测
  • 2025年低氮燃烧器品牌综合评测:技术领先企业排名与选购指南
  • 2025年国内废气废液焚烧厂家综合实力Top5权威评测
  • 读书笔记:为什么数据库存储LOB数据时要选择「行内存储」?
  • 2025年北京雅思培训机构哪家强,高分提分 / 定制课程 / 封闭集训 / 小班教学 / 全程督学机构推荐哪家好
  • 当下高压氧舱机构的行业现状
  • Keycloak会话标识符重用漏洞导致会话劫持风险分析
  • B5817W-ASEMI可直接替换安世PMEG2005EH
  • 4.2.3 疲劳强度试验 11.14
  • [LangChain] 17. Memory基础
  • Java Exchanger
  • 2025 最新净化工程厂家推荐排行榜 实验室 / 手术室 / 医药 / 食品 / 厂房洁净工程优质服务商医药/食品净化工程/净化车间工程公司推荐
  • 通配符优化 dp 学习笔记
  • 2025年尖角方管实力厂家权威推荐榜单:玻璃幕墙精致钢/直角方矩管/精制钢源头厂家精选
  • 20232308 2025-2026-1 《网络与系统攻防技术》实验五实验报告
  • TurboWarp 部署云变量服务
  • Java 信号量机制实现
  • lc:338练习的一点思考
  • 京东商品评论接口深度逆向:从加密参数破解到情感倾向分析
  • [LangChian] 18. 自动维护聊天记录