有没有办法从 JSP/Servlet 按原始顺序获取 POST 参数?

Is there a way to get POST parameters by original order from JSP/Servlet?

<form method="post" action="?">
    <input type="text" name="d" value="3">
    <input type="text" name="e" value="5">
    <input type="text" name="c" value="1">
    <input type="text" name="a" value="4">
    <input type="text" name="b" value="2">
    <input type="submit">
</form>

正在处理 POST 请求:

Enumeration e = request.getParameterNames();
while(e.hasMoreElements()){
    out.println(e.nextElement());
}

这是一个 Enumeration,其中包含 未指定顺序的参数名称

有没有办法从 POST 请求中获取原始文本源?

我想像这样按原始顺序获取参数(如 Chrome 开发人员工具所示):

d=3&e=5&c=1&a=4&b=2

顺便说一句:我尝试 request.getQueryString() 只是 return 来自 URL 的查询(GET 方法),无法从 POST 方法获取任何参数。

你可以自己解析URL。只需确保将结果存储在具有可预测迭代顺序的集合中(例如,LinkedHashMap)。

通过使用 java script,您可以形成一个可按顺序保存参数的变量,如果您想用逗号将其分隔开的话。然后将这些参数传递给您的控制器。这种方法使您能够按顺序获取值。

在提交表单时,您可以调用 javascript 中的一些函数。现在这个函数将从用户输入的页面读取数据。您可以创建 post 请求并按要求的顺序传递此参数。

ServletRequest.getInputStream() returns 原始输入流,但您需要使用正确的字符编码来构建 post 正文。例如,

r = new BufferedReader(new InputStreamReader(request.getInputStream(), "utf8"));
StringBuilder sb = new StringBuilder();
String line;
while ( (line = r.readLine()) != null) sb.append(line);
System.out.println(sb.toString());