我的问题是,当我尝试使用POST
访问request.getParameter("name")
变量时,它运行正常。但在某些情况下,当POST
请求到达我的应用程序时,我还需要从查询字符串中获取GET
参数。
据我所知,使用getParameter
,您只能访问当前请求的参数,但是,就像我说的那样,我也需要在{{{}}内获取GET
个参数1}}方法。
有没有办法在不解析查询字符串的情况下获取doPost
参数?
答案 0 :(得分:2)
如果您在查询字符串和发布的表单数据中使用相同名称的参数,请使用getParameterValues()
。
实施例: -
String fromQuery = request.getParameterValues("name")[0];
String fromForm = request.getParameterValues("name")[1];
答案 1 :(得分:1)
getParameter()
方法可以返回(如果可能)GET和POST参数,因为它在GET
和POST
之间透明地工作。您不需要做任何明确的工作来获取GET参数。您可以将getParameter
用于查询参数和POST参数。
但你应该这样做吗? - 它被认为是一种糟糕的设计实践,特别是如果要发送敏感信息。
看一下这个答案:
答案 2 :(得分:1)
我认为你在这里有困惑。您可以使用相同的getParameter(..)
检索所有请求参数(在GET或POST或其他中),具体取决于请求的类型。如果它是GET请求,您可以检索所有GET参数。
如果是POST请求,您可以检索所有POST参数。您可以使用getParameter(...)
获取参数。你一次提出一个请求。如果在html或JSP文件中发出POST请求,则使用doPost方法接收所有参数。此时,GET请求中没有任何内容。然后,您发出GET请求,检索doGet方法中的所有参数。此时,POST中没有任何内容。请记住,HTTP请求是无状态的。
答案 3 :(得分:0)
要完成@Rei答案,请查看以下代码:
您的表格
<form action="?nom=nom1">
<input type="hidden" name="nom" value="nm2"/>
您的doPost
System.out.println(request.getParameter("nom"));
String s = "";
for(String ss : request.getParameterValues("nom")) {
s += "|" + ss;
}
System.out.println(s);
System.out.println(request.getParameterMap().get("nom"));
将打印什么
nom1
|nom1|nm2
[Ljava.lang.String;@c7068db
ps:感谢Julien的代码和测试