2011-12-18 12 views
18

Desidero aggiungere un nuovo parametro alla mappa dei parametri del mio HttpServletRequest.Come aggiungere un parametro all'HttpServletRequest esistente del mio Java Servlet?

Il seguente codice di

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

crea questo errore

no modifications are allowed to a locked parameter map 

Qual è il modo corretto di fare questo?

+1

Si prega di controllare questo link la vostra risposta è si: http://stackoverflow.com/questions/1413129/modify-request-parameter-with-servlet-filter – olyanren

+0

Speriamo che questo collegamento è di qualche info a voi: [Esempio di deposito] (http://www.exampledepot.com/egs/javax.servlet.jsp/caller.jsp.html) Saluti –

risposta

13

I parametri di una richiesta sono i valori inviati come parametri dal browser. Non c'è motivo di cambiarli. Se si desidera associare un valore alla richiesta, utilizzare un attributo anziché un parametro. Questo ha il vantaggio aggiuntivo che un attributo può essere qualsiasi oggetto e non solo una stringa:

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

Puoi aggiungere parametri se si inoltra la richiesta a un'altra risorsa (anche se non direi che è una buona pratica):

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

Tuttavia, i parametri devono essere codificati correttamente.

+1

In realtà, desidero aggiungere il parametro non attributo nella richiesta. La ragione è che sto lavorando all'estensione di alcune applicazioni open source (xwiki) per soddisfare le mie esigenze che si aspettano un parametro in richiesta e il modo in cui sta ottenendo è request.getParameter ("paramName"); La richiesta originale proviene da un'altra applicazione web che non posso impostare lì in quanto non ne è a conoscenza –

+0

Quindi il link fornito da mucayufa è probabilmente quello che stai cercando. Non penso che sarai in grado di autenticarti in questo modo, però. –

+2

C'è un buon articolo su questo qui: http://ocpsoft.org/opensource/how-to-safely-add-modify-servlet-request-parameter-values/ – Lincoln

8

Mi sono imbattuto in un problema simile e mi sono aggirato facendo una copia della mappa dei parametri.

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