Servlets - HTTP-Statuscodes

Das Format der HTTP-Anforderungs- und HTTP-Antwortnachrichten ist ähnlich und hat 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 wie folgt 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 der HTTP-Version (im Beispiel HTTP / 1.1), einem Statuscode (im Beispiel 200) und einer sehr kurzen Nachricht, die dem Statuscode entspricht (im Beispiel OK).

Im Folgenden finden Sie eine Liste der HTTP-Statuscodes und der zugehörigen Nachrichten, 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. 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 die Version "http protocol" nicht.

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 .

Sr.Nr. 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 setStatus auf, bevor Sie 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 sendet einen 407-Fehlercode an den Client-Browser und der Browser zeigt "Authentifizierung erforderlich !!!" an. Botschaft.

// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;

// Extend HttpServlet class
public class showError extends HttpServlet {
 
   // Method to handle GET method request.
   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      // Set error code and reason.
      response.sendError(407, "Need authentication!!!" );
   }
   
   // Method to handle POST method request.
   public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      doGet(request, response);
   }
}

Wenn Sie nun das obige Servlet aufrufen, wird das folgende Ergebnis angezeigt:

HTTP Status 407 - Need authentication!!!

type Status report

messageNeed authentication!!!

descriptionThe client must first authenticate itself with the proxy (Need authentication!!!).

Apache Tomcat/5.5.29