HttpServletRequest 的三个方法request.getParameter()、request.getInputStream()、request.getReader()

简介: 在 Java Web 开发中,HttpServletRequest 是处理 HTTP 请求的接口,提供了多种方法用于获取客户端请求的不同类型的数据。三种常见的方法是 getParameter()、getInputStream() 和 getReader()。它们各自的作用和使用场景有所不同,下面详细解释这三个方法的区别与应用。
  1. request.getParameter()

作用:

getParameter() 方法用于从请求中获取 表单参数 或 查询字符串(即 URL 参数)中的值。
它返回的是请求中指定参数的值(通常为字符串类型)。如果请求中包含多个同名参数,则返回第一个值。
使用场景:

适用于 GET 请求和 POST 请求,尤其是 表单提交数据(如 application/x-www-form-urlencoded 或 multipart/form-data 类型的表单)。
示例:

String username = request.getParameter("username");
String password = request.getParameter("password");
php
103 Bytes
© 菜鸟-创作你的创作
假设客户端通过 URL 或表单提交如下数据:

GET /login?username=alice&password=secret
php
41 Bytes
© 菜鸟-创作你的创作
或通过表单提交数据:






php
160 Bytes
© 菜鸟-创作你的创作
注意:

getParameter() 总是返回 字符串类型,即使表单元素的数据类型是数字或其他类型,返回的也是字符串。如果需要处理其他数据类型,需要手动转换。
对于 GET 请求,参数会通过 URL 中的查询字符串传递;对于 POST 请求,参数会放在请求体中。

  1. request.getInputStream()

作用:

getInputStream() 方法用于获取 HTTP 请求的 原始字节流。它返回一个 ServletInputStream 对象,允许开发者通过字节流的方式读取请求体中的内容。
适用于读取 非表单的请求数据,如文件上传、JSON、XML 等请求体数据。
使用场景:

适用于 POST 请求,尤其是提交文件或 二进制数据,或者发送非表单数据(如 JSON 或 XML)。
示例:

ServletInputStream inputStream = request.getInputStream();
byte[] buffer = new byte[1024];
int bytesRead;
while ((bytesRead = inputStream.read(buffer)) != -1) {
// 处理字节数据
}
inputStream.close();
php
197 Bytes
© 菜鸟-创作你的创作
注意:

getInputStream() 返回的是字节流,因此适用于读取二进制数据或需要精确控制数据格式的情况。读取请求体的内容时,需要自己处理字符编码(如果是文本数据)。
该方法可以用于处理文件上传、读取 XML、JSON 等格式的数据。
一般与 getReader() 不能共用,因为它们都读取请求体,调用其中一个方法后,输入流将会关闭。

  1. request.getReader()

作用:

getReader() 方法返回一个 BufferedReader 对象,用于以字符流的方式读取请求体中的内容。适用于 文本数据,如 JSON、XML 或其他字符编码的数据。
与 getInputStream() 相比,getReader() 更适合处理 字符数据,如 JSON、XML 等格式。
使用场景:

适用于 POST 请求,并且请求体中的数据是 字符编码的文本内容(如 JSON、XML、纯文本等)。
示例:

BufferedReader reader = request.getReader();
StringBuilder stringBuilder = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
stringBuilder.append(line);
}
reader.close();
String body = stringBuilder.toString();
php
243 Bytes
© 菜鸟-创作你的创作
假设客户端发送的是 JSON 数据:

{
"username": "alice",
"password": "secret"
}
php
53 Bytes
© 菜鸟-创作你的创作
注意:

getReader() 返回的是 字符流,适用于处理文本数据。默认会使用 UTF-8 字符编码进行解码(除非设置了其他编码)。
一般用于处理 JSON、XML 等文本格式数据。
不能和 getInputStream() 一起使用,因为它们都操作请求体内容。
总结:

方法 作用 返回值 适用场景 特点
getParameter() 获取请求参数 字符串 表单提交、URL 查询参数 适用于表单数据,自动处理 URL 编码,返回字符串
getInputStream() 获取请求体的字节流 ServletInputStream 文件上传、二进制数据、JSON、XML 适用于二进制数据,需手动处理编码
getReader() 获取请求体的字符流 BufferedReader JSON、XML、文本数据 适用于字符数据,自动处理字符编码(UTF-8)
适用场景:

