【发布时间】:2018-10-04 01:57:53
【问题描述】:
有没有一种可靠的方法可以使用HttpServletRequest 分别提取GET 和POST 参数?
也就是说,将查询字符串中发送的参数 (GET) 与请求正文中发送的参数 (POST) 区分开来,假设为 Content-Type: application/x-www-form-urlencoded。
示例
POST /path HTTP/1.1
Host: test.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 42
first_name=posted_foo&last_name=posted_bar
我希望得到两个变量,一个包含来自 URL 的值,另一个包含来自请求正文的值:
get = {"first_name": "foo", "last_name": "bar"}
post = {"first_name": "posted_foo", "last_name": "posted_bar"}
我似乎能够提取这些参数的唯一方法是 getParameter* 方法。
-
HttpServletRequest.getParameter:返回单个字符串,通常是 URL (GET) 中提供的值。 -
HttpServletRequest.getParameterValues:返回一个字符串数组,其中包含查询字符串和请求正文中提供的所有值。通过查询字符串传递的那些往往首先出现。但是,如果返回的字符串数组中只有一个值,则无法可靠地确定该值是来自查询字符串还是请求正文。
为了说明,使用 PHP,这些值是通过 $_GET 和 $_POST 超全局变量提供的。
【问题讨论】:
标签: java http servlets jakarta-ee