Как получить значения getParameterValues в порядке их отправки?
Я отправляю данные формы регистрации через метод HttpPost сервлету и получаю эти данные с помощью getParameterValues.
Нет проблем с получением данных, но я получаю данные в случайном порядке. Я хочу, чтобы в сервлете я получал данные в порядке их отправки. Я пытаюсь решить эту проблему, читая в Интернете, но ничто не может помочь. Я публикую свой код сервлета здесь.
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 ответа
Вы не получите имена параметров в порядке с помощью request.getParameterNames();
,
Вы можете использовать
String [] parameterNames = new String[]{"param1","param2","param3"};
for(String param : parameterNames){
System.out.println(param);
}
где parameterNames
содержит последовательность, в которой вы хотите ваши параметры. Вы даже можете настроить его и прочитать последовательность из файла конфигурации.
ИЛИ ЖЕ
Ты можешь использовать
request.getQueryString() to get the QueryString, while using GET Method
ИЛИ ЖЕ
Ты можешь использовать
request.getInputStream() to get the QueryString, while using POST Method
and parse the raw data to get the Query string.
Получив строку запроса, вы можете разбить ее и использовать по своему усмотрению.
Попробуй это
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....