servlet中的枚举

时间:2013-01-12 11:01:05

标签: enumeration

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

为什么不按顺序取出? 首先姓名必须来,然后发送电子邮件和提交必须来,对吧?

2 个答案:

答案 0 :(得分:1)

参数存储在Map(很可能是HashMap)中,并且不保证HshMap中的项目顺序。这是物品是由他们的钥匙的哈希订购。当您要求枚举参数的名称时,您可能无法通过它们插入地图的顺序返回它们。您不应该依赖servlet中的此顺序。

question中有一些关于HashMap中项目顺序的讨论。

答案 1 :(得分:1)

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