In diesem Artikel wird hauptsächlich das URL-Abfangen von Struts1_bezogenen Informationen vorgestellt, die von der Power Node Java Academy zusammengestellt wurden. Freunde in Not können sich darauf beziehen
Das URL-Abfangen von Struts1
Lassen Sie uns zunächst ActionServlet eingehend analysieren. Wir verwenden Breakpoint-Debugging, um den zugrunde liegenden Quellcode zu untersuchen. Da diese Instanz im Post-Modus übermittelt wird, legen Sie den Haltepunkt auf die doPost-Methode fest.
Wir debuggen das laufende Programm und geben die Methode in doPost ein:
Diese Methode Es ist sehr wichtig, dass es die Kernmethode für die Ausführung von ActionServlet ist.
Wir geben diese Methode ein:
Dann geben Sie weiter ein:
Wir haben plötzlich entdeckt, dass eine solche Methode die Methode „processPath“ ist, eine Methode zum Abfangen von Zeichenfolgen. Der Quellcode dieser Methode lautet wie folgt:
/** * <p>Identify and return the path component(from the request URI) that * we will use to select an <code>ActionMapping</code> with which todispatch. * If no such path can be identified,create an error response and return * <code>null</code>.</p> * * @param request The servlet request weare processing * @param response The servlet response weare creating * * @exception IOException if an input/outputerror occurs */ protectedString processPath(HttpServletRequest request, HttpServletResponse response) throws IOException { String path = null; // For prefix matching, match on the path info (if any) path = (String) request.getAttribute(INCLUDE_PATH_INFO); if (path == null) { path = request.getPathInfo(); } if ((path != null) && (path.length() > 0)) { return (path); } // For extension matching, strip the module prefix and extension path = (String) request.getAttribute(INCLUDE_SERVLET_PATH); if (path == null) { path = request.getServletPath(); } String prefix = moduleConfig.getPrefix(); if (!path.startsWith(prefix)) { String msg =getInternal().getMessage("processPath"); log.error(msg + " " + request.getRequestURI()); response.sendError(HttpServletResponse.SC_BAD_REQUEST, msg); return null; } path = path.substring(prefix.length()); int slash = path.lastIndexOf("/"); int period = path.lastIndexOf("."); if ((period >= 0) && (period >slash)) { path = path.substring(0, period); } return (path); }
Analysieren Sie diesen Code:
path = (String)request.getAttribute(INCLUDE_PATH_INFO); if (path == null) { path = request.getPathInfo(); } if ((path != null) && (path.length() > 0)) { return (path); }
Dieser Code ermittelt zunächst, ob die Pfadinformationen in javax.servlet.include.path_info vorhanden sind. Hier müssen Sie wissen, dass dieser Attributwert nur vorhanden ist, wenn eine Seite im RequestDispatcher.include-Modus angezeigt wird. Wenn hier also kein Wert vorhanden ist, wird das Programm path=request.getPathInfo() eingegeben. Der von getPathInfo hier erhaltene Wert ist die Pfadinformation relativ zum Servlet.
// For extension matching, stripthe module prefix and extension path = (String) request.getAttribute(INCLUDE_SERVLET_PATH); if (path == null) { path = request.getServletPath(); } String prefix = moduleConfig.getPrefix(); if (!path.startsWith(prefix)) { String msg =getInternal().getMessage("processPath"); log.error(msg + " " + request.getRequestURI()); response.sendError(HttpServletResponse.SC_BAD_REQUEST, msg); return null; }
Mit diesem Codeteil wird ermittelt, ob javax.servlet.include.servlet_path einen Wert hat. Dieser Attributwert existiert nur, wenn eine Seite im requestDispatcher.include-Modus angezeigt wird, daher gibt es hier keinen Wert . . Geben Sie dann path = request.getServletPath(); ein. Diese Methode dient dazu, die Teilzeichenfolge nach der Rückgabe des Anforderungs-URI-Kontexts abzurufen. Der Rückgabewert lautet hier also „/“ sowie der Name und das Suffix der Zugriffsseite (ist dies dasselbe wie bei meiner MVC-Instanz). abfangen? Prinzip). Geben Sie dann den folgenden Code ein:
path = path.substring(prefix.length()); intslash = path.lastIndexOf("/"); intperiod = path.lastIndexOf("."); if((period >= 0) && (period > slash)) { path = path.substring(0, period); } return (path);
Die Methode hier ist im Wesentlichen die gleiche wie meine oben, die Hauptsache ist, das Suffix zu entfernen.
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in das Abfangen von Struts1-URLs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.

In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher


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

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

mPDF
mPDF ist eine PHP-Bibliothek, die PDF-Dateien aus UTF-8-codiertem HTML generieren kann. Der ursprüngliche Autor, Ian Back, hat mPDF geschrieben, um PDF-Dateien „on the fly“ von seiner Website auszugeben und verschiedene Sprachen zu verarbeiten. Es ist langsamer und erzeugt bei der Verwendung von Unicode-Schriftarten größere Dateien als Originalskripte wie HTML2FPDF, unterstützt aber CSS-Stile usw. und verfügt über viele Verbesserungen. Unterstützt fast alle Sprachen, einschließlich RTL (Arabisch und Hebräisch) und CJK (Chinesisch, Japanisch und Koreanisch). Unterstützt verschachtelte Elemente auf Blockebene (wie P, DIV),

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

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

MantisBT
Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.