2011-08-24 65 views
0
mylogger.info("original request start: "+request.getQueryString()); 
System.out.println("Query1:" + request.getQueryString()); 
QueryStats queryStats=new QueryStats(); 
Map parameterMap = request.getParameterMap()==null? null:new HashMap(request.getParameterMap()); 
System.out.println("Query2:" + parameterMap); 

Collection newParamsValue=parameterMap.values(); 
Object newParams[]=newParamsValue.toArray(); 
StringBuffer strParam=new StringBuffer() ; 
int l=newParams.length; 
for(int i=0;i<l;i++){ 
    **strParam=strParam.append((StringBuffer)newParams[i]);** 
} 

我想把所有的值都放到一個字符串中。我怎麼才能得到它?如何從HashMap中獲取鍵值對的值?

+0

可能要分析'newParams [I]''到String'而不是'StringBuffer'。 –

+0

將Java代碼寫入JSP文件而不是Java類不會使其成爲JSP問題。我用Java標籤取代了JSP標籤。 – BalusC

回答

0

使用StringBuilder:

StringBuilder sb = new StringBuidler(); 

for(int i=0;i<l;i++){ 
    sb.append(newParams[i].toString()); 
} 
+2

此答案無效。參數值是一個String []'。 'toString()'將返回一個完全不同於你預期的值。 – BalusC

0

以前的建議略有變化:

StringBuilder sb = new StringBuilder(); 

for (Object o : parameterMap.values()) { 
    String[] parameterValues = (String[]) o; 
    for (String parameterValue : parameterValues) { 
     sb.add(parameterValue); 
    } 

} 
+0

請注意,for-each結構僅適用於J2SE_1.5。在這個版本之前,只有可能的做一個for-each循環與結構的基本結構 – Charliemops

+1

這個答案是無效的。參數值是一個String []'。 'toString()'將返回一個完全不同於你預期的值。 – BalusC

+0

@ TheCharliemops:你說得對,但是FYI JDK 5於2004年發佈!所以人們會認爲它被廣泛使用,OP中沒有任何相反的地方。 –

1

parameter mapMap<String, String[]>。建議的Object[]#toString()答案根本不起作用。您還需要遍歷String[]。此外,您必須對鍵值對進行網址編碼才能創建適當的HTTP查詢字符串。下面是它應該怎麼做:

public static String toQueryString(Map<String, String[]> params) { 
    StringBuilder queryString = new StringBuilder(); 

    for (Entry<String, String[]> param : params.entrySet()) { 
     for (String value : param.getValue()) { 
      if (queryString.length() > 0) { 
       queryString.append("&amp;"); 
      } 

      queryString 
       .append(URLEncoder.encode(param.getKey(), "UTF-8")) 
       .append("=") 
       .append(URLEncoder.encode(value, "UTF-8")); 
     } 
    } 

    return queryString.toString(); 
} 

使用此如下

Map<String, String[]> params = request.getParameterMap(); 
String queryString = toQueryString(params); 
// ...