Ist es möglich, zusätzlich zu den verfügbaren Parametern einer Anfrage (HttpServletRequest)
Möchte ich abfangen einer Anforderung in einem filter/servlet und fügen Sie ein paar Parameter. Jedoch die Anforderung nicht aussetzen einer "setParameter" - Methode und die parameter anzeigen, wenn manipuliert wird, wird eine Fehlermeldung besagt, dass es gesperrt ist. Gibt es eine alternative, die ich versuchen kann?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Unterklasse
HttpServletRequestWrapper
und überschreiben Sie diegetParameter
Methoden. Die Bezeichnung dieser Klasse lautet:In den filter, wickeln Sie die Anfrage in eine Instanz der Unterklasse.
Ich ussualy wickeln Sie das original HttpServletRequest in eine neue CustomHttpServletRequest, die als proxy fungiert, um den ursprünglichen request und übergeben Sie dann dieses neue CustomHttpServletRequest der filter-Kette.
In diesem CustomHttpServletRequest können Sie diesen die getParameterNames, getParameter, getParameterMap Methoden, um wieder alle Parameter, die Sie möchten.
Dies ist ein Beispiel des filters:
Zuerst sollten Sie die Anfrage erhalten und Lesen aller Parameter.
Dann konstruieren eine weitere Anforderung, die mit der ursprünglichen Parameter + das neue und auch wieder senden.
Den HttpServletRequest ist unveränderbar und es gibt keine Möglichkeit, es zu ändern.
Können Sie wickeln HttpServletRequest in neue HttpServletRequestWrapper-Objekt und überschreibt einige Methoden.
Der folgende code ist aus http://www.ocpsoft.org/opensource/how-to-safely-add-modify-servlet-request-parameter-values/ .
Hinzufügen-parameter im filter:
Warum gehst du nicht einfach speichern Variablen als Anfrage-scope-Attribute, anstatt zu versuchen, fügen Sie diese in die Anfrage-Parameter?
Sonst, können Sie mit der setAttribute () - Methode, die stark typisiert ist. Daher die getAttribute () - Methode verwendet werden kann ...