2015-03-31 47 views
3
<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请求:有没有办法通过JSP/Servlet的原始订单获取POST参数?

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

这是包含在未指定的顺序

是否有一种方式来获得从POST请求原文soruce参数名的Enumeration

我想通过原始顺序的参数是这样的(如Chrome开发者工具表现):

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

BTW:我想request.getQueryString()刚刚从URL返回查询(GET方法),无法得到任何来自POST方法的参数。

回答

1

ServletRequest.getInputStream()返回原始输入流,但您需要使用正确的字符编码来构建帖子正文。 e.g,

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()); 
+0

谢谢,我试图从'request.getInputStream获得数据()',但什么都没有这个,只是空流。也许它已经被“ServletRequest”解析了? – Koerr 2015-03-31 08:13:36

+1

在尝试读取请求之前,请确保您的Web框架未读取请求输入流。您是使用任何Web框架还是仅使用servlet? – Daniel 2015-03-31 08:25:19

+0

不,只要在JSP中读取它,我会尝试处理Servlet中的request.getInputStream()'? – Koerr 2015-03-31 08:31:24

0

你可以自己解析URL。只要确保您将结果以可预测的迭代次序(例如LinkedHashMap)存储在集合中即可。

+0

但参数是不是在URL – Koerr 2015-03-31 08:15:35

0

通过使用java script您形成一个可见的,将按顺序保持您的参数,如果你想通过逗号分隔出来。然后将这些参数传递给您的控制器。这种方法让你可以依次获得值。

0

关于提交表单,您可以在JavaScript中调用一些函数。此功能将从用户输入的页面读取数据。您可以创建发布请求并按要求的顺序传递此参数。

相关问题