zoukankan      html  css  js  c++  java
  • 使用getParameterMap()方法实现对请求参数的封装的工具类

      我们知道,HttpServletRequest这个类的getParameter(name),getParameterValues(name)可以分别实现对页面传来的单个参数和对多个同名参数的接受。特别是getParameter(name)这个方法被用的次数特别多。有时候页面传来多个参数的情况下,要写多个request.getParameter(name)进行逐个接受,当然在springmvc框架下你可以在选择使用对象接受参数,也可以在方法上对参数进行逐个接收。但这样做的弊端在于在请求参数个数和名称变化的情况下,你需要创建不同的接受参数的对象进行接收,或者在你的方法上分别对参数进行接受(参数多的情况下,代码就显得很丑陋)。本文的目的在于使用 HttpServletRequest的getParameterMap()这个方法实现对请求参数的封装,下面直接上代码。

     1 import java.util.HashMap;
     2 import java.util.Iterator;
     3 import java.util.Map;
     4 import java.util.Map.Entry;
     5 
     6 import javax.servlet.http.HttpServletRequest;
     7 
     8 public class RequestParamsToMap {
     9   //返回值类型为Map<String, Object>
    10     public static Map<String, Object> getParameterMap(HttpServletRequest request) {
    11         Map<String, String[]> properties = request.getParameterMap();//把请求参数封装到Map<String, String[]>中
    12         Map<String, Object> returnMap = new HashMap<String, Object>();
    13         Iterator<Entry<String, String[]>> iter = properties.entrySet().iterator();
    14         String name = "";
    15         String value = "";
    16         while (iter.hasNext()) {
    17             Entry<String, String[]> entry = iter.next();
    18             name = entry.getKey();
    19             Object valueObj = entry.getValue();
    20             if (null == valueObj) {
    21                 value = "";
    22             } else if (valueObj instanceof String[]) {
    23                 String[] values = (String[]) valueObj;
    24                 for (int i = 0; i < values.length; i++) { //用于请求参数中有多个相同名称
    25                     value = values[i] + ",";
    26                 }
    27                 value = value.substring(0, value.length() - 1);
    28             } else {
    29                 value = valueObj.toString();//用于请求参数中请求参数名唯一
    30             }
    31             returnMap.put(name, value);
    32         }
    33         return returnMap;
    34     }
    35     //返回值类型为Map<String, String>
    36     public static Map<String, String> getParameterStringMap(HttpServletRequest request) {
    37         Map<String, String[]> properties = request.getParameterMap();//把请求参数封装到Map<String, String[]>中
    38         Map<String, String> returnMap = new HashMap<String, String>();
    39         String name = "";
    40         String value = "";
    41         for (Map.Entry<String, String[]> entry : properties.entrySet()) {
    42             name = entry.getKey();
    43             String[] values = entry.getValue();
    44             if (null == values) {
    45                 value = "";
    46             } else if (values.length>1) {
    47                 for (int i = 0; i < values.length; i++) { //用于请求参数中有多个相同名称
    48                     value = values[i] + ",";
    49                 }
    50                 value = value.substring(0, value.length() - 1);
    51             } else {
    52                 value = values[0];//用于请求参数中请求参数名唯一
    53             }
    54             returnMap.put(name, value);
    55             
    56         }
    57         return returnMap;
    58     }
    59     
    60 }

    代码就这么多,当然你要是想把得到的map集合转换成bean对象,可以使用 import org.apache.commons.beanutils.BeanUtils;类的BeanUtils.populate(bean, map)方法实现对map向bean的转换,这个方法会根据map的key值和bean对象的属性进行自动匹配(此时,推荐使用第一个方法)。

  • 相关阅读:
    Arduino Uno微控制器采用的是Atmel的ATmega328
    关于arduino与SPI
    fopen和fopen_s用法的比较
    C语言中 malloc
    补码原理——负数为什么要用补码表示
    晶振
    晶振(crystal)与谐振荡器(oscillator)
    LCD显示器缺陷自动化检测方案
    arduino 动态内存不足问题
    文档生成工具——Doxygen
  • 原文地址:https://www.cnblogs.com/cdf-opensource-007/p/6287780.html
Copyright © 2011-2022 走看看