Dieses Mal werden wir über einige Inhalte zum Thema 404 sprechen. Denn im Hintergrund des offiziellen Kontos und der QQ-Gruppe stellen die Leute die gleichen Fragen:
Meine Anwendung wurde bereitgestellt und ich habe beim Starten im Hintergrund keine ungewöhnliche Ausgabe gesehen. Sie können den Manager von Tomcat anfordern, aber warum wird bei der Anforderung Ihrer eigenen Bewerbung immer 404 zurückgegeben?
1. Die Anwendung wird bereitgestellt und es erfolgt keine abnormale Ausgabe im Hintergrund.
2. Die Manageranwendung von Tomcat kann normal anfordern
Die beiden oben genannten Punkte können nur zeigen, dass Tomcat normal startet und gleichzeitig die Manageranwendung und die Benutzeranwendung erfolgreich bereitgestellt werden, aber die Die Anforderung des Managers ist normal und kann nicht sichergestellt werden. Stellen Sie sicher, dass Ihre eigenen Anwendungen auch normal anfordern können.
Schließlich hat es nichts mit dem Manager zu tun, was Ihre In-App-Ressourcen sind, und die Adresse kann sogar falsch sein, wenn Sie sie anfordern. Mit anderen Worten: Sie beobachten die im Webapps-Verzeichnis bereitgestellte Anwendung, aber Anfragen im Browser geben immer 404 zurück, ohne anzuhalten.
Die obige Frage ist der Hauptanalyseinhalt unseres Artikels. Schauen wir uns zunächst den Statuscode der HTTP-Anfrage 404 an, der in Wikipedia beschrieben wird:
Die HTTP-Fehlermeldung 404 (Not Found) ist ein Standard-Antwortcode in der Computernetzwerkkommunikation, sie identifiziert den Client und Der Server kommuniziert, aber der Server kann die vom Client angeforderte Ressource nicht finden.
In Tomcat wird in vielen Situationen 404 zurückgegeben.
Wie wir im vorherigen Artikel erwähnt haben, enthält Tomcat zwei Standard-Servlets:
JspServlet, DefaultServlet. (Wie reagiert Tomcat auf statische Ressourcen?)
Wenn wir zufällig eine Ressource anfordern, die in Tomcat nicht vorhanden ist, z. B. die folgenden zwei Ressourcen, die nicht vorhanden sind:
http:// localhost: 8080/abc und http://localhost:8080/abcd.jsp
Zu diesem Zeitpunkt werden Anfragen an die beiden oben genannten Servlets gestellt. Da die Ressource zu diesem Zeitpunkt nicht vorhanden ist, entspricht die Rückgabe 404 unseren Erwartungen.
Beispielsweise prüft DefaultServlet bei der Verarbeitung einer Anfrage, ob die aktuell angeforderte Ressource in Resource vorhanden ist.
Hier wird ein Cache verwendet, um alle Ressourceninhalte der aktuellen Anwendung aufzuzeichnen
in den Ressourcen nicht zu finden. Das Bild unten zeigt die Ressourcen in der Tomcat-Root-Anwendung
Nachdem hier der Status und die Meldung in der Antwort festgelegt wurden, endet der gesamte Verarbeitungsprozess und die Fehlerseite Wird entsprechend der spezifischen Konfiguration angezeigt, können unterschiedliche Statuscodes verschiedenen Seiten entsprechen. Hier ist die Tomcat-Fehlerseite. Wir haben die spezifische Implementierung im vorherigen Artikel analysiert. (Ihre Fehlerseite. Nein, es ist Ihre Fehlerseite)
Lassen Sie uns eine andere Situation analysieren:
Wenn Sie beispielsweise die Manager-Anwendung anfordern, wird der Anwendungsname als Manager oder managerR ,At geschrieben Dieses Mal stimmt es tatsächlich mit der obigen Verarbeitung überein. Dieser Anwendungsname wird als Ressource dieser Anwendung zur Verarbeitung erkannt. Wenn also keine solche Ressource vorhanden ist, wird 404 natürlich zurückgegeben.
Schauen wir uns eine andere Situation an:
Es gibt eine Fehlerseite 404.jsp unter der Manager-Anwendung, aber wenn Sie sie direkt im folgenden Formular anfordern, erhalten Sie immer noch 404
http://localhost:8080/manager/WEB-INF/jsp/404.jsp
Jeder weiß, dass dies der Zugriff auf das darin enthaltene Verzeichnis ist Es wurden Beschränkungen für den Kater eingeführt. (Wie viel wissen Sie über das WEB-INF-Verzeichnis)
Eine bestimmte Seite in Ihrer Anwendung, vorausgesetzt, sie befindet sich in index.jsp, springt im Wesentlichen zu einer anderen Seite, wenn Sie sendRedirect verwenden Glücklicherweise werden nach dem Sprung die spezifischen Pfadinformationen angezeigt. Unter der Annahme, dass „Weiterleiten“ verwendet wird, existiert die Seite, die Sie weiterleiten, zu diesem Zeitpunkt nicht.
Zu diesem Zeitpunkt lautet jede Anfrage 404, aber Sie sehen, dass die von Ihnen angeforderte Seite eindeutig still im Verzeichnis liegt.
Wenn Sie also eine Anfrage sehen, die 404 zurückgibt, müssen Sie die Situation von Fall zu Fall analysieren, um die spezifische Ursache zu ermitteln, ob die Ressource wirklich nicht gefunden wurde, oder aus anderen Gründen.
Es ist sogar möglich, dass Sie mehrere Fehlercodes konfiguriert haben, die derselben 404-Fehlerseite entsprechen. Jedes Mal, wenn Sie 404 sehen, kann es andere Gründe geben.