1

1.这是我的表单代码:

<form method="GET" action="Add">
first-name: <input type="text" name="first-name" value=""/><br/>
last-name: <input type="text" name="last-name" value=""/><br/>
email-id:  <input type="text" name="email" value=""/><br/>
<input type="submit"  name="submit" value="join now"/><br/>
</form>

2.这里是servlet片段:

Enumeration<String> en=request.getParameterNames();

    while(en.hasMoreElements()){
        String param=en.nextElement();
        PrintWriter pw=response.getWriter();
        pw.print(param);
        pw.println(request.getParameter(param));

这是输出:

first-namevishal
emaildrunkendeathison@gmail.com
submitjoin now
last-nameanand

为什么不按顺序提取?在 first-name last-name 之后必须来,然后 email 和 submit 必须来,对吗??

4

2 回答 2

1

这不是特定于 servlet 的东西。所有服务器端技术的行为方式与 html 表单数据由键值对组成的方式相同。如果您有任何期望订单到来的逻辑,您可能需要重新审视它。通常,接收数据的顺序没有任何区别,接收的内容更重要。

于 2013-01-12T11:14:44.220 回答
1

参数存储在 Map(很可能是 HashMap)中,并且不能保证 HshMap 中项目的顺序。也就是说,项目按其键的哈希排序。当您询问参数名称的枚举时,您可能无法按照它们插入地图的顺序返回它们。您不应该在您的 servlet 中依赖此顺序。

在这个问题中有一些关于 HashMap 中项目的顺序的讨论。

于 2013-01-12T11:07:09.597 回答