首先po上一个自己写的转换类。

 /**
* @author Xfiler
* @described 将request.getParameterMap()转换为普通的Map的工具方法
* @param request
* @return
*/
public Map<String, String> convertMap(HttpServletRequest request) {
Map<String, String> returnMap = new HashMap<>();
// 转换为Entry
Set<Map.Entry<String, String[]>> entries = request.getParameterMap().entrySet();
// 遍历
for (Map.Entry<String, String[]> entry : entries) {
String key = entry.getKey();
StringBuffer value = new StringBuffer("");
String[] val = entry.getValue();
if (null != val && val.length > 0) {
for (String v:val) {
value.append(v);
}
}
returnMap.put(key, value.toString());
} return returnMap;
}

然后我们要问为什么这样做了?

那还是先放上一个报错信息:

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()的类型转换和数据获取的更多相关文章

  1. <<< request.getParameterMap()方法

    request.getParameterMap()方法返回的值,是一个Map类型的,记录着所提交的请求中请求参数和请求参数值的映射关系. 当不知道前台传过来的是什么,且不知道传过来的对象时,可用这个, ...

  2. request.getParameterMap()使用方法

    我习惯于加密完 重定向 : Map<String,String[]> getMap = request.getParameterMap(); String[] a = getMap.get ...

  3. 将request.getParameterMap()转换成可操作的普通Map

    在java web项目中虽然可以通过request.getParameterMap()很轻松的获得参数Map,但得到的Map和普通Map是不一样的,是被锁定的,不能像操作常规Map那样进行put.ge ...

  4. request.getParameterMap();

    Map<String, String[]> map = request.getParameterMap(); for(Map.Entry<String,String[]> e: ...

  5. request.getParameterMap()获得Map中的数据

    今天使用request.getParameterMap()获得Map中的数据时,使用        Map map=request.getParameterMap();               i ...

  6. JAVA中request.getParameterMap()用法笔记

    一. 根据Java规范:request.getParameterMap()返回的是一个Map类型的值,该返回值记录着前端(如jsp页面)所提交请求中的请求参数和请求参数值的映射关系.这个返回值有个特别 ...

  7. request.getParameterMap和request.getParameter不一样的显示

    public class KeywordUtil {    /**     * 只提q参数关键字     *     * @param request     * @return 处理后的关键字Str ...

  8. request.getParameterMap() 获取表单提交的键值对 并且 也能获取动态表单的key

    Map<String,String[]> map = request.getParameterMap();Set<String> keys = map.keySet(); 获取 ...

  9. java遍历request.getParameterMap()中的值

    在开发过程中发现request对象有提供一个request.getParameterMap()方法可以获取到从前端请求发送的参数Map. 但是在使用get()方法通过key(键)去获取这个参数Map中 ...

随机推荐

  1. 自定义Toast解决快速点击时重复弹出,排队无止尽

    解决办法:自定义MyToast类: public class MyToast { /** 之前显示的内容 */ private static String oldMsg ; /** Toast对象 * ...

  2. Direct3D 10学习笔记(一)——初始化

    本篇将简单整理Direct3D 10的初始化,具体内容参照< Introduction to 3D Game Programming with DirectX 10>(中文版有汤毅翻译的电 ...

  3. 《制造杀人犯/Making A Murder》中的疑点和感想

         快马加鞭,一天之内看完了完整的10集,很震撼,在案件还存在诸多疑点的情况下.在还有如此多的细节无法确定的情况下,最后由12人组成的陪审团一致通过S.A的谋杀罪成立,尽管初次投票时有7票反对. ...

  4. html 涂改图片功能实现

    网页源码直接贴了: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...

  5. Ansible-Tower快速入门-8.创建组织【翻译】

    创建组织 首行,点击组织标签,组织中将包括有:用户,团队,项目,和清单等项,在tower的对象层级中,组织是最高级对象. 然后,点击增加按钮,如: 为所创建的组织键入一个简单的名称和描述,这些信息你在 ...

  6. redis 原子增一的妙用

    有这样一个需求,插入数据库之前需要了解数据库ID号,考虑到不同的主机怎么去协同这个ID呢 同时要保证每个主机分到不同的ID号,这个比较麻烦,如果独立开一个服务来一个C/S操作比较麻烦,幸好REDIS提 ...

  7. ScriptableObject本地序列化后重启Unity后报The associated script can not be loaded.Please fix any compile errors and assign a valid script的坑

    踩坑 做编辑器一些设置序列化存在本地的时候,继承自ScriptableObject的类通过 创建的asset文件. 在重启Unity后查看这个asset发现上面的所有序列化属性丢失,报的错就是 在不存 ...

  8. 修改hive分区表,在分区列前增加一个字段

    本文主要为了测试,在有数据的分区表中增加新的一个非分区字段后,新数据加入表中是否正常. 原始数据 1;zhangsan 2;zhangsan 3;zhangsan 4;lisi 5;lisi 6;li ...

  9. Hibernate save, saveOrUpdate, persist, merge, update 区别

    Hibernate Save hibernate save()方法能够保存实体到数据库,正如方法名称save这个单词所表明的意思.我们能够在事务之外调用这个方法,这也是我不喜欢使用这个方法保存数据的原 ...

  10. Dedecms自定义表单后台列表展现方式更改

    Dedecms有自定义表单功能,方便我们收集用户信息.个人通常喜欢拿这个功能做问卷调查,在线留言等功能.但是如果使用过这个功能的朋友就会知道,Dedecms自定义表单后台列表展现方式并不好看. 上面就 ...