您的位置:首页 > 产品设计 > UI/UE

request.getParameterMap()返回的Map详解

2016-03-17 17:57 429 查看
前台传的表单的代码:

<form action="dd.action" method="post">
username:<input name="username"><br> password: <input
name="password" type="password"><br> <input
type="submit" value="submit">
</form>
前台传两个参数:username与password

后台servlet代码:

protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println(request);
Map<String, String[]> parameterMap = request.getParameterMap();
System.out.println("parameterMap:" + parameterMap);
System.out.println(parameterMap.getClass().getName());
System.out.println(parameterMap.size());
String[] usernameArray = parameterMap.get("username");
System.out.println("参数数组的长度:" + usernameArray.length);
String[] passwordArray = parameterMap.get("password");
System.out.println("参数数组的长度:" + passwordArray.length);
System.out.println(passwordArray[0]);
if (passwordArray[0].equals("")) {
System.out.println("参数数组第一个是空字符串");
}
String[] o3 = parameterMap.get("passwd");
System.out.println(o3);
}
前面username的值填zhangsan,password的值什么都不填,则打印结果:

org.apache.catalina.connector.RequestFacade@43c404b2

parameterMap:{username=[Ljava.lang.String;@57102489, password=[Ljava.lang.String;@64cecb06}

org.apache.catalina.util.ParameterMap

2

参数数组的长度:1

参数数组的长度:1

参数数组第一个是空字符串

null

分析结论:

1. 打印的对象实际上是org.apache.catalina.connector.RequestFacade对象,此类是 javax.servlet.http.HttpServletRequest的实现类(在catalina.jar包中);

2. request.getParameterMap()返回的Map的实际类型是org.apache.catalina.util.ParameterMap,此类也在catalina.jar包中;

3. 从requestMap中取存在的参数对应的参数值数组,永远不会是null。如果前端没有传参数值过来,此时参数值数组的长度也是大于0,第一个值是空字符串。如果前端有传参数值过来,此参数值数组的一个值就是前端传的参数值。排除复选框等

4. 如果从requestMap中取不存在的参数对应的参数值数组,不会报异常,会返回null,但如果对null进行取长度,根据索引取值是会报空指针异常;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: