使用request的getParameterMap(),将前段ajax传递的Object数据转化为Map对象
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;
}
//返回值类型为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;
}
}
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
@SuppressWarnings("rawtypes")
public class ParameterMap extends HashMap implements Map {
private static final long serialVersionUID = 1L;
Map map = null;
HttpServletRequest request;
@SuppressWarnings("unchecked")
public ParameterMap(HttpServletRequest request) {
this.request = request;
Map properties = request.getParameterMap();
Map returnMap = new HashMap();
Iterator entries = properties.entrySet().iterator();
Map.Entry entry;
String name = "";
String value = "";
while (entries.hasNext()) {
entry = (Map.Entry) entries.next();
name = (String) 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);
}
map = returnMap;
}
public ParameterMap() {
map = new HashMap();
}
......
}
前端
var data={"key1":"value1","key2":"value2"……}
$.ajax({
type: 'get',
url : 'xxx',
data :data,
dataType : 'json',
contentType:"application/json",
success : function(data) {
console.log(data);
},
});
后台控制器
@RequestMapping(value = "xxx")
@ResponseBody
public String getService(HttpServletRequest request) {
ParameterMap pd = new ParameterMap(request);
String url=ParameterMap.getString("key1");
ParameterMap.remove("key1");
String response=HttpUtils.URLPost(url,pd); //此处HttpUtils.URLPost()方法省略
return response;
}