处理HttpServletRequest 请求参数与参数转换为实体类

此文是自己作记录用,适用于新手参考。资深程序员请绕道

当前端传递大批量参数时,后端需要进行获取参数与赋值给对应实体类 (当然这种情况为 前端传递的 参数名 与 实体类中的参数名称不相同。如果传递的参数名与实体类参数相同,由于SpringMCV的特性,则Controller层的对应的方法,直接用 实体类去接收,会自行赋值)

 

代码如下 :

 

import net.sf.json.JSONObject;
import org.apache.commons.beanutils.BeanUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.Map;

/**
 * Created by huyong on 2016/6/16.
 */
public class RequestUtil {

    private static final Logger LOGGER = LoggerFactory.getLogger(RequestUtil.class);

    private RequestUtil() {}


    /**
     * request的全部参数转换成map
     * @param request
     * @return
     */
    @SuppressWarnings("unchecked")
    public static Map<String, String[]> getMap(HttpServletRequest request){

        return request.getParameterMap();
    }


    /**
     * request的部分参数转换成map:
     * 根据的keys指定的的Key从request取出值放到Map中
     * @param request
     * @param keys 需要转的key,多个key用豆号隔开
     * @return
     */
    public static Map<String,Object> getMap(HttpServletRequest request, String keys){
        String[] split = keys.split(",");
        Map<String,Object> map = new HashMap<String, Object>(split.length);
        for (String key : split) {
            map.put(key, request.getParameter(key));
        }
        return map;
    }

    /**
     * 解析JSONObject对象转换为 map
     * @param keys
     * @param MainJsonObj
     * @return
     */
    public static Map<String,Object> getMap(String keys,JSONObject MainJsonObj){
        String[] split = keys.split(",");
        Map<String,Object> map = new HashMap<String, Object>(split.length);
        for(String key:split){
           map.put(key,MainJsonObj.getString(key));
        }
        return map;
    }

    /**
     * 将map转换成bean对象:
     * 根据Map的keyValues创建Bean对象
     * @param theClass
     * @param keyValues
     * @return
     */
    public static <T> T getBean(Class<T> theClass,Map<String,Object> keyValues){
        T bean = null;
        try {
            bean = theClass.newInstance();
            BeanUtils.populate(bean, keyValues);
        } catch (Exception e) {
            LOGGER.error("map转换成bean对象出错", e);
        }
        return bean;
    }
}

 

 

 

 

再一个例子,传递的参数名如果与实体类的参数名相同,则直接用实体类接收。如下 User Info 为实体类,里面有参数 userName,sex ,age 等参数,那么前端页面则也传递这些参数名称,则会自动赋值。

 

/**
 * 保存用户信息
 * @return
 */
@RequestMapping("/save")
@ResponseBody
public Result save(UserInfo userInfo){
    Map<String,Object> map = Maps.newConcurrentMap();
    
    return successResponse(map);
}

 

 

 

 


版权声明:本文为u011677147原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
THE END
< <上一篇
下一篇>>