Beim Konfigurieren von web.xml für Tomcat ist Servlet ein relativ wichtiges Thema. Hier diskutieren wir mehrere Schwachstellen bei Servlets.
1 Problem beim Abgleichen von Servlet Es gibt drei Übereinstimmungsmodi für 1.1 Genaue Übereinstimmung Die im Codebeispiel: point_down: <Servlet-Zuordnung> <servlet-name>MeinServlet</servlet-name> <URL-Muster>/kata/detail.html</URL-Muster> <URL-Muster>/demo.html</URL-Muster> <URL-Muster>/Tabelle</URL-Muster> </servlet-mapping> Wenn Sie die folgenden URLs im Browser eingeben, werden sie dem Servlet zugeordnet Beachten: Darüber hinaus können auf die obige URL beliebige Abfragebedingungen folgen, die dann abgeglichen werden, wie zum Beispiel Die Anfrage 1.2 Pfadanpassung Für die Pfadübereinstimmung wird eine Zeichenfolge verwendet, die mit dem Zeichen „/“ beginnt und mit „/*“ endet. Codebeispiel: point_down: <Servlet-Zuordnung> <servlet-name>MeinServlet</servlet-name> <URL-Muster>*.jsp</URL-Muster> <URL-Muster>*.Aktion</URL-Muster> </servlet-mapping> Der Pfad beginnt mit /user/ und der Rest des Pfades kann beliebig sein. Beispielsweise werden die folgenden URLs abgeglichen. 1.3 Suffix-Matching Zeichenfolgen, die mit „*.“ beginnen, werden für die Suffixübereinstimmung verwendet. Codebeispiel: point_down: <Servlet-Zuordnung> <servlet-name>MeinServlet</servlet-name> <URL-Muster>*.jsp</URL-Muster> <URL-Muster>*.Aktion</URL-Muster> </servlet-mapping> Dann wird jede URL-Anfrage mit der Erweiterung jsp oder action abgeglichen, beispielsweise werden die folgenden URLs abgeglichen Hinweis: Pfad- und Suffixübereinstimmung können nicht gleichzeitig festgelegt werden Hinweis: Pfad- und Erweiterungsübereinstimmung können nicht gleichzeitig festgelegt werden, wie beispielsweise die folgenden drei Einige Beispiele: point_down:, wenn Sie es nicht verstehen, lesen Sie bitte Kapitel 3 dieses Artikels 2 Der Unterschied zwischen Lassen Sie uns zuerst über Außerdem hat 3 Probleme mit der Priorität von URL-Mustern Wenn eine URL den Übereinstimmungsregeln mehrerer Servlets entspricht, wird das entsprechende Servlet entsprechend der Priorität „genauer Pfad > längster Pfad > Suffix-Übereinstimmung“ abgeglichen. Beispiel 1: Beispielsweise ist das URL-Muster von ServletA /test und das URL-Muster von ServletB /*. Wenn die von mir besuchte URL zu diesem Zeitpunkt http://localhost/test ist, führt der Container zuerst eine exakte Pfadübereinstimmung durch und stellt fest, dass /test exakt mit ServletA übereinstimmt. In diesem Fall wird ServletA aufgerufen, ohne sich um ServletB zu kümmern. Beispiel 2: Wenn beispielsweise das URL-Muster von ServletA /test/ und das URL-Muster von ServletB /test/a/ ist , wählt der Container beim Zugriff auf http://localhost/test/a das Servlet mit dem längsten passenden Pfad aus, in diesem Fall also ServletB. Beispiel 3: Beispielsweise lautet das URL-Muster von ServletA: *.action und das URL-Muster von ServletB ist Dann stellt sich eine Frage. Warum stimmt Der Grund ist ganz einfach. In tomcat/conf/web.xml gibt es folgende Konfiguration <Servlet-Zuordnung> <Servlet-Name>Standard</Servlet-Name> <URL-Muster>/</URL-Muster> </servlet-mapping> <!-- Die Zuordnungen für das JSP-Servlet --> <Servlet-Zuordnung> <Servlet-Name>jsp</Servlet-Name> <URL-Muster>*.jsp</URL-Muster> <URL-Muster>*.jspx</URL-Muster> </servlet-mapping> :point_up_2: Es ist deutlich zu erkennen, dass 4 Root-Pfad Möglicherweise ist Ihnen ein Problem aufgefallen: Wenn das URL-Muster /* ist, führt der Zugriff auf http://localhost:8080/ zu einer 404-Fehlermeldung, der Zugriff auf http://localhost:8080/index.html funktioniert jedoch einwandfrei (Voraussetzung ist natürlich, dass Zunächst muss geklärt werden, was das Stammverzeichnis einer URL, also / (z. B. http://localhost:8080/), bedeutet? Durch Experimente haben wir festgestellt, dass / etwas ganz Besonderes ist. Es wird mit dem URL-Muster von /* abgeglichen, aber nicht mit dem URL-Muster von /. In Tomcat wird / standardmäßig von defaultservlet abgeglichen, aber seine Priorität ist niedriger als die Pfadabgleichung. Wenn also das URL-Muster eines Servlets /* ist, wird / von diesem Servlet abgeglichen und nicht von defaultservlet. Der folgende im Tomcat-Quellcode gefundene Ausschnitt kann meine Ansicht unterstützen: point_down:
:point_up_2:Das Obige bezieht sich auf Übersetzung:point_down: Wenn die Anforderungs-URI auf ein Verzeichnis verweist, sucht das Standard-Servlet in diesem Verzeichnis und, falls vorhanden, in der entsprechenden Ressourcen-URI nach einer „Willkommensdatei“ zur Anzeige. Wenn keine Willkommensdatei vorhanden ist, stellt das Standard-Servlet entweder eine Verzeichnisliste bereit (Informationen zur Anpassung finden Sie in der Standard-Servlet-Konfiguration) oder gibt einen 404-Status zurück, abhängig vom Wert der Listeneinstellung. Der Grund, warum / auf die Willkommensseite umgeleitet wird, ist das Vorhandensein von Zusammenfassen Dies ist das Ende dieses Artikels mit der detaillierten Erklärung des Problems der Konfiguration des Servlet-URL-Musters in Tomcat. Weitere relevante Inhalte zur Tomcat-Konfiguration des Servlets finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder durchsuchen Sie die verwandten Artikel weiter unten. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! Das könnte Sie auch interessieren:
|
<<: Das Front-End muss wissen, wie Bilder verzögert geladen werden (drei Methoden)
Like bedeutet auf Chinesisch „wie“, aber wenn es ...
1. Laden Sie MySQL Community Server 5.7.16 herunt...
Einführung MySQL bietet einen EXPLAIN-Befehl, der...
Beginnen wir mit einer Frage Als ich vor fünf Jah...
erster Schritt Einmaliges Löschen mit der integri...
Inhaltsverzeichnis Ein Set ist eine spezielle Sam...
1. Legen Sie den CORS-Antwortheader fest, um domä...
SQL implementiert Additions-, Subtraktions-, Mult...
Inhaltsverzeichnis 1. Strombegrenzungsalgorithmus...
Was ist ein Karussell? Karussell: In einem Modul ...
Die neueste Verpackungsschachtel für Perfect Aloe...
Code kopieren Der Code lautet wie folgt: ein:link...
Ein Prozess ist ein Programmcode, der in der CPU ...
1. Trash oder Klassiker? Die Webtechnologie aktua...
1. Farbabstimmungsproblem <br />Eine Webseit...