如果请求数据为 表单数据(如 application/x-www-form-urlencoded 或 multipart/form-data),使用 getParameter()。
如果请求包含 二进制数据 或 文件上传,使用 getInputStream()。
如果请求包含 文本数据(如 JSON 或 XML),使用 getReader()。
了解这三者的区别并选择合适的方法,可以帮助开发者更有效地处理 HTTP 请求中的数据。
https://www.52runoob.com/archives/4074

目录
相关文章
|
7天前
|
云安全 人工智能 运维
阿里云联动百位企业安全专家,共识Agent防御最佳实践
当Agent成为新员工,你的安全边界在哪里?
1922 6
阿里云联动百位企业安全专家,共识Agent防御最佳实践
|
5天前
|
存储 人工智能 关系型数据库
阿里云AI产品与云产品最新组合套餐:Token Plan、AI coding及云服务器和建站等组合优惠价
阿里云推出全新“算力+模型+应用”一站式云与AI组合套餐活动,覆盖从个人开发者到中大型企业的全场景需求。核心亮点为分三档定价的Token Plan订阅服务,支持Qwen3.8-Max-Preview大模型调用,错峰时段最低可享0.2折优惠。活动同步推出AI Coding、智能体部署、云电脑托管、0代码建站等十余类场景化组合,搭配99元/年的普惠云服务器、88元/年的入门数据库等经典特惠产品,还为企业提供1V1定制化AI转型方案,大幅降低了不同用户群体拥抱AI的技术门槛与采购成本。
652 111
|
15天前
|
人工智能 JSON 安全
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
阿里云AI安全产品联动防御Fastjson攻击
2556 13
Fastjson远程代码执行漏洞,阿里云AI安全为您保驾护航
|
7天前
|
人工智能 弹性计算 数据库
阿里云优惠券种类解析:主要券种区别和适用群体及领取和使用指南
2026年阿里云构建了覆盖全用户的七类优惠券,本文逐一拆解了每类优惠券的核心规则、适用人群与使用技巧:大促限定的阶梯满减券分个人、企业双通道,最高可减800元;学生专属300元无门槛券支持全品类通用;按量付费用户可参与消费达标返券形成循环优惠;新用户有低门槛专享满减券尝鲜;老用户可领取系统自动发放的随机福利券;中大型企业迁云可申请最高100万元的专项补贴;云产品通用券还能在活动价基础上实现折上折。不同身份、不同采购场景的用户均可通过精准匹配对应优惠券,最大化享受优惠力度。
461 110
阿里云优惠券种类解析:主要券种区别和适用群体及领取和使用指南
|
13天前
|
人工智能 前端开发 Linux
Codex 桌面版安装 + CC Switch 接入第三方 API 完整教程(2026 最新)
2026最新教程:手把手教你安装Codex桌面版,通过CC Switch v3.17.0一键接入Fenno等国产API(兼容OpenAI Responses格式),跳过账号登录,完整启用代码审查、多步任务与上下文感知功能。零基础友好,全程图文实操。(239字)
1615 2
|
15天前
|
人工智能 自然语言处理 数据挖掘
Qwen3.8-Max-Preview深度全解析:2.4万亿参数旗舰MoE模型+Token Plan限时优惠完整落地指南
2026年7月,全新旗舰级混合专家大模型Qwen3.8-Max-Preview正式开放抢先体验,作为通义千问Qwen3系列规格最高、综合推理能力顶尖的新一代模型,该模型总参数量达到2.4万亿(2.4T),是当前线上可调用的原生多模态旗舰模型,综合推理水准对标海外顶级Fable 5模型,在复杂工程开发、长文档深度分析、多步骤智能体自治、跨境多语言创作、海量数据挖掘五大高难度业务场景实现跨越式性能提升。
1428 2
|
17天前
|
人工智能
Qwen3.8抢先体验!正式版即将发布并开源!
千问Qwen3.8即将开源,参数达2.4T,进化速度以“天”计,实力媲美Fable 5。预览版Qwen3.8-Max已上线阿里Token Plan等平台,限时优惠:日间Credits低至1折,夜间更优,个人/团队版月付仅35元起!
1498 55
|
2天前
Qoder 一周年 × Qwen3.8-Max 正式上线,多重好礼限时领
8月3日,Qwen3.8-Max 正式上线Qoder,迎来Qoder一周年。新老用户可领800次免费调用,下单再赠2000次;夜间(22:00–08:00)调用5折;邀请好友双方得积分与调用额度。
247 0