assema-moussa.com

  

Beste Artikel:

  
Main / Verwendung von httpservletrequest get body

Verwendung von httpservletrequest get body

Kürzlich bin ich auf eine Anforderung gestoßen, bei der ich den HttpServletRequest-Text zweimal lesen und die Anforderung erneut an die Filterkette für den normalen Anwendungsfluss übergeben muss.

Dann habe ich die unten angegebene Java-Klasse erstellt, die innerhalb eines Servlet-Filters verwendet werden kann, um die Anforderung abzufangen, den Inhalt des Anforderungskörpers zu lesen und die Anforderung dann zur weiteren Verarbeitung erneut an die Servlet-Filterkette zu übergeben. Dies ist der Quellcode der benutzerdefinierten Implementierung der HttpServletRequestWrapper-Klasse.

Bitte beachten Sie, dass ich Servlets 2 verwende. Sie können die Implementierung gemäß der neuesten Servlet-Spezifikation ändern. Verwenden Sie den Wrapper, um die Anforderungsparameter im Servlet-Filter zu ändern. Es ist hilfreich, den Anforderungshauptteil des Servlets zweimal zu lesen. In diesem Servlet-Filter können Sie den http-Anforderungshauptteil N mehrmals lesen und dann an die Filterkette übergeben, und es funktioniert einwandfrei. Sie müssen sich bewusst sein, dass der http-Anforderungshauptteil nur einmal gelesen werden kann.

Wenn Sie den Body in einem Filter lesen, kann das Zielservlet ihn nicht erneut lesen, und dies führt auch zu einer IllegalStateException. Im Wesentlichen wird der Inhalt des Anforderungskörpers im Wrapper-Objekt zwischengespeichert, sodass er im gesamten Anforderungslebenszyklus N-mal vorkommen kann.

Ich liebe Computer, programmiere und löse jeden Tag Probleme. Ein Familienmensch mit lebenslustiger Natur. Sie finden mich auf Facebook, Twitter und Google Plus.

HttpRequest in RequestWrapper kann nicht auf Javax angewendet werden. Ich hatte gehofft, dies zu verwenden, um Körper erneut zu lesen und sie als Anhänge zu senden, wenn mein Fehlerfilter etwas abfängt.

Es wird viel mehr Code benötigen, um die Körper nach Parametern zu analysieren. Hallo, ich versuche den gleichen Code auf dem Web Sphere-Anwendungsserver, aber er funktioniert nicht. Sobald die Anfrage gelesen wurde, wenn ich sie verkette, werden die Anforderungswerte dort null. Ich habe 2 Filter und habe Ihren Code in einem davon verwendet, genau wie Sie es in Ihrem Beispiel getan haben. Beim ersten Aufruf des Filters lese ich den Body ohne Probleme, aber beim Aufruf der Kette. Ich habe die Zeile kommentiert, in der Bufferedreader geschlossen ist und alles gut funktioniert.

Und wie kann man den Bufferedreader schließen, ohne den im Konstruktor übergebenen Inputstream zu schließen? Twitter Facebook Linkedin Reddit Pocket. Lassen Sie mich wissen, ob wir diese Modifikation verwenden können: Bitte verwenden Sie [Java] ...

(с) 2019 assema-moussa.com