request.getReader()的怪异事件

本文探讨了在Servlet中使用getParameterMap()与getReader()方法获取POST请求参数时出现的数据读取冲突问题。当先调用getParameterMap()后,再尝试通过getReader()获取请求体内容时会失败。解决方法是避免同时使用这两个方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Map<String, String[]> pmap = request.getParameterMap(); BufferedReader br = request.getReader(); String res = ""; while ((res = br.readLine()) != null) { System.out.println("request body:" + res); out.print("<BR/>request body:" + res); }

以上代码在servlet里可以打印出来post请求的参数吗?


答案是不可以!!

为什么呢?

这个十分怪异,找了朋友,让他们帮忙用request.getReader()获得post参数,却都告诉我可以拿到。。

我就纳闷了,我的代码哪里出了错?

于是把朋友的代码拷过来,试了一下,成了!

就是第一行的getParameterMap(),这句话把数据读了一遍之后,后面的request.getReader()拿不到了!

去掉第一行的getParameterMap()就可以了。。。。


getReader只能调用一次


原因参考API,及这个帖子http://topic.youkuaiyun.com/t/20030816/03/2152573.html



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值