2017-06-23 7 views
0

Wenn ich "/" als meine URL-Muster habe, kann ich nach dem Schrägstrich in die Adressleiste eingeben und landen erfolgreich auf dem Servlet . Das heißt, beideURL-Muster "/" vs "/ *" vs leer im Servlet

http://localhost:8080/firstServlet/ 

sowie

http://localhost:8080/firstServlet/any_random_string 

gibt mir das gleiche Ergebnis.

Aber wenn ich url-Muster leer habe, dann funktioniert nur http://localhost:8080/firstServlet/ und alles. Bitte erläutern Sie warum. Es gibt etwas here und here ähnlich, aber ich verstehe es nicht genau.

Das Muster "/ *" verhält sich auch genau wie "/".

+0

auch „/“ und „/ *“ werden auf die gleiche Art und Weise verhalten, und wenn ich sage „/ *“, meine ich nicht „/“ gefolgt von "/* "wie in einem Verzeichnis übereinstimmen! –

+0

Diese Frage hat bereits hier eine Antwort [Unterschied zwischen/und/* im Servlet-Mapping-URL-Muster] (https://stackoverflow.com/questions/4140448/difference-between-and-in-servlet-mapping-url-pattern) –

Antwort

1
<url-pattern>/*</url-pattern> 

Der/* auf ein Servlet alle anderen Servlets überschreibt, einschließlich aller durch die Servlets servletcontainer wie das Standard-Servlet und JSP Servlet bereitgestellt. Was immer Sie anfordern, es wird in diesem Servlet enden. Dies ist daher ein schlechtes URL-Muster für Servlets. Normalerweise möchten Sie/* nur auf einem Filter verwenden

Das/überschreibt kein anderes Servlet. Es ersetzt nur das eingebaute Servlet des Servletcontainers für alle Anfragen, das keinem anderen registrierten Servlet entspricht. Dies wird in der Regel nur auf statischen Ressourcen aufgerufen (CSS/JS/image/etc) und Verzeichnislisten

Und für leere URL-Muster

<url-pattern></url-pattern> 

Die leere Zeichenfolge ("") ist ein spezielles URL-Muster dass genau abbildet Kontext root Anwendung

+0

Du meinst wie man es in web.xml eintippt? –

+0

Es tut mir leid für diesen falsch eingegebenen Kommentar. Ich habe "/ *" nicht verstanden, ich habe verstanden, warum "/" so reagiert hat, wie es aus Ihrer Antwort und [hier] (https://www.codeanch.com/t/366340/java/servlet-mapping-url -Muster). Und was ist mit einer leeren Saite? Bitte fügen Sie es in Ihre Antwort ein. –

+0

Fertig, ich aktualisiere meine Antwort –

Verwandte Themen