request.getReader()的怪异事件

本文探讨了在Servlet环境下使用request.getReader()获取POST请求参数时的一个常见误解,解释了为何直接调用getParameterMap()会导致后续无法正确获取请求体数据。通过实例分析,揭示了request.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



评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值