如何使用Map访问servlet中的http请求数据?

时间:2013-07-09 15:54:21

标签: java servlets httprequest

**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形式!!

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

2 个答案:

答案 0 :(得分: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()));
    }

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

答案 1 :(得分:0)

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

您正在打印String[]数组val,因此您获得了这样的字符串Ljava.lang.String;@199832c,因为它使用toString()中定义的Object的默认实现!您可以使用Arrays.toString(val)来打印数组的实际内容。