2013-07-09 29 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())); 
    } 

如果您还有其他问题,请发表评论。