Serwlety - kody stanu HTTP
Format żądania HTTP i wiadomości odpowiedzi HTTP jest podobny i będzie miał następującą strukturę -
- Początkowy wiersz stanu + CRLF (powrót karetki + znak nowego wiersza, czyli nowa linia) 
- Zero lub więcej linii nagłówka + CRLF 
- Pusta linia, czyli CRLF 
- Opcjonalna treść wiadomości, taka jak plik, dane zapytania lub dane wyjściowe zapytania. 
Na przykład nagłówek odpowiedzi serwera wygląda następująco -
HTTP/1.1 200 OK
Content-Type: text/html
Header2: ...
...
HeaderN: ...
   (Blank Line)
<!doctype ...>
<html>
   <head>...</head>
   <body>
      ...
   </body>
</html>Wiersz statusu składa się z wersji HTTP (w przykładzie HTTP / 1.1), kodu statusu (w przykładzie 200) i bardzo krótkiej wiadomości odpowiadającej kodowi statusu (w przykładzie OK).
Poniżej znajduje się lista kodów stanu HTTP i powiązanych komunikatów, które mogą zostać zwrócone z serwera internetowego -
| Kod | Wiadomość | Opis | 
|---|---|---|
| 100 | Kontyntynuj | Tylko część żądania została odebrana przez serwer, ale dopóki nie zostanie odrzucona, klient powinien kontynuować żądanie | 
| 101 | Przełączanie protokołów | Serwer przełącza protokół. | 
| 200 | dobrze | Żądanie jest OK | 
| 201 | Utworzony | Żądanie zostało zakończone i został utworzony nowy zasób | 
| 202 | Przyjęty | Żądanie zostało przyjęte do przetwarzania, ale przetwarzanie nie zostało zakończone. | 
| 203 | Informacje nieautorytatywne | |
| 204 | Brak zawartości | |
| 205 | Resetuj zawartość | |
| 206 | Częściowa zawartość | |
| 300 | Wiele możliwości wyboru | Lista linków. Użytkownik może wybrać łącze i przejść do tej lokalizacji. Maksymalnie pięć adresów | 
| 301 | Przeniesiony na stałe | Żądana strona została przeniesiona do nowego adresu URL | 
| 302 | Znaleziony | Żądana strona została tymczasowo przeniesiona do nowego adresu URL | 
| 303 | Zobacz inne | Żądaną stronę można znaleźć pod innym adresem URL | 
| 304 | Niezmodyfikowany | |
| 305 | Użyj proxy | |
| 306 | Nie używany | Ten kod był używany w poprzedniej wersji. Nie jest już używany, ale kod jest zarezerwowany | 
| 307 | Tymczasowe przekierowanie | Żądana strona została tymczasowo przeniesiona do nowego adresu URL. | 
| 400 | Zła prośba | Serwer nie zrozumiał żądania | 
| 401 | Nieautoryzowany | Żądana strona wymaga nazwy użytkownika i hasła | 
| 402 | Płatność wymagana | Nie możesz jeszcze użyć tego kodu | 
| 403 | Zabroniony | Dostęp do żądanej strony jest zabroniony | 
| 404 | Nie znaleziono | Serwer nie może znaleźć żądanej strony. | 
| 405 | Niedozwolona metoda | Metoda określona w żądaniu jest niedozwolona. | 
| 406 | Niedopuszczalne | Serwer może tylko wygenerować odpowiedź, która nie została zaakceptowana przez klienta. | 
| 407 | Wymagane uwierzytelnienie proxy | Aby można było obsłużyć to żądanie, musisz uwierzytelnić się na serwerze proxy. | 
| 408 | Limit czasu żądania | Żądanie trwało dłużej, niż serwer był przygotowany do oczekiwania. | 
| 409 | Konflikt | Żądanie nie mogło zostać ukończone z powodu konfliktu. | 
| 410 | Odszedł | Żądana strona nie jest już dostępna. | 
| 411 | Wymagana długość | „Długość treści” nie jest zdefiniowana. Serwer nie przyjmie żądania bez niego. | 
| 412 | Nie udało się spełnić warunku wstępnego | Warunek wstępny podany w żądaniu uznany przez serwer za fałszywy. | 
| 413 | Wymagana jednostka jest za duża | Serwer nie przyjmie żądania, ponieważ jednostka żądania jest zbyt duża. | 
| 414 | Adres URL żądania jest za długi | Serwer nie przyjmie żądania, ponieważ adres URL jest za długi. Występuje po przekonwertowaniu żądania „post” na żądanie „get” z długimi informacjami o zapytaniu. | 
| 415 | Nieobsługiwany typ nośnika | Serwer nie przyjmie żądania, ponieważ typ nośnika nie jest obsługiwany. | 
| 417 | Oczekiwanie nie powiodło się | |
| 500 | Wewnętrzny błąd serwera | Żądanie nie zostało zakończone. Serwer spełnił nieoczekiwany warunek. | 
| 501 | Nie zaimplementowano | Żądanie nie zostało zakończone. Serwer nie obsługiwał wymaganej funkcjonalności. | 
| 502 | zła Brama | Żądanie nie zostało zakończone. Serwer otrzymał nieprawidłową odpowiedź z serwera nadrzędnego. | 
| 503 | serwis niedostępny | Żądanie nie zostało zakończone. Serwer jest tymczasowo przeciążony lub wyłączony. | 
| 504 | Limit czasu bramy | Upłynął limit czasu bramy. | 
| 505 | Wersja HTTP nie jest obsługiwana | Serwer nie obsługuje wersji „protokołu http”. | 
Metody ustawiania kodu stanu HTTP
Poniższych metod można użyć do ustawienia kodu stanu HTTP w programie serwletu. Te metody są dostępne z obiektem HttpServletResponse .
| Sr.No. | Metoda i opis | 
|---|---|
| 1 | public void setStatus ( int statusCode ) Ta metoda ustawia dowolny kod stanu. Metoda setStatus przyjmuje jako argument int (kod stanu). Jeśli twoja odpowiedź zawiera specjalny kod statusu i dokument, pamiętaj, aby wywołać setStatus przed faktycznym zwróceniem jakiejkolwiek zawartości z PrintWriter . | 
| 2 | public void sendRedirect(String url) Ta metoda generuje odpowiedź 302 wraz z nagłówkiem Location podającym adres URL nowego dokumentu | 
| 3 | public void sendError(int code, String message) Ta metoda wysyła kod stanu (zwykle 404) wraz z krótką wiadomością, która jest automatycznie formatowana w dokumencie HTML i wysyłana do klienta. | 
Przykład kodu stanu HTTP
Poniżej znajduje się przykład, który wyśle kod błędu 407 do przeglądarki klienta, a przeglądarka wyświetli komunikat „Potrzebujesz uwierzytelnienia !!!” wiadomość.
// 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);
   }
}Teraz wywołanie powyższego serwletu spowoduje wyświetlenie następującego wyniku -
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