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
为什么不按顺序取出? 首先姓名必须来,然后发送电子邮件和提交必须来,对吧?
答案 0 :(得分:1)
参数存储在Map(很可能是HashMap)中,并且不保证HshMap中的项目顺序。这是物品是由他们的钥匙的哈希订购。当您要求枚举参数的名称时,您可能无法通过它们插入地图的顺序返回它们。您不应该依赖servlet中的此顺序。
在question中有一些关于HashMap中项目顺序的讨论。
答案 1 :(得分:1)
这不是servlet特有的东西。所有服务器端技术的行为方式与html表单数据由键值对组成的方式相同。如果您有任何需要订单的逻辑,您可能需要重新审视它。通常情况下,您收到数据的顺序没有任何差别,您收到的内容更为重要。