我需要在servlet中读取HTTP POST请求数据。数据是名称 - 值对。以下是发送到服务器的数据(我从谷歌浏览器的Inspect Element工具中的“网络”选项卡中选择了此数据)。
data1[roll_no]:32
data1[section]:A
data1[standard]:2
data1[marks][]:54
data1[marks][]:23
我能够读取marks
列表以外的所有值。
我尝试阅读这些值是:
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
log(this.getClass().getSimpleName());
Enumeration<String> name = request.getParameterNames();
while(name.hasMoreElements()){
String param = name.nextElement();
log(param+" = "+request.getParameter(param));
}
}
而且,在param
为data1[marks][]
答案 0 :(得分:1)
使用getParameterValues()
String param = ...;
if(param.equals("data1[marks][]")) {
String[] marks = request.getParameterValues(param);
for(String m : marks) { //iterate over param data1[marks][]
//do
}
}
获取getParameterValues
元素的值时, <select multiple>
也可以派上用场
<select name="multiParams" multiple>
...
</select>
答案 1 :(得分:1)
在这种情况下,有些参数不是唯一的data1[marks][]
。
您可以尝试使用request.getparameterValues(param)
,它用于存在非唯一参数键的场景
request.getParameterValues(param)
将返回一个字符串数组。有关详细信息,请参阅ServletRequest API。