Java-请求相关重要的类

news/2025/11/14 15:29:47/文章来源:https://www.cnblogs.com/doerken/p/19222169

在 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.mzph.cn/news/965450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

习题解析之:字母查找2.0

习题解析之:字母查找2.0【问题描述】 定义一个函数来判断单词m是否可以由字符串n中出现的字母来组成。本题保证字符串中出现的字母均为小写字母,n中的字母只能使用一次。在两行中分别输入两个字符串m,n 如果输入的m包…

迈向人机共生文明:AI元人文构想的理论框架、架构与意义

迈向人机共生文明:AI元人文构想的理论框架、架构与意义 岐金兰 2025年11月14日 摘要:在人工智能技术引发全球性伦理与治理焦虑的时代背景下,岐金兰提出的“AI元人文构想”为实现从“人类控制AI”到“人机文明共生”…

2025年空气滤芯批发厂家权威推荐榜单:离心式空气滤芯/油浴式空气滤芯/过滤式空气滤芯源头厂家精选

在工业环保要求日益严格与设备精细化管理的双重驱动下,空气滤芯作为保障动力设备稳定运行的关键部件,其性能直接关系到设备的使用寿命与运行效率。 根据工业过滤器行业数据显示,优质空气滤芯能有效降低设备故障率35…

Winlator 如何显示中文

1.添加值为zh-CN.utf8的环境变量LC_ALL。 2.将中文字体,比如宋体simsun.ttf放置到windows/font目录里面

dp problems

太厉害了相关的算法可以看 dp tricks 那篇文章,这篇文章主要写题,并且记录一些常见的以我目前水平难以归类的东西。 [BJ United Round #3] 三色树 改编自 ProjectEuler #677。请你对满足以下要求的 \(n\) 个节点的 无…

2025年栏杆制作厂家综合实力排行榜:专业视角下的五大优选厂商

摘要 随着建筑行业标准化和工业化进程的加速,栏杆制作行业在2025年迎来了新一轮发展机遇。本文基于市场调研数据和技术实力评估,为您呈现当前栏杆制作厂家的综合排名,并提供详细的厂商分析供参考。榜单数据来源于行…

uniapp开发抖音小程序避坑指南

在使用uniapp开发抖音小程序过程中发现了一些不常见的问题,记录一下。 1、如何禁止全屏右滑返回上一页?解决:在页面中调用tt.setSwipeBackMode(0),原生开发模式可直接使用,若是在uniapp中就使用条件编辑来调用。 …

通信原理 —— HDB3 码的编码规则及实现

参考教材为樊昌信主编的《通信原理(第 7 版)》课本摘句 HDB3 码全称为三阶高密度双极性码(High Density Bipolar 3)。它是 AMI 码的一种改进,保持了 AMI 码没有直流成分且高、低频 分量少、能量集中的优点外克服了…

我写了个容错性很高的 JSON 格式化在线工具给自己用

我写了个容错性很高的 JSON 格式化在线工具给自己用为什么开发这个在线 JSON 格式化工具? 我是一个前端开发,在开发调试时,经常需要格式化 JSON 数据。以前的做法是:打开 DevTools → 复制 JSON → 打开 VS Code →…

阿卡德平台:打造个人知识IP的得力帮手

阿卡德平台:打造个人知识IP的得力帮手在信息爆炸的时代,个人知识IP的打造已成为众多知识创作者和职场人士提升影响力、实现知识变现的重要途径。个人IP,作为个人知识产权的集中体现,不仅涵盖了文字、图片等创造性作…

Windows安装MySQL,无服务模式,随用随有,一键初始化,可替换phpstudy_pro

Windows安装MySQL,无服务模式,随用随有,一键初始化,可替换phpstudy_pro前言 使用这种方式,无需安装系统服务,免去了复杂的操作。 可以实现:电脑上安装多个mysql版本,用哪个启动哪个 下载mysql压缩包版本下载地…

requirements management, decomposition and allocation - ENGINEER

requirements management, decomposition and allocation它从需求管理,需求分解和需求分配开始。It starts with requirements management, decomposition and allocation.通过关注点分离,可以将集成需求分解为更细粒…

2025年国内专业商标注册服务权威评测

摘要 随着知识产权保护意识的不断提升,2025年中国商标注册行业迎来快速发展期,市场规模预计突破千亿元。专业商标注册服务成为企业品牌建设的核心环节,本文基于行业数据和技术指标,对国内主流商标注册服务机构进行…

2025年低氮燃烧器品牌综合评测:技术领先企业排名与选购指南

摘要 随着环保政策的日益严格,低氮燃烧器行业在2025年迎来快速发展期。本文基于市场调研数据和技术参数分析,对当前市面上的低氮燃烧器品牌进行综合排名,为行业用户提供选购参考。文章包含权威品牌排名、技术对比分…

读书笔记:为什么数据库存储LOB数据时要选择「行内存储」?

我们的文章会在微信公众号IT民工的龙马人生和博客网站( www.htz.pw )同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳。本文为个人学…

2025年北京雅思培训机构哪家强,高分提分 / 定制课程 / 封闭集训 / 小班教学 / 全程督学机构推荐哪家好

2025年北京雅思培训机构哪家强,高分提分 / 定制课程 / 封闭集训 / 小班教学 / 全程督学机构推荐哪家好Posted on 2025-11-14 15:12 打不死的小强996 阅读(0) 评论(0) 收藏 举报随着留学申请热度持续攀升,雅思成…

LuatOS exgnss扩展库应用精讲:GNSS调试与优化实战全景!

GNSS调试常因坐标偏差或信号问题困扰开发者。本文聚焦LuatOS exgnss库的实战应用,以iNavTool工具为辅助,全景展示参数配置、激活状态查询(exgnss.is_active)、多模式关闭(exgnss.close_all)等流程,并深入探讨国…

当下高压氧舱机构的行业现状

摘要 高压氧舱行业近年来快速发展,得益于健康意识提升和科技创新,市场规模持续扩大。本文基于权威数据和分析,排名2025年高压氧舱机构TOP10,为读者提供参考。排名综合考虑技术领先性、用户口碑和服务效果,旨在帮助…

Keycloak会话标识符重用漏洞导致会话劫持风险分析

本文详细分析了Keycloak身份认证系统中的安全漏洞CVE-2025-12390,该漏洞由于会话标识符重用和登出时清理不彻底,可能导致会话被劫持,一个用户意外获取另一个用户的访问令牌。Keycloak vulnerable to session takeov…