


Wie kann ich ohne Verbrauch mehrmals auf HTTP-Servlet-Anforderungsparameter zugreifen?
Zugriff auf HTTP-Servlet-Anfrageparameter ohne Verbrauch
Problem:
Beim Zugriff auf mehrere HTTP-Anfragen Parameter innerhalb eines Servlet-Filters verwendet der anfängliche Parameterzugriff die Parameter, sodass sie für die spätere Verwendung nicht mehr verfügbar sind. Dieses Problem tritt insbesondere bei POST-Anfragen auf, bei denen sich Parameter im Anfragetext befinden.
Lösung:
Um auf Parameter zuzugreifen, ohne sie zu verbrauchen, können Sie HttpServletRequestWrapper erweitern und benutzerdefinierte Methoden implementieren um den Eingabestream zwischenzuspeichern:
public class MultiReadHttpServletRequest extends HttpServletRequestWrapper { private ByteArrayOutputStream cachedBytes; public MultiReadHttpServletRequest(HttpServletRequest request) { super(request); } @Override public ServletInputStream getInputStream() throws IOException { if (cachedBytes == null) cacheInputStream(); return new CachedServletInputStream(cachedBytes.toByteArray()); } @Override public BufferedReader getReader() throws IOException{ return new BufferedReader(new InputStreamReader(getInputStream())); } private void cacheInputStream() throws IOException { cachedBytes = new ByteArrayOutputStream(); IOUtils.copy(super.getInputStream(), cachedBytes); } private static class CachedServletInputStream extends ServletInputStream { private final ByteArrayInputStream buffer; public CachedServletInputStream(byte[] contents) { this.buffer = new ByteArrayInputStream(contents); } @Override public int read() { return buffer.read(); } // ... Implementation for newer versions of ServletInputStream interface } }
Indem Sie die ursprüngliche Anfrage mit dieser Klasse umschließen, können Sie auf den zwischengespeicherten Eingabestream zugreifen mehrmals innerhalb der Filterkette und darüber hinaus, sodass sowohl getParameterXXX als auch benutzerdefinierte Methoden wie doMyThing die Parameter lesen können:
public class MyFilter implements Filter { public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { MultiReadHttpServletRequest multiReadRequest = new MultiReadHttpServletRequest((HttpServletRequest) request); doMyThing(multiReadRequest.getInputStream()); chain.doFilter(multiReadRequest, response); } }
Das obige ist der detaillierte Inhalt vonWie kann ich ohne Verbrauch mehrmals auf HTTP-Servlet-Anforderungsparameter zugreifen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

JavaremainsAgoodlanguageduetoitscontinuousevolutionandrobustEcosystem.1) LambdaexpressionenhanceCodereadabilityAnableFunctionalprogramm.

Javaisgratduetoitsplattformindependenz, robutepoopsupport, extensinstivibrary und Strongcommunity.1) PlattformindependenzenviajvMallowsCodetorunonvariousPlatforms.2) oopfeatures Likecapsulation, Erbe und PolymorphoseMendeularsCalablcode.3)

Die fünf Hauptmerkmale von Java sind Polymorphismus, Lambda -Ausdrücke, Streamsapi, Generika und Ausnahmebehandlung. 1. Polymorphismus ermöglicht es, Objekte verschiedener Klassen als Objekte gemeinsamer Basisklassen zu verwenden. 2. Lambda -Ausdrücke machen den Code prägnanter, insbesondere für die Handhabung von Sammlungen und Streams. 3.Streamsapi verarbeitet effizient große Datensätze und unterstützt deklarative Vorgänge. 4. Generika bieten Typensicherheit und Wiederverwendbarkeit, und während der Zusammenstellung werden Typfehler aufgenommen. 5. Ausnahmebehandlung hilft, fehlerfrei zu handhaben und zuverlässige Software zu schreiben.

Java'StopfeaturessinifificteNtationHancePSperformanceandScalability.1) Objektorientierte Principles LikepolymorphismenableFlexiBleandsCalableCode.2) garbagebackecollectionAutomatomatomatomatomatomatomatomatomatomatomatomatomatomatomatomatomatesMorymanagementbutcancauselatissues.3) Die

Zu den Kernkomponenten des JVM gehören Classloader, RunTimedataara und ExecleateEngine. 1) Classloader ist für das Laden, Verknüpfen und Initialisieren von Klassen und Schnittstellen verantwortlich. 2) Runtimedataara enthält Methoden-, Haufen-, Stapel-, PCregister- und Nativemethodstacks. 3) ExecXesionEngine besteht aus Dolmetscher, Jitcompiler und GarbagebyCollector, der für die Ausführung und Optimierung von Bytecode verantwortlich ist.

Java'sSafetyandSecurityarebolsteredby: 1) StrongyPing, die sich mit dem Verhältnis von BrevventType-Related-Related-Relating-Related-Relating-Robuations-Robust-Verhandlung, Enguringgrading, Ensuringgrealing und 4) Robustxceptionhandling, Ensuringgregradinggrocking und 4) Robustxceptionhandling, Enguringgradegry,

JavaoffersseveralKeyFeaturesthatenhanceCodingskills: 1) Objektorientierte ProgrammingallowsModelingreal-Welt, beispielhaft veranschaulicht

ThejvmisacrucialComponentThatrunsjavacodeBytranslatingIntomachine-spezifische Struktur, ImpactingPerformance, Sicherheit und Portabilität.1) TheClassloaderloads, Links und Intropionsclasss.2) Die ExecleateExexexexexexexexecutesytecodintomatinstructions.3) Memo


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Herunterladen der Mac-Version des Atom-Editors
Der beliebteste Open-Source-Editor

SublimeText3 Englische Version
Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

Dreamweaver CS6
Visuelle Webentwicklungstools

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

DVWA
Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software
