request.getParameterMap()返回的Map详解
2016-03-17 17:57
429 查看
前台传的表单的代码:
后台servlet代码:
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进行取长度,根据索引取值是会报空指针异常;
<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进行取长度,根据索引取值是会报空指针异常;
相关文章推荐
- UICollectionView
- 160317(一)、在非action中获取request
- MySql.Data.Entity 在EF中解析uint的枚举时有BUG
- iOS开发UI篇—核心动画(基础动画)
- UIImage与Base64图片的相互转化
- iOS本地推送通知UILocalNotification(可以用做类似闹钟提醒)
- UIImageJPEGRepresentation和UIImagePNGRepresentation
- Handler、Message、MessageQueue、Looper协作简析
- dephi tcxgrid How to Retrieve the Record Values for the Selected Grid Rows
- baiduIFE春季班 任务一笔记
- javax.persistence.NoResultException: No entity found for query 异常解决办法
- 关于 UITextField 的总结
- 登录cloudera manager,并查询impala query历史java示例
- 关于 UILabel 的总结
- 关于 UIButton 的总结
- 关于 UISearchBar 的总结
- 并发编程之Operation Queue
- 【easyui】combotree类似combobox模糊查询功能,动态加载数据
- 【bzoj1670】[Usaco2006 Oct]Building the Moat护城河的挖掘 求凸包
- QtQuick获取屏幕信息