2013-07-09 33 views
0
**jsp Code** 

<html> 

<body> 
<form action="test.do"> 
Name:<input type="text" name="name"/> 
Sname:<input type="text" name="sname"/> 
<input type="submit" value="sub"> 
</form> 
</body> 
</html> 

**Servlet Code** 
@WebServlet("/test.do") 
public class TestServlet extends HttpServlet { 
@Override 
protected void service(HttpServletRequest arg0, HttpServletResponse arg1) 
     throws ServletException, IOException { 
    Map hm=arg0.getParameterMap(); 
    //System.out.println("Map"+hm); 
    Set s=hm.keySet(); 

    //System.out.println("SET"+s); 
    Iterator it=s.iterator(); 
    while(it.hasNext()){ 
     String key=""; 
     Object obj=it.next(); 
     key=(String)obj; 
     System.out.println(key); 
     Object obj1=hm.get(key); 
    String val[]=(String[])obj1; 
     System.out.println(key+"...."+val); 
     } 

} 
} 

當我使用這段代碼時,我可以訪問Key而不是values.I獲取Ljava.lang.String的值; @ 199832c form!如何使用Map訪問Servlet中的httpRequest數據?

我如何可以存儲來自請求並將其存儲在地圖的所有數據。

+0

@TheNewIdiot可能發佈一個答案嗎? (int i = 0; i

+0

是的,在添加此代碼後,即可訪問values.thunk(System.out.println(key +「....」+ val [i ]);} –

回答

0

ServletRequest#getParameterMap()返回你java.util.Map<java.lang.String,java.lang.String[]>的方法。您可以使用簡單的Java代碼從String[]中獲取各個值,並使用循環迭代String[]

要打印的String[]陣列val因此你得到這樣一個String Ljava.lang.String;@199832c,因爲它使用Object定義toString()默認的實現!您可以使用Arrays.toString(val)來打印陣列的實際內容。

1

如前所述here,您可以使用values方法得到的值。或者,您可以使用entrySet獲取地圖的每個條目。迭代通過您的entrySet的代碼如下所示:

protected void service(HttpServletRequest arg0, HttpServletResponse arg1) 
     throws ServletException, IOException { 
    Map<String, String[]) hm=arg0.getParameterMap(); 
    //System.out.println("Map"+hm); 
    Set<Map.Entry<String, String[]>> s=hm.entrySet(); 
    for (Map.Entry<String,String[]> e:s) { 
     System.err.println(String.format("%s maps to %s"), e.getKey(), Arrays.toString(e.getValue())); 
    } 

如果您還有其他問題,請發表評論。