【发布时间】:2011-10-27 18:40:13
【问题描述】:
如果我有一个运行 JVM1.4.2 的 servlet,它正在接收一个带有表单数据字段的 POST 请求。我使用 req.getParameterNames() 来获取我所期望的所有查询字符串和表单数据。但是,我得到的只是查询字符串参数。
文献我是来自各种sources 的reading 说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;
}
This 的问题也符合我的预期,但是 servlet 没有获取表单数据。显然我错过了一些东西......
更新:帖子数据非常直接,不是多部分形式或富媒体。只是通过 AJAX POST 提交的纯文本,在帖子正文中看起来像这样
c1=Value%20A&c2=Value%20B&c3=Value%20C
【问题讨论】:
-
表单是什么样的?特别是
form元素本身,以及上面的input/select/textarea元素的示例。 -
@TJ 你是说不是所有的表单数据都是“相等的”吗?现代浏览器对旧 JVM 下的 servlet 未检测到的表单数据进行区分?
-
尽管我想使用当前的 JVM,但业务需求另有规定。他们为“正确答案”点数提出了挑战。
-
@T.J. Crowder 以后尽量不要在 cmets 前面加上“off topic -”,因为标志可能不会被删除 :) 评论是临时的,在问题和答案方面是二等公民。如果一个人被移除,不要伤害你的感情。
-
@TJ。好吧,“过度节制”和“离题”的玩笑并没有太大的区别,这对产生答案没有作用
标签: java forms servlets post jdk1.4