request.getParameterMap()的返回類型是Map類型的對象,也就是符合key-value的對應關系,
但這里要注意的是,value的類型是String[],而不是String.
得到jsp頁面提交的參數很容易,但通過它可以將request中的參數和值變成一個map,以下是將得到的參數和值打印出來,形成的map結構:map(key,value[]),即:key是String型,value是String型數組。
例如:request中的參數t1=1&t1=2&t2=3
形成的map結構:
key=t1;value[0]=1,value[1]=2
key=t2;value[0]=3
如果直接用map.get("t1"),得到的將是:Ljava.lang.String; value只所以是數組形式,就是防止參數名有相同的情況。
如果直接用map.get("t1"),得到的將是:Ljava.lang.String; value只所以是數組形式,就是防止參數名有相同的情況。
將request.getParameterMap()轉換成可操作的普通的map
public static Map getParameterMap(HttpServletRequest request) {
Map properties = request.getParameterMap();
// 返回值Map
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);
}
return returnMap;
}
Map properties = request.getParameterMap();
// 返回值Map
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);
}
return returnMap;
}
還有一種方法也可以實現:
Map maps=request.getParameterMap();
Set sets=maps.keySet();
Iterator it=sets.iterator();
while(it.hasNext()){
String strName=it.next().toString();
out.print(strName);
out.print("=========>>>>");
Object objs=maps.get(strName);
if(objs instanceof String[]){
String[] strs=(String[])objs;
out.print(Arrays.toString(strs));
}
out.print("<br>");
}
Set sets=maps.keySet();
Iterator it=sets.iterator();
while(it.hasNext()){
String strName=it.next().toString();
out.print(strName);
out.print("=========>>>>");
Object objs=maps.get(strName);
if(objs instanceof String[]){
String[] strs=(String[])objs;
out.print(Arrays.toString(strs));
}
out.print("<br>");
}
getParameterNames()是獲取request請求的參數名稱:
Enumeration enums=request.getParameterNames();
while(enums.hasMoreElements()){
out.print(enums.nextElement());
out.print("<br>");
}
while(enums.hasMoreElements()){
out.print(enums.nextElement());
out.print("<br>");
}