venjianX

keep recording ,keep learning

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

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

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

posted on 2015-11-15 13:45  venjianX  阅读(2306)  评论(0编辑  收藏  举报