您的位置:首页 > 理论基础 > 计算机网络

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

2017-11-16 11:11 1311 查看
此文是自己作记录用,适用于新手参考。资深程序员请绕道

当前端传递大批量参数时,后端需要进行获取参数与赋值给对应实体类 (当然这种情况为 前端传递的 参数名 与 实体类中的参数名称不相同。如果传递的参数名与实体类参数相同,由于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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