正在转储java.util.Map的内容-未按预期工作
我想根据@Greg Kopff发布的回复来回答这个问题 基本上,我要做的是将request.getParameterMap()方法返回的映射的内容转储到输出 我将得到以下奇怪的映射作为输出(我认为其值是字符串或字符串数组的对象引用的地址) {submit=[Ljava.lang.String;@1fe4169,color=[Ljava.lang.String;@178920a, chek_games=[Ljava.lang.String;@bbfa5c,foo=[Ljava.lang.String;@131de9b} 我尝试了以下代码- public class CoffeeSelect extends HttpServlet { protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { Map requestParams = req.getParameterMap(); resp.getWriter().println(requestParams); } } 公共类CoffeeSelect扩展了HttpServlet{ 受保护的void doPost(HttpServletRequest-req,HttpServletResponse-resp)引发ServletException,IOException{ Map requestParams=req.getParameterMap(); resp.getWriter().println(requestParams); } } 下面是我的HTML 绿色 红色 蓝色正在转储java.util.Map的内容-未按预期工作,java,servlets,collections,Java,Servlets,Collections,我想根据@Greg Kopff发布的回复来回答这个问题 基本上,我要做的是将request.getParameterMap()方法返回的映射的内容转储到输出 我将得到以下奇怪的映射作为输出(我认为其值是字符串或字符串数组的对象引用的地址) {submit=[Ljava.lang.String;@1fe4169,color=[Ljava.lang.String;@178920a, chek_games=[Ljava.lang.String;@bbfa5c,foo=[Ljava.lang.Strin
如何尊重这些对象引用,或者让我这样说;我在这里遗漏了什么吗?这个
[L
符号告诉我们它是一个字符串[]
的字符串表示形式。HTTP允许您做类似的事情
(想想多选
)
考虑到这一点,参数映射不是Map
,而是Map
(我不知道实现是否真的使用泛型,它只是一个显式表示)
因此,要转储参数,您需要:
a) 假设您不会为同一个参数获取多个值;循环参数名称,并使用request.getParameter
b) 如果您接受多个值,请循环参数名称并序列化数组。哦,我知道了。可能我应该阅读集合和Java的更多内容。谢谢。我会接受这一点作为5分钟内的最佳答案。我猜它已锁定。集合的使用是正确的,您只是猜错了值的类别。但是,是的,完全了解pr编程语言/API需要付出努力。是的。我理解并同意你的观点。我更习惯于Perl/Python/PHP和Rails语法/语义,最近我转向了J2EE中的一个新项目。这就是为什么Java的OO特性会面临许多无数问题的原因。问题是,该项目已经启动,我非常困惑现在是学习API的时候了……:(.大约7年前我用Java编程,但现在我已经一清二楚了…哈哈….顺便说一句,大多数地图类实现了
可序列化
。也许这就是获得转储的方法。
public class CoffeeSelect extends HttpServlet {
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Map requestParams = req.getParameterMap();
resp.getWriter().println(requestParams);
}
}
<form action="SelectCofee.Do" method="post">
<select id="coffe_color" name="color">
<option value="green">Green</option>
<option value="red">Red</option>
<option value="blue">Blue</option>
</select>
<br/><br/>
<input type="checkbox" id="chek_games" name="chek_games" value="chess" />
<input type="checkbox" id="chek_games" name="chek_games" value="badminton" />
<input type="checkbox" id="chek_games" name="chek_games" value="cricket" />
<input type="hidden" id="foo" name="foo" value="bar" />
<input type="submit" name="submit" value="Submit" />
</form>