如果我有一个运行 JVM1.4.2 的 servlet,它正在接收一个带有表单数据字段的 POST 请求。我使用 req.getParameterNames() 来获取我所期望的所有查询字符串和表单数据。但是,我得到的只是查询字符串参数。
我从各种来源阅读的文献说getParameterNames()和 getParameterValues(String) 应该是获取浏览器为 JDK 1.4 发送的所有查询字符串和发布的表单数据的方式。这是我用来提取所有参数的方法,我希望这些参数包括发布的表单数据:
public Map getParameterMap(HttpServletRequest req) {
Map params= new HashMap();
String name = null;
System.out.println("<< Getting Parameter Map.>>");
Enumeration enumParams = req.getParameterNames();
for (; enumParams.hasMoreElements(); ) {
// Get the name of the request parameter
name = (String)enumParams.nextElement();
// Get the value of the request parameters
// If the request parameter can appear more than once
// in the query string, get all values
String[] values = req.getParameterValues(name);
params.put(name, values);
String sValues = "";
for(int i=0;i<values.length;i++){
if(0<i) {
sValues+=",";
}
sValues +=values[i];
}
System.out.println("Param " + name + ": " + sValues);
}
System.out.println("<< END >>");
return params;
}
这个问题也符合我的预期,但是 servlet 并没有拾取表单数据。显然我错过了一些东西......
更新:帖子数据非常简单,不是多部分形式或富媒体。只是通过 AJAX POST 提交的纯文本,在帖子正文中看起来像这样
c1=价值%20A&c2=价值%20B&c3=价值%20C