关于request.getParameterMap()的类型转换和数据获取

首先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值部分进行转换。

所以回到开始的代码可以看出,做了这部分的转换。

--------------------
做一个精神上的素食主义者。
原文地址:https://www.cnblogs.com/xfile/p/4966463.html