需要获取get请求中的参数,将参数一一保存到数据库
方法一(只适合参数较少的情况):
使用 String a = request.getParameter(“参数名”);不适合参数较多的情况,因为参数太多,然后分别接收,代码显得臃肿,因此在网上寻找有没有简单的方法,最终才发现了方法二
方法二
使用request.getParameterMap()把请求参数封装到Map<String, String[]>中,然后再使用BeanUtils.populate(bean,map)方法,该方法会遍历map<key,value>中的key,如果bean中有这个属性,就把这个key对应的value值赋给bean的属性。所以使用方法二, 注意 :需要请求参数名和实体类中的字段名一样
详细代码如下:
//添加轮胎温度 接口实现
public Map Insert(HttpServletRequest request) throws IOException, IllegalAccessException, InvocationTargetException{
//方法一 单独取值
//String tirenum1 = request.getParameter("tire_num1");
//方法二 使用 getParameterMap() 返回 Map<String, Object>,再使用BeanUtils.populate(bean,map)
//参数名需要和bean类字段名一样
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);
}
TireTemp t = new TireTemp();
//遍历map<key,value>中的key,如果bean中有这个属性,就把这个key对应的value值赋给bean的属性。
BeanUtils.populate(t, returnMap);
System.out.println("getTire_num1:"+t.getTire_num1());
try {
ReturnCarInfo.count = ts.InsertTireTemp(t);//执行添加方法
} catch (Exception e) {
System.out.println("添加数据失败,发生异常:"+e);
}
Map m=new HashMap();
if(ReturnCarInfo.count == 0) {
m.put("msg", ReturnCarInfo.MSG_ERROR);
m.put("code", ReturnCarInfo.CODE_ERROR);
return m;
}else {
m.put("msg", ReturnCarInfo.MSG_SUCCESS);
m.put("code",ReturnCarInfo.CODE_SUCCESS);
m.put("data", ReturnCarInfo.count);
return m;
}
}
初学java的小白,有什么不对的地方,欢迎批评指正,谢谢。
转自 地址.