HTTPServletRequest getParameterMap()vs getParameterNames

时间:2015-01-01 15:36:27

标签: servlets http-request-parameters

HTTPServletRequest req,方法为getParameterMap(),但值为String[]而不是String,后期数据为

  

名=结婚&安培; lastName的=约翰&安培;年龄= 20

我在帖子数据中看到它不是一个数组,但是getParameterMap()会为每个键(name或lastName或Age)返回数组。是否有更好地理解这一点的指示?

代码在方法2中可用。方法1完全正常。

方法1:

Enumeration<String> parameterNames = req.getParameterNames();

while (parameterNames.hasMoreElements()) {
    String key = (String) parameterNames.nextElement();
    String val = req.getParameter(key);
    System.out.println("A= <" + key + "> Value<" + val + ">");
}

方法2:

Map<String, Object> allMap = req.getParameterMap();

for (String key : allMap.keySet()) {
    String[] strArr = (String[]) allMap.get(key);
    for (String val : strArr) {
        System.out.println("Str Array= " + val);
    }
}

1 个答案:

答案 0 :(得分:15)

如果您期望预先确定的参数,那么您可以使用getParameter(java.lang.String name)方法。

否则,可以使用上面给出的方法,但有些差异,在HTTP请求中,有人可以使用相同的名称发送一个或多个参数。

例如:

name=John, name=Joe, name=Mia

只有当您希望客户端仅为名称发送一个参数值时,才能使用方法1,其余部分将被忽略。在此示例中,您只能阅读&#34; John&#34;

如果您期望多个具有相同名称的值,则可以使用

方法2。值将按照您在代码中显示的数组填充。因此,您将能够阅读所有价值观,即&#34; John&#34;,&#34; Joe&#34;,&#34; Mia&#34;在这个例子中

Documentation