在Java servlet中,您从POST请求中读取JSON,例如通过
new JSONObject(toString(httpRequest.getInputStream()))
除了JSON之外,我想在URL中指定参数,可以通过以下方式阅读:
httpRequest.getParameterMap().get("someURLParam")
一切正常(我在服务器端使用AJAX帖子请求和码头)
BUT
我担心并且当这两种方法相互影响时会感到困惑,因为来自javax.servlet.ServletRequest.getParamter(String)
的javadoc说:
如果参数数据是在请求体中发送的,例如发生 使用HTTP POST请求,然后通过直接读取正文 ServletRequest.getInputStream或ServletRequest.getReader都可以 干扰这种方法的执行。
在我的情况下,这意味着什么?或者,如果内容类型为x-www-form-urlencoded
,它们是否只会干扰?或者仅在使用getParameter
并且方法getParameterMap
没问题的情况下?
答案 0 :(得分:0)
如果你只使用getParameter / getParameterMap,你会没事的。这是因为,在幕后,这些方法可能会调用getInputStream。规范说MAY是因为它取决于实现,因此行为可能因容器而异。
如果您的内容不是表单编码,或者您正在处理GET请求等,则getParameter / getParameterMap只需要从查询字符串中获取参数,因此Jetty不会读取正文中的参数那些案件。