2011-12-18 5 views
18

Я хочу добавить новый параметр к карте параметров моего HttpServletRequest.Как добавить параметр в существующий HttpServletRequest моего Java-сервлета?

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

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

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

no modifications are allowed to a locked parameter map 

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

+1

Пожалуйста, проверьте эту ссылку ваш ответ есть: http://stackoverflow.com/questions/1413129/modify-request-parameter-with-servlet-filter – olyanren

+0

Надеюсь, эта связь некоторой информации к вам: [Example Depot] (http://www.exampledepot.com/egs/javax.servlet.jsp/caller.jsp.html) С уважением –

ответ

13

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

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

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

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

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

+1

На самом деле я хочу добавить параметр не атрибут в запрос. Причина в том, что я работаю над расширением некоторых приложений с открытым исходным кодом (xwiki) в соответствии с моими потребностями, которые ожидают, что параметр в запросе и способ его получения - request.getParameter («paramName»); Исходный запрос поступает из другого веб-приложения, которое я не могу установить там, так как он не знает о них –

+0

Тогда ссылка, предоставленная mucayufa, вероятно, то, что вы ищете. Я не думаю, что вы сможете аутентифицироваться, как это. –

+2

В этой статье есть хорошая статья: http://ocpsoft.org/opensource/how-to-safely-add-modify-servlet-request-parameter-values/ – Lincoln

8

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

Map<String, String[]> params = new HashMap<String, String[]>(req.getParameterMap()); 
Смежные вопросы