Как прочитать первую пару ключ/значение в строке запроса в сервлетах Java?

Вопрос:

У меня есть этот сервлет, который принимает имена динамических параметров в строке запроса, но строка запроса также добавляет другие параметры некоторым плагином javascript.

Здесь сценарий запроса:

http://foo.com/servlet?[dynamic param]=[param value]&[other params]=[other values]...

Я хотел бы иметь возможность прочитать первый параметр, поэтому сервлет выполнит его выполнение в зависимости от имени динамического параметра или ничего не сделает, если он не распознает имя параметра. Я на 100% уверен, что первое имя параметра всегда является динамическим, потому что я управляю строкой строки запроса через вызов ajax.

Проблема, с которой я столкнулся, заключается в том, что порядок HttpRequestServlet.getParameterMap() или .getParameterNames() не всегда соответствует порядку строки запроса, поэтому сервлет не делает ничего в половину/большую часть времени в зависимости от частоты параметров.

Как я всегда читаю первый параметр в строке запроса?

Лучший ответ:

Вы можете использовать HttpServletRequest # getQueryString(), а затем разделить значения на основе & и получить первую пару значений имени параметра запроса, а затем разделить их на основе =

образец кода:

String[] parameters = URLDecoder.decode(request.getQueryString(), "UTF-8").split("&");
if (parameters.length > 0) {
    String firstPair = parameters[0];
    String[] nameValue = firstPair.split("=");
    System.out.println("Name:" + nameValue[0] + " value:" + nameValue[1]);
}

Подробнее о расшифровке URL-адресов

Ответ №1

Вы можете изменить этот URL, чтобы читать что-то вроде

http://foo.com/servlet/dynamicParam/paramValue/?otherParam=otherValue

Эта структура URL лучше соответствует идее HTTP-ресурса, и у вас больше нет проблемы с параметром. Вышеизложенное довольно легко сделать, если вы используете современную среду MVC.

Оцените статью
TechArks.Ru
Добавить комментарий