**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形式!!
我如何在地图中存储来自请求和存储的所有数据。
答案 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)
来打印数组的实际内容。