HttpServletRequest--request.getParameter /getParameterValues/getParameterNames()/getParameterValues

20 篇文章 0 订阅

HttpServletRequest——————request.getParameter /getParameterValues/getParameterNames()/getParameterValues


目录

HttpServletRequest——————request.getParameter /getParameterValues/getParameterNames()/getParameterValues

request.getParameterMap()

1返回值类型为Map,>

  2.返回值类型为Map,>

request.getParameterNames();  


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

 

request.getParameterMap()

1返回值类型为Map<String, Object>

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

import javax.servlet.http.HttpServletRequest;

public class RequestParamsToMap {
  //返回值类型为Map<String, Object>
    public static Map<String, Object> getParameterMap(HttpServletRequest request) {
        Map<String, String[]> properties = request.getParameterMap();//把请求参数封装到Map<String, String[]>中
        Map<String, Object> returnMap = new HashMap<String, Object>();
        Iterator<Entry<String, String[]>> iter = properties.entrySet().iterator();
        String name = "";
        String value = "";
        while (iter.hasNext()) {
            Entry<String, String[]> entry = iter.next();
            name = entry.getKey();
            Object valueObj = entry.getValue();
            if (null == valueObj) {
                value = "";
            } else if (valueObj instanceof String[]) {
                String[] values = (String[]) valueObj;
                for (int i = 0; i < values.length; i++) { //用于请求参数中有多个相同名称
                    value = values[i] + ",";
                }
                value = value.substring(0, value.length() - 1);
            } else {
                value = valueObj.toString();//用于请求参数中请求参数名唯一
            }
            returnMap.put(name, value);
        }
        return returnMap;
    }

 

  2.返回值类型为Map<String, String>


   

//返回值类型为Map<String, String>
    public static Map<String, String> getParameterStringMap(HttpServletRequest request) {
        Map<String, String[]> properties = request.getParameterMap();//把请求参数封装到Map<String, String[]>中
        Map<String, String> returnMap = new HashMap<String, String>();
        String name = "";
        String value = "";
        for (Map.Entry<String, String[]> entry : properties.entrySet()) {
            name = entry.getKey();
            String[] values = entry.getValue();
            if (null == values) {
                value = "";
            } else if (values.length>1) {
                for (int i = 0; i < values.length; i++) { //用于请求参数中有多个相同名称
                    value = values[i] + ",";
                }
                value = value.substring(0, value.length() - 1);
            } else {
                value = values[0];//用于请求参数中请求参数名唯一
            }
            returnMap.put(name, value);
            
        }
        return returnMap;
    }
    
}

 

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

 

request.getParameterNames();  

SortedMap<Object,Object> mapRequest = new TreeMap<Object,Object>();   
                Enumeration<String> paramNames = request.getParameterNames();  
                while (paramNames.hasMoreElements()) {  
                    String paramName = (String) paramNames.nextElement();  
                    String[] paramValues = request.getParameterValues(paramName);  
                    if (paramValues.length == 1) {  
                        String paramValue = paramValues[0];  
                        if (paramValue.length() != 0) {  
                            mapRequest.put(paramName, paramValue);  
                        }  
                    }  
                }
                String params = "";
                for (Map.Entry<Object, Object> entry : mapRequest.entrySet()) {
                    String key = entry.getKey().toString();
                    String value = entry.getValue().toString();
                    params += key+":"+value+"==";
                } 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值