我有一个关于从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发送的参数,但在这样做的时候,我首先对如何从请求中检索dat感到困惑
我在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
答案 0 :(得分:3)
请求参数映射是Map<String, String[]>
,其中映射键是参数名称,映射值是参数值--HTTP允许同一个名称上有多个值。
考虑到地图的打印输出,以下内容应该有效:
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.
}
请注意,在收集请求参数时,设置响应内容类型无关紧要。