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 但不能访问值。我以 Ljava.lang.String;@199832c 形式获取值!

我如何存储来自请求的所有数据并存储在地图中。

4

2 回答 2

1

如此处所述,您可以使用该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()));
    }

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

于 2013-07-09T16:11:57.750 回答
0

ServletRequest#getParameterMap()方法返回您java.util.Map<java.lang.String,java.lang.String[]>String[]您可以使用简单的 Java 代码从 中获取各个值,使用循环进行迭代String[]

您正在打印String[]数组,val因此您得到了这样一个 String ,因为它使用了在中定义Ljava.lang.String;@199832c的默认实现!您可以改为使用打印数组的实际内容。toString()ObjectArrays.toString(val)

于 2013-07-09T16:01:55.667 回答