如何按发送顺序获取getParameterValues的值?

时间:2014-11-13 10:41:12

标签: java servlets http-post getparameter

我通过HttpPost方法将注册表单数据发送到Servlet,并通过getParameterValues获取此数据。

获取数据没问题,但我按随机顺序获取数据。我希望在servlet中我按照它们的发送顺序获取数据。我尝试通过在互联网上阅读来解决这个问题,但没有什我在这里发布我的servlet代码。

response.setContentType("text/html");
    ObjectOutputStream out = new ObjectOutputStream(response.getOutputStream());
    Enumeration paramNames = request.getParameterNames();
    String params[] = new String[7];
    int i=0;

    while(paramNames.hasMoreElements())
    {
        String paramName = (String) paramNames.nextElement();
        System.out.println(paramName);


        String[] paramValues = request.getParameterValues(paramName);
        params[i] = paramValues[0];

        System.out.println(params[i]);

        i++;
    }

我得到像这样的输出

5_Country
United States
4_Password
zxcbbnm
1_Lastname
xyz
0_Firstname
abc
3_Email
abc@xyz.com
6_Mobile
1471471471
2_Username
abcd

我首先想要0_Firstname然后是1_Lastname然后是2_Username,因为我想在数据库中插入这些数据。这里0,1,2 ......我写的只是为了表明我想按此顺序获得价值。

2 个答案:

答案 0 :(得分:1)

试试这个

Enumeration<String> enumParamNames = request.getParameterNames();

Enumeration转换为List以便对其进行排序。

List<String> listParamNames = Collections.list(enumParamNames);

在排序

之前,paramNames将如下所示

[5_Country, 4_Password, 1_Lastname, 0_Firstname, 2_Username, 3_Email]

Collections.sort(listParamNames);

对列表进行排序

已排序的paramNames将如下所示

[0_Firstname, 1_Lastname, 2_Username, 3_Email, 4_Password, 5_Country]

现在,您可以使用listParamNames循环以获取关联的param value

for(String paramName : listParamNames)
{
    System.out.println(paramName);
    System.out.print("\t");

    /* Instead of using getParameterValues() which will get you String array, in your case no need for that. You need only one `Value`, so you go with `getParameter` */
    System.out.print(request.getParameter(paramName));
}

<强>输出:

0_Firstname - abc

1_Lastname - xyz

etc....

答案 1 :(得分:0)

您不会使用request.getParameterNames();按顺序获取参数名称。

您可以使用

String [] parameterNames =  new String[]{"param1","param2","param3"};

for(String param : parameterNames){
 System.out.println(param);
}

其中parameterNames获得您想要参数的序列。 您甚至可以配置它并从配置文件中读取序列。

OR

您可以使用

 request.getQueryString() to get the QueryString, while using GET Method

OR

您可以使用

 request.getInputStream() to get the QueryString, while using POST Method
 and parse the raw data to get the Query string.

获取查询字符串后,您可以按照自己的方式进行拆分和使用。