HttpServletRequest.getParameterValues()返回一个String[],其中包含给定HTTP请求参数的所有值。有人知道规范中是否保证此数组中值的顺序与请求中这些值的传递顺序相同?

例如,如果我有GET查询字符串x=1&x=2&x=3,当我调用String[] {"1", "2", "3"}时是否可以保证收到getParameterValues()?它似乎可以在实践中起作用,但是我找不到任何可以说明必须如此的东西,因此我不愿意依靠它。

最佳答案

ServletRequest的javadoc(v2.5 javadoc)没有提及有关该方法的值顺序的任何内容。因此,我不会依赖保留的顺序。

更新:还检查了规范文档中的2.5,其中包含与getParameterValues()有关的以下信息。它没有提及有关查询字符串排序的任何内容,因此我认为您所看到的行为是实现细节,而不是定义为接口(interface)的一部分。


  • getParameter
  • getParameterNames
  • getParameterValues
  • getParameterMap



  • 为了将来引用,可以从Sun, I mean Oracle's website下载Java Servlet规范。您可以再次检查您感兴趣的特定servlet版本。

    09-10 17:13