HttpServletRequest - SetParameter - PullRequest
       25

HttpServletRequest - SetParameter

11 голосов
/ 23 февраля 2010

Я знаю, что могу использовать HttpServletRequest.getParameter() для получения значений параметров URL.

Есть ли эквивалентный метод, с помощью которого я могу установить / заменить значение?

Ответы [ 5 ]

9 голосов
/ 23 февраля 2010

Нет, нет.

Вы можете изменять только атрибуты, но не параметры.

Единственный способ добиться чего-то похожего - это обернуть запрос (классом, который возвращает что-то еще для getParameter).

Сопутствующее любопытство: в некоторых контейнерах сервлетов есть ошибка, из-за которой вы можете request.getParameterValues(name)[0] = "newValue", но это может привести только к несоответствиям.

6 голосов
/ 23 февраля 2010

Вы можете сделать карту параметров модифицируемой картой, заменив HttpServletRequest пользовательской реализацией HttpServletRequestWrapper, которая заменяет карту параметров внутри Filter, который был помещен в начале цепочки.

Однако, это пахнет как обходной путь. В одном из комментариев вы указали, что хотите закодировать параметры (на самом деле: декодировать их, потому что они уже закодированы). Вы ищете неправильное направление для решения. Для параметров запроса GET необходимо задать кодировку в самом сервлет-контейнере (например, для Tomcat просто установить атрибут URIEncoding коннектора HTTP). Для POST необходимо установить значение ServletRequest#setCharacterEncoding(). Также см. Подробные решения в этой статье (прочитайте всю статью, хотя, чтобы понять полную картину).

4 голосов
/ 23 февраля 2010

Я не думаю, что есть. Но вы можете использовать метод setAttribute () аналогичным образом; вам просто нужно использовать getAttribute (), а не getParameter (), чтобы получить значение позже.

4 голосов
/ 23 февраля 2010

Нет. Однако, почему вы хотите это сделать? Могут быть и другие способы выполнить то, что вам нужно.

1 голос
/ 16 мая 2016

Параметры запроса передаются сервлету или JSP от клиента через HTTP. Они не устанавливаются кодом на стороне сервера, поэтому нет необходимости использовать методы set (setParameter ())

Кроме того, это добавит безопасность, чтобы никто не мог изменить параметры запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...