在開發過程中發現request對象有提供一個request.getParameterMap()方法可以獲取到從前端請求發送的參數Map。
但是在使用get()方法通過key(鍵)去獲取這個參數Map中對應的value(值)的時候,發現獲取的是對象。
Map map = request.getParameterMap();
System.out.println(map.get("yanggb")); // [Ljava.lang.String;@4665fc21
通過打印出來的信息,很容易就發現該對象是一個字符串數組,因此我們就可以知道request.getParameterMap()方法返回的map中存儲的值是數組。
我們通過一個循環來校驗一下。
for (Iterator iter = map.entrySet().iterator(); iter.hasNext();) { Map.Entry element = (Map.Entry) iter.next(); Object strKey = element.getKey(); String[] strArr = (String[])element.getValue(); System.out.println(strKey); for (String str : strArr) { System.out.println(str); // yanggb } }
這個時候就發現能夠正常打印出前端請求發送的參數值了。
然后我們將上面最開始的代碼稍微改動一下。
Map map = request.getParameterMap();
String[] yanggbs = (String[])map.get("yanggb"); if (yanggbs.length > 0) { System.out.println(yanggbs[0]); // yanggb }
這樣就能正常獲取到前端請求發送的參數值了。
Map<String, String[]> mapparams = req.getParameterMap(); Set<String> keySet = mapparams.keySet(); // 遍歷存放所有key的Set集合 Iterator<String> it = keySet.iterator(); while (it.hasNext()) { // 利用了Iterator迭代器** // 得到每一個key String key = it.next(); // 通過key獲取對應的value String[] value = mapparams.get(key); System.out.println("key = " +key); for(int i=0; i< value.length; i++) { System.out.println(key + " = " + value[i]); } }