Подтвердить что ты не робот

Как добавить параметр к существующему HttpServletRequest моего Java-сервлета?

Я хочу добавить новый параметр в карту параметров моего HttpServletRequest.

Следующий код

 request().getParameterMap().put("j_username", user);
 request().getParameterMap().put("j_password", pwd);

создает эту ошибку

no modifications are allowed to a locked parameter map

Каков правильный способ сделать это?

4b9b3361

Ответ 1

Параметры запроса - это значения, отправленные в качестве параметров браузером. Нет причин для их изменения. Если вы хотите связать какое-то значение с запросом, используйте атрибут, а не параметр. Это имеет дополнительное преимущество в том, что атрибутом может быть любой объект, а не только строка:

request.setAttribute("user", new User(userName, password));

Вы можете добавлять параметры, если вы пересылаете запрос другому ресурсу (хотя я бы не сказал, что это хорошая практика):

request.getRequestDispatcher("/some/path?j_username=" + user + "&j_password=" + pwd).forward(request, response);

Параметры должны быть закодированы правильно.

Ответ 2

Я столкнулся с подобной проблемой и обошел ее, сделав копию карты параметров.

Map<String, String[]> params = new HashMap<String, String[]>(req.getParameterMap());