HttpServletRequest - SetParameter

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

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

11
задан BalusC 23 February 2010 в 17:57
поделиться

4 ответа

Я бы использовал один DBML-файл на контекст. Под контекстом я имею в виду операцию, которую необходимо выполнить вашему пользователю, поскольку она/он находится в одном конкретном окне вашего приложения. Например:

  1. У вас есть графический интерфейс пользователя, позволяющий управлять объектами Заказчика; Затем я бы подумал о том, чтобы иметь CustomerGroupDataContext, в который я бы добавил таблицы для задач управления клиентами, связанных, и все зависимости.

Таким образом, у вас может быть контекст на окно, если вы видите, что я имею в виду. Но все зависит от вашей реляционной модели, это может быть проще, чтобы включить все таблицы в ваш DBML файл, но затем, он создает контекст немного сложнее, и не указывает таблицы, связанные с вашим клиентским управлением или иначе, в зависимости от контекста вы построили.

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

-121--1365290-

Потому что иногда у вас есть параметр, который требуется интерфейсу, но функция не использует его. Может быть, параметр больше не нужен, необходим только в других функциях, которые должны использовать ту же сигнатуру (особенно для того, чтобы их можно было вызвать через указатели) или функциональность еще не реализована. Наличие параметров, которые не используются, может быть особенно распространено в сгенерированном коде или коде инфраструктуры по этой причине (и, вероятно, поэтому сгенерированный код MFC имеет имя, закомментированное).

Что касается причины отсутствия предупреждения - я думаю, что это потому, что является ли проблема субъективной, и другие люди (особенно исполнители компиляторов) не рассматривают ее как проблему. Как только вы на самом деле пойдете, чтобы использовать параметр, вы получите компилятор, чтобы пожаловаться, если вы забыли раскомментировать имя, так что вы получите компилятор жаловаться только, когда вам действительно нужно, чтобы (версия компилятора проворный YAGNI: "You Arn 't Gonna Neet It" философия).

Как правило, обратное происходит, когда вы переворачиваете предупреждения - именованные параметры, которые не используются, генерируют предупреждения - и, возможно, поэтому сгенерированная функция имеет имя, закомментированное.

-121--1145299-

Нет, нет.

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

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

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

9
ответ дан 3 December 2019 в 04:52
поделиться

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

4
ответ дан 3 December 2019 в 04:52
поделиться

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

3
ответ дан 3 December 2019 в 04:52
поделиться

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

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

6
ответ дан 3 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: