我在从Java Servlet内的JavaScript检索以JSON形式发送的数据时遇到查询。以下是我在做什么…
这是JavaScript内向Servlet发出请求的代码的一部分
type : "POST", url: 'getInitialData', datatype: 'json', data : ({items :[{ name: "John", time: "2pm" },{name: "Sam", time: "1pm" }]}), success: function(data) { try{ ////Code to be handeled where response is recieved }catch(e){ alert(e); } }
在发出此请求时,我尝试检索从Servlet中的JavaScript发送的参数,但这样做时,我首先对如何从请求中检索数据感到困惑
我在servlet中使用了以下内容:
注意: 我的Servlet中的内容类型设置为: apllication / json
response.setContentType("application/json"); request.getParameterMap();
上面显示了以下数据,但我无法弄清楚如何工作并获取实际数据
{items[1][name]=[Ljava.lang.String;@1930089, items[0][time]=[Ljava.lang.String;@860ba, items[1][time]=[Ljava.lang.String;@664ca, items[0][name]=[Ljava.lang.String;@1c334de}
而以下代码为我提供了预期的null异常。
request.getParametervalues("items");
除其他外,我尝试了request.getParameter(); request.getParameterNames(); 但徒劳的
我的方向错误吗?请指导我!请让我知道如何释放这些价值。
感谢您阅读这篇长文章…
Sangeet
请求参数映射是一个Map<String, String[]>映射键,其中映射键是参数名称,映射值是参数值-HTTP允许在同一名称上有多个值。
Map<String, String[]>
给定您的地图打印输出,以下方法应该起作用:
String item0Name = request.getParameter("items[0][name]"); String item0Time = request.getParameter("items[0][time]"); String item1Name = request.getParameter("items[1][name]"); String item1Time = request.getParameter("items[1][time]");
如果您需要更多动态信息,请使用以下命令:
for (int i = 0; i < Integer.MAX_VALUE; i++) { String itemName = request.getParameter("items[" + i + "][name]"); String itemTime = request.getParameter("items[" + i + "][time]"); if (itemName == null) { break; } // Collect name and time in some bean and add to list yourself. }
请注意,设置 响应 内容类型与收集 请求 参数无关。