15

HTTPServletRequestreq, 有一个方法getParameterMap(),但是值返回 aString[]而不是String, 用于发布数据

姓名=结婚&姓=约翰&年龄=20。

我在帖子数据中看到它不是一个数组,而是getParameterMap()为每个键(名称或姓氏或年龄)返回数组。关于以更好的方式理解这一点的任何指示?

该代码在方法 2 中可用。方法 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 + ">");
}

方法二:

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);
    }
}
4

1 回答 1

21

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

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

例如:

name=John, name=Joe, name=Mia

方法 1 仅在您期望客户端只发送一个名称的参数值时才可以使用,其余的将被忽略。在此示例中,您只能阅读“约翰”

如果您期望多个具有相同名称的值,则可以使用方法 2。如代码中所示,值将填充为数组。因此,您将能够读取所有值,即本例中的“John”、“Joe”、“Mia”

文档

于 2015-01-01T15:50:07.520 回答