JSP - Kody stanu HTTP
W tym rozdziale omówimy kody stanu HTTP w JSP. Format żądania HTTP i wiadomości odpowiedzi HTTP są podobne i będą miały następującą strukturę -
Początkowy wiersz stanu + CRLF (powrót karetki + nowy wiersz, tj. Nowy wiersz)
Zero lub więcej linii nagłówka + CRLF
Pusta linia, tj. 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>
Linia stanu składa się z HTTP version (HTTP/1.1 in the example), kod stanu (w przykładzie 200) i bardzo krótki komunikat odpowiadający kodowi stanu (OK in the example).
Poniższa tabela zawiera listę 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. Dzieje się tak, gdy konwertujesz żądanie „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 "http protocol" wersja. |
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 w obiekcie HttpServletResponse .
S.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, zadzwońsetStatusprzed faktycznym zwróceniem jakiejkolwiek zawartości za pomocą 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ższy przykład pokazuje, jak kod błędu 407 jest wysyłany do przeglądarki klienta. Po tym przeglądarka pokaże Ci „Need authentication!!!”wiadomość.
<html>
<head>
<title>Setting HTTP Status Code</title>
</head>
<body>
<%
// Set error code and reason.
response.sendError(407, "Need authentication!!!" );
%>
</body>
</html>
Otrzymasz następujący wynik -
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
Aby lepiej sobie radzić z kodami stanu HTTP, spróbuj ustawić różne kody stanu i ich opis.