[Ljava.lang.String; cannot be cast to java.lang.String

试图通过resquest对象获取前端请求键值对,即request.getParamMap()

本来代码如下:

Map<String,String> map=request.getParamMap();

Map<String,String> map= request.getParameterMap();
Set<String> set=map.keySet();
Iterator<String> it=set.iterator();

 while(it.hasNext())
 {
  String next=  it.next();
     System.out.println("key:"+next+"->value:"+map.get(next));
     
 }
然而报错,这是为什么呢?

看源码,map来自request对象,查看源码即可知道:

/** Returns a java.util.Map of the parameters of this request.
 * Request parameters
 * are extra information sent with the request.  For HTTP servlets,
 * parameters are contained in the query string or posted form data.
 *
 * @return an immutable java.util.Map containing parameter names as 
 * keys and parameter values as map values. The keys in the parameter
 * map are of type String. The values in the parameter map are of type
 * String array.
 *
 */

返回一个request的请求参数map

重点看划线部分的of type String  ,of type String array

就是说key是String

value是String[]

解决后代码:

Map<String,String[]> map= request.getParameterMap();
Set<String> set=map.keySet();
Iterator<String> it=set.iterator();

 while(it.hasNext())
 {
  String next=  it.next();
     System.out.println("key:"+next+"->");
     for(String s:map.get(next))
     {
         System.out.println("value:"+s);
     }

}

运行结果就正常了,

这告诉我们,多看源码,抠单词



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值