HttpServletRequest的getParameterMap()VS getParameterNames

问题描述 投票:11回答:1

HTTPServletRequest REQ,有一个方法getParameterMap()但是,这些值返回String[]代替String的,用于后的数据作为

名称=结婚&lastName的=约翰&年龄= 20。

我看到在后的数据它不是一个数组,但getParameterMap()每一个键(名字或lastName的或年龄)返回数组。在一个更好的方式理解这个任何指针?

该代码是在方法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 + ">");
}

方法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);
    }
}
servlets http-request-parameters
1个回答
16
投票

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

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

例如:

name=John, name=Joe, name=Mia

方法1可以,如果你希望客户端名称只发送一个参数值的前提下使用,它们的其余部分将被忽略。在这个例子中,你只能读“约翰”

方法2可以,如果你希望用相同的名字不止一个值来使用。当你在代码中显示的值将被填充数组。因此,你可以在这个例子中读取所有的值,即“约翰”,“乔”,“呀”

Documentation

© www.soinside.com 2019 - 2024. All rights reserved.