当前位置:   article > 正文

servlet如何获取post请求的参数_servlet获取post请求参数

servlet获取post请求参数

通常我们利用request.getParameter(参数名称)来获取url上面或者ajax.data提交上来的参数,但是例如用httpClient中的httpPost.setEntry()的方法提交的参数是没有参数名称的, 使用request.getParameter(参数名称)便无法获取参数值,我们可以用request.getInputStream()(io流)方法来获取body中的内容,获取的是一个json串,再使用JSONObject.fromObject(json串);即可解析到里面各个参数的值。

   假设我们获取的内容既有url提交的参数,也有httpClient中的httpPost.setEntry()的方法提交的参数,这个时候该怎么获取 参数的值呢,

   正常思路应该是:先使用request.getParameter(参数名称)获取url上面的参数,

   再使用request.getInputStream()(io流)获取body里面的无参数名称的内容

   此时会发现使用io流获取的参数内容是null

   原因是:servlet规范:同时满足下列条件,则请求体中的数据将被填充到Parameter集合中

   1:是一个http/https请求

   2:请求方法是post

   3:请求类型(content-Type)是application/x-www-form-urlencoded

   4: Servlet调用了getParameter系列方法

   如果上述条件没有同时满足,则相关的表单数据不会被设置进request的parameter集合中,

   相关的数据可以通过request.getInputStream()来访问。反之,如果上述条件均满足,

   相关的表单数据将不能再通过request.getInputStream()来读取。

   根据这个规范的说明,当我们在调用request.getParameter(参数名称)的方法时,

   通过httpClient中的httpPost.setEntry()提交的数据(请求体)被填充到了parameter集合中了,

   所以后面的通过request.getInputStream获取数据流时就为空。

   最终这个问题的解决方案是把request.getParameter(参数名称);

   放到request.getInputStream之后,这样就回避了servlet的规范,可以正常获取想要的参数值了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/309899?site
推荐阅读
相关标签
  

闽ICP备14008679号