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

被折叠的 条评论
为什么被折叠?



