JSP - HTTP-Statuscodes
In diesem Kapitel werden die HTTP-Statuscodes in JSP erläutert. Das Format der HTTP-Anforderung und der HTTP-Antwortnachrichten ist ähnlich und hat die folgende Struktur:
Eine anfängliche Statuszeile + CRLF (Wagenrücklauf + Zeilenvorschub, dh neue Zeile)
Keine oder mehr Kopfzeilen + CRLF
Eine leere Zeile dh. eine CRLF
Ein optionaler Nachrichtentext wie Datei, Abfragedaten oder Abfrageausgabe.
Ein Server-Antwortheader sieht beispielsweise folgendermaßen aus:
HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
(Blank Line)
<!doctype ...>
<html>
<head>...</head>
<body>
...
</body>
</html>
Die Statuszeile besteht aus dem HTTP version (HTTP/1.1 in the example), einen Statuscode (im Beispiel 200) und eine sehr kurze Nachricht, die dem Statuscode entspricht (OK in the example).
In der folgenden Tabelle sind die HTTP-Statuscodes und zugehörigen Nachrichten aufgeführt, die möglicherweise vom Webserver zurückgegeben werden.
Code | Botschaft | Beschreibung |
---|---|---|
100 | Fortsetzen | Nur ein Teil der Anfrage wurde vom Server empfangen. Solange sie nicht abgelehnt wurde, sollte der Client mit der Anfrage fortfahren |
101 | Protokolle wechseln | Der Server wechselt das Protokoll. |
200 | in Ordnung | Die Anfrage ist OK |
201 | Erstellt | Die Anforderung ist abgeschlossen und eine neue Ressource wird erstellt |
202 | Akzeptiert | Die Anforderung wird zur Verarbeitung angenommen, die Verarbeitung ist jedoch nicht abgeschlossen. |
203 | Nicht maßgebliche Informationen | |
204 | Kein Inhalt | |
205 | Inhalt zurücksetzen | |
206 | Teilinhalt | |
300 | Mehrere Auswahlmöglichkeiten | Eine Linkliste; Der Benutzer kann einen Link auswählen und zu diesem Ort gehen. Maximal fünf Adressen. |
301 | dauerhaft umgezogen | Die angeforderte Seite wurde in eine neue URL verschoben. |
302 | Gefunden | Die angeforderte Seite wurde vorübergehend in eine neue URL verschoben. |
303 | Siehe Andere | Die angeforderte Seite befindet sich unter einer anderen URL. |
304 | Nicht modifiziert | |
305 | Verwenden Sie Proxy | |
306 | Ungebraucht | Dieser Code wurde in einer früheren Version verwendet. Es wird nicht mehr verwendet, aber der Code ist reserviert. |
307 | Temporäre Weiterleitung | Die angeforderte Seite wurde vorübergehend in eine neue URL verschoben. |
400 | Ungültige Anforderung | Der Server hat die Anfrage nicht verstanden. |
401 | Nicht autorisiert | Die angeforderte Seite benötigt einen Benutzernamen und ein Passwort. |
402 | Bezahlung erforderlich | Sie können diesen Code noch nicht verwenden. |
403 | verboten | Der Zugriff auf die angeforderte Seite ist verboten |
404 | Nicht gefunden | Der Server kann die angeforderte Seite nicht finden. |
405 | Methode nicht erlaubt | Die in der Anfrage angegebene Methode ist nicht zulässig. |
406 | Inakzeptabel | Der Server kann nur eine Antwort generieren, die vom Client nicht akzeptiert wird. |
407 | Proxy-Authentifizierung erforderlich | Sie müssen sich bei einem Proxyserver authentifizieren, bevor diese Anforderung bearbeitet werden kann. |
408 | Zeitüberschreitung der Anforderung | Die Anfrage dauerte länger als der Server bereit war zu warten. |
409 | Konflikt | Die Anforderung konnte aufgrund eines Konflikts nicht abgeschlossen werden. |
410 | Weg | Die angeforderte Seite ist nicht mehr verfügbar. |
411 | Länge erforderlich | Die "Inhaltslänge" ist nicht definiert. Der Server akzeptiert die Anfrage ohne sie nicht. |
412 | Voraussetzung fehlgeschlagen | Die in der Anforderung angegebene Voraussetzung wird vom Server als falsch bewertet. |
413 | Anfrage Entität zu groß | Der Server akzeptiert die Anforderung nicht, da die Anforderungsentität zu groß ist. |
414 | Anfrage-URL zu lang | Der Server akzeptiert die Anforderung nicht, da die URL zu lang ist. Dies tritt auf, wenn Sie eine "Post" -Anforderung in eine "Get" -Anforderung mit langen Abfrageinformationen konvertieren. |
415 | Nicht unterstützter Medientyp | Der Server akzeptiert die Anforderung nicht, da der Medientyp nicht unterstützt wird. |
417 | Erwartung fehlgeschlagen | |
500 | interner Serverfehler | Die Anfrage wurde nicht abgeschlossen. Der Server hat eine unerwartete Bedingung erfüllt. |
501 | Nicht implementiert | Die Anfrage wurde nicht abgeschlossen. Der Server hat die erforderliche Funktionalität nicht unterstützt. |
502 | Schlechtes Gateway | Die Anfrage wurde nicht abgeschlossen. Der Server hat eine ungültige Antwort vom Upstream-Server erhalten. |
503 | Dienst nicht verfügbar | Die Anfrage wurde nicht abgeschlossen. Der Server ist vorübergehend überlastet oder ausgefallen. |
504 | Gateway-Zeitüberschreitung | Das Gateway hat eine Zeitüberschreitung. |
505 | HTTP-Version wird nicht unterstützt | Der Server unterstützt das nicht "http protocol" Ausführung. |
Methoden zum Festlegen des HTTP-Statuscodes
Die folgenden Methoden können verwendet werden, um den HTTP-Statuscode in Ihrem Servlet-Programm festzulegen. Diese Methoden sind mit dem HttpServletResponse- Objekt verfügbar .
S.No. | Methode & Beschreibung |
---|---|
1 | public void setStatus ( int statusCode ) Diese Methode legt einen beliebigen Statuscode fest. Die setStatus-Methode verwendet ein int (den Statuscode) als Argument. Wenn Ihre Antwort einen speziellen Statuscode und ein Dokument enthält, rufen Sie unbedingt ansetStatusbevor Sie tatsächlich Inhalte mit dem PrintWriter zurückgeben . |
2 | public void sendRedirect(String url) Diese Methode generiert eine 302-Antwort zusammen mit einem Standortkopf , der die URL des neuen Dokuments angibt. |
3 | public void sendError(int code, String message) Diese Methode sendet einen Statuscode (normalerweise 404) zusammen mit einer Kurznachricht, die automatisch in einem HTML-Dokument formatiert und an den Client gesendet wird. |
Beispiel für einen HTTP-Statuscode
Das folgende Beispiel zeigt, wie ein 407-Fehlercode an den Client-Browser gesendet wird. Danach würde der Browser Ihnen "Need authentication!!!" Botschaft.
<html>
<head>
<title>Setting HTTP Status Code</title>
</head>
<body>
<%
// Set error code and reason.
response.sendError(407, "Need authentication!!!" );
%>
</body>
</html>
Sie erhalten folgende Ausgabe:
HTTP Status 407 - Need authentication!!!
type Status report
message Need authentication!!!
description The client must first authenticate itself with the proxy (Need authentication!!!).
Apache Tomcat/5.5.29
Versuchen Sie, verschiedene Statuscodes und deren Beschreibung festzulegen, um sich mit HTTP-Statuscodes vertraut zu machen.