powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / как создать новый параметр в ServletRequest?
13 сообщений из 13, страница 1 из 1
как создать новый параметр в ServletRequest?
    #34424798
Neuling
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Мне нужно прочитать определенный параметр в запросе, и если он не существует создать его и поместить в запрос.

Не могу понять, или я пропустил что-то в документации к классам ServletRequest и HttpServletRequest или это нетривиальныя операция.

Подскажите, кто знает.
Спасибо
...
Рейтинг: 0 / 0
как создать новый параметр в ServletRequest?
    #34424812
y3u
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем тебе его класть именно в запрос?...
...
Рейтинг: 0 / 0
как создать новый параметр в ServletRequest?
    #34424860
Neuling
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
потому что я это делаю в ServletFilter, т.е. классе, который "перехватывает" запрос к сервлету. Т.е. сервлет должен получить Request с этим параметром внутри. Так как я не имею никакой возможности повлиять-изменить сервлет, мне нужно этот параметр каким-то образом сформировать.
...
Рейтинг: 0 / 0
как создать новый параметр в ServletRequest?
    #34424903
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно положить параметр в атрибуты запроса или переопределить сам запрос через наследование.
...
Рейтинг: 0 / 0
как создать новый параметр в ServletRequest?
    #34424944
Neuling
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Deadyможно положить параметр в атрибуты запроса или переопределить сам запрос через наследование.

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

Насчет переопределения запроса через наследование-не могли бы вы примерчик привести или объяснить подробнее?

Поясню еще раз, мой запрос уже имеет некоторые параметры. Но мне нужно дополнить этот список еще одним. Возможно ли это в принципе или нет?
...
Рейтинг: 0 / 0
как создать новый параметр в ServletRequest?
    #34425031
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
 class  MyCoolServletRequestWithDynamicParameters  implements  HttpServletRequest {

    private  Map<String, String> parameters =  new  HashMap<String, String>();
    private  HttpServletRequest req;

    public  MyCoolServletRequestWithDynamicParameters(HttpServletRequest req) {
       this .req = req;
       for  (String par: req.getParameterNames()) {
         parameters.put(par, req.getParameter(par));
      }
   }

    public   void  getParameter(String par) {
       return  parameters.get(par);
   }
    public   void  setParameter(String name, String par) {
      parameters.put(par, req.getParameter(par));
   }

   //делегируем все методы оригинальному запросу
    public  Object getAttribute(String name) {
        return  req.getAttribute(name);
   }
    public   void  setAttribute(String name, Object o) {
        return  req.setAttribute(name, o);
   }
   //и в таком духе для всех оставшихся методов

}


в фильтре

Код: plaintext
1.
2.
3.
4.
5.
6.
 void  doFilter(...) {
    if  (нет_параметра) {
       MyCoolServletRequestWithDynamicParameters o =  new  MyCoolServletRequestWithDynamicParameters((HttpServletRequest)req);
       chain.doFilter(o, resp);
   }
}


можно еще редиректнуть на себя с добавленным параметром.
...
Рейтинг: 0 / 0
как создать новый параметр в ServletRequest?
    #34425093
Neuling
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо за быстрый ответ. Пробую разобраться
...
Рейтинг: 0 / 0
как создать новый параметр в ServletRequest?
    #34425647
Neuling
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 Deady:

вроде разобрался. 2 вопросика еще:
1. как можно редирект на себя сделать, чтобы убедиться, что работает?

2. можно ли, чтобы не переписывать все имплементируемые из интерфейса функции, просто унаследовать какой-нибудь класс (который уже содержит все нужные методы из интерфейса) и добавить туда операцию setParameter, которой мне и не хватает?
А то как-то не очень элегантно выглядит.

Спасибо еще раз
...
Рейтинг: 0 / 0
как создать новый параметр в ServletRequest?
    #34425670
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Neuling2. можно ли, чтобы не переписывать все имплементируемые из интерфейса функции, просто унаследовать какой-нибудь класс (который уже содержит все нужные методы из интерфейса) и добавить туда операцию setParameter, которой мне и не хватает?
А то как-то не очень элегантно выглядит.

HttpServletRequestWrapper называется
...
Рейтинг: 0 / 0
как создать новый параметр в ServletRequest?
    #34425687
Фотография Penkov Vladimir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Neuling2 Deady:

вроде разобрался. 2 вопросика еще:
1. как можно редирект на себя сделать, чтобы убедиться, что работает?


если запрос http://www.server.com/show.jsp?id=1
то
Код: plaintext
1.
2.
resp.sendRedirect("http://www.server.com/show.jsp?id=1&dopParameter=1");
 return ;

Neuling
2. можно ли, чтобы не переписывать все имплементируемые из интерфейса функции, просто унаследовать какой-нибудь класс (который уже содержит все нужные методы из интерфейса) и добавить туда операцию setParameter, которой мне и не хватает?
А то как-то не очень элегантно выглядит.

Спасибо еще раз

HttpServletRequest - это интерфейс. Конкретные реализации зависят от сервера. Если будете наследовать, то привяжетесь к серверу, хотя в принципе это не страшно. Дебаггером посмотрите что за класс приходит в фильтр и от него наследуйтесь.
...
Рейтинг: 0 / 0
как создать новый параметр в ServletRequest?
    #34425742
Neuling
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz
HttpServletRequestWrapper называется
я вроде смотрел уже этот класс, не пойму где его параметр мап и т.д. Но все равно не получается, пытался сделать так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
 public   class  MyServletRequest  extends  HttpServletRequestWrapper {

	 public  MyServletRequest(HttpServletRequest arg0) {
		 super (arg0);
	}
	
	    public   void  setParameter(String name, String par) {
		    super .getParameterMap().put(name, getParameter(par));
	}
}
и получаю проблемы при setParameter. Видимо ParameterMap недоступна для записи.
Deady
HttpServletRequest - это интерфейс. Конкретные реализации зависят от сервера. Если будете наследовать, то привяжетесь к серверу, хотя в принципе это не страшно. Дебаггером посмотрите что за класс приходит в фильтр и от него наследуйтесь.
спасибо, понятно объяснили. В общем я уже переписал все методы. Еще попробую на себя перенаправить.
...
Рейтинг: 0 / 0
как создать новый параметр в ServletRequest?
    #34425870
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У HttpServletRequestWrapper нет никакой мапы параметров. Это просто обертка над другим HttpServletRequest. Wrapper делегирует все методы классу который он оборачивает. Поэтому хранение кастомных параметров надо реализовывать самостоятельно.
То есть не на столько полезный класс на сколько хотелось бы, но зато не надо переопределять массы методов, достаточно только те которые возвращают параметры.
...
Рейтинг: 0 / 0
как создать новый параметр в ServletRequest?
    #34426886
Neuling
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz
То есть не на столько полезный класс на сколько хотелось бы, но зато не надо переопределять массы методов, достаточно только те которые возвращают параметры.

да, спасибо большое. Я уже потом подумал и сам догадался, что мапу свою надо иметь.

Спасибо всем
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / как создать новый параметр в ServletRequest?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]