标签:
首先po上一个自己写的转换类。
1 /** 2 * @author Xfiler 3 * @described 将request.getParameterMap()转换为普通的Map的工具方法 4 * @param request 5 * @return 6 */ 7 public Map<String, String> convertMap(HttpServletRequest request) { 8 Map<String, String> returnMap = new HashMap<>(); 9 // 转换为Entry 10 Set<Map.Entry<String, String[]>> entries = request.getParameterMap().entrySet(); 11 // 遍历 12 for (Map.Entry<String, String[]> entry : entries) { 13 String key = entry.getKey(); 14 StringBuffer value = new StringBuffer(""); 15 String[] val = entry.getValue(); 16 if (null != val && val.length > 0) { 17 for (String v:val) { 18 value.append(v); 19 } 20 } 21 returnMap.put(key, value.toString()); 22 } 23 24 return returnMap; 25 }
然后我们要问为什么这样做了?
那还是先放上一个报错信息:
java.lang.ClassCastException: [Ljava.lang.String; cannot be cast to java.lang.String at com.xfiler.servlet.MyServlet.doGet(MyServlet.java:53) 客户端表单数据传输到Servlet的doGet()方法类型转换错误.正确结束String[]不能转化为String
这个报错信息说明request.getParameterMap()返回的Map不是我们平常的Map<Object,Object>类型,而是Map<String,String[]>,从而需要将value值部分进行转换。
所以回到开始的代码可以看出,做了这部分的转换。
关于request.getParameterMap()的类型转换和数据获取
标签:
原文地址:http://www.cnblogs.com/xfile/p/4966463.html