Żądanie klienta JSP, odpowiedź serwera & Kody stanu HTTP

Spisie treści:

Anonim

Działania JSP, które używają konstrukcji w składni XML do sterowania zachowaniem mechanizmu serwletów. Dowiemy się bardziej szczegółowo o różnych elementach akcji JSP, takich jak żądanie klienta, odpowiedź serwera, kody statusu HTTP.

W tym samouczku nauczysz się:

  • Żądanie klienta JSP
  • Odpowiedź serwera JSP
  • Kody stanu HTTP JSP

Żądanie klienta JSP

  • Kiedy strona internetowa jest żądana, wysyła informacje do serwera WWW w nagłówku HTTP.
  • Możemy wykorzystać te informacje za pomocą obiektu HTTPServletRequest.
  • Informacje wysyłane przez przeglądarkę są przechowywane w nagłówku żądania HTTP.
  • Używamy różnych nagłówków do wysyłania informacji do obiektu żądania.

Poniżej opisano różne nagłówki:

nagłówek Opis Przykład
Zaakceptować Określa typy MIME, które przeglądarka lub inni klienci mogą obsługiwać Obraz / png lub image / jpeg.webp
Zaakceptuj-charset Używa zestawu znaków używanego przez przeglądarkę do wyświetlania informacji ISO-8859-1
Akceptuj - kodowanie Określa typ kodowania obsługiwanego przez przeglądarkę Gzip lub kompresuj
Zaakceptuj język Określa określony język klienta En, en_us
Upoważnienie Nagłówek używany przez klientów podczas próby uzyskania dostępu do stron internetowych chronionych hasłem
Połączenie Wskazuje, czy klient może obsługiwać trwałe połączenia HTTP (przeglądarka może pobierać wiele plików) Utrzymać przy życiu
Długość treści Dotyczy próśb o publikację. Daje rozmiar danych postu w bajtach
Ciastko Zwraca ciasteczka na serwer (te, które zostały wcześniej wysłane do przeglądarki)
Gospodarz Określa hosta i port oryginalnego adresu URL
Jeśli zmodyfikowano od Wskazuje, że wymaga tylko strony, jeśli została zmieniona lub zmodyfikowana
Jeśli niezmodyfikowane od Wskazuje, że wymaga strony tylko wtedy, gdy nie została zmieniona ani zmodyfikowana
Polecający Wskazuje adres URL strony odsyłającej
Agent użytkownika Identyfikuje przeglądarkę lub klienta wysyłającego żądanie

Do odczytywania nagłówka HTTP na stronie JSP używane są następujące metody:

  1. Cookie [] getCookies () - zwraca tablicę zawierającą obiekty cookie wysłane przez klienta
  2. Enumeration getAttributeNames () - zawiera wyliczenie nazw atrybutów dla żądania
  3. Enumeration getHeaderNames () - zawiera wyliczenie nazw nagłówków.
  4. Enumeration getParameterNames () - zawiera wyliczenie uzyskiwania nazw parametrów w żądaniu.
  5. HttpSessiongetSession () - zwraca bieżącą sesję skojarzoną z żądaniem lub jeśli nie ma sesji to utworzy nową.
  6. Locale getLocale () - zwraca preferowane ustawienia narodowe, w których klient będzie akceptował treść, które zostało przypisane do odpowiedzi. Domyślnie wartością będzie domyślne ustawienie regionalne serwera.
  7. Obiekt getAttribute (String name) - zwraca wartość nazwanego atrybutu jako obiekt.
  8. ServletInputStreamgetInputStream () - pobiera treść żądania jako dane binarne.
  9. String getAuthType () - zwraca nazwę schematu uwierzytelniania w celu ochrony serwletu
  10. String getCharacterEncoding () - zwraca nazwę kodowania znaków użytego w treści żądania.
  11. String getContentType () - zwraca typ MIME treści żądania.
  12. String getContextPath () - zwraca część żądania URI wskazującą ścieżkę kontekstu URI
  13. String getHeader (String name) - zwraca nagłówek żądania jako ciąg
  14. String getMethod () - zwraca nazwę metody HTTP, np. GET, POST
  15. String getParameter (String name) - zwraca parametr żądania w postaci ciągu.
  16. String getPathInfo () - zwraca informacje o ścieżce skojarzonej z adresem URL
  17. String getQueryString () - zwraca ciąg zapytania powiązany z adresem URL żądania
  18. String getServletPath () - zwraca część adresów URL żądania, które wywołuje stronę JSP
  19. String [] getParameterValues ​​(String name) - zwraca tablicę obiektów typu string zawierających wartości, które posiada parametr żądania

Przykład:

W poniższym przykładzie używamy różnych metod przy użyciu obiektu request

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%><% @ page import = "java.io. * java.util. *"%> Client Request Guru JSP 

Client Request Guru JSP

<%HttpSession gurusession = request.getSession ();out.print (" ");Locale gurulocale = request.getLocale ();out.print (" ");String path = request.getPathInfo ();out.print (" ");String lpath = request.get ();out.print (" ");String servername = request.getServerName ();out.print (" ");int nazwa portu = request.getServerPort ();out.print (" ");Enumeration hnames = request.getHeaderNames ();while (hnames.hasMoreElements ()) {String paramName = (String) hnames.nextElement ();out.print (" ");String paramValue = request.getHeader (paramName);out.println (" ");}%>

Wyjaśnienie kodu:

Linia kodu 17: Używając obiektu żądania, pobieramy obiekt sesji tej konkretnej sesji i otrzymujemy wartość obiektu tej sesji

Linia kodu 19: Używając obiektu żądania, pobieramy ustawienia regionalne tej konkretnej sesji, tj. Ustawienia narodowe en_US dla tej strony JSP.

Linia kodu 21: Używając obiektu żądania, pobieramy informacje o ścieżce dla tego JSP. W tym przypadku ma wartość null, ponieważ nie podano ścieżki do adresu URL.

Linia kodu 23: Używając obiektu żądania, otrzymujemy ścieżkę kontekstu, tj. Ścieżkę główną

Linia kodu 25: Używając obiektu żądania, pobieramy nazwę serwera.

Linia kodu 27: Używając obiektu żądania, otrzymujemy port serwera.

Linia kodu 29-35: Używając obiektu żądania, otrzymujemy nazwy nagłówków, które pojawiają się jako wyliczenie, a zatem otrzymujemy wszystkie wartości nagłówków w nazwach nagłówków.

W ten sposób otrzymujemy wszystkie wartości nagłówka jako plik cookie, host, połączenie, zaakceptuj język, zaakceptuj kodowanie.

Po wykonaniu powyższego kodu otrzymasz następujące dane wyjściowe:

Dane wyjściowe :

Otrzymujemy serię wartości, takich jak nazwa sesji, nazwa ustawień regionalnych, nazwa ścieżki, nazwa serwera, nazwa portu, host, ścieżka kontekstu i wszystkie wartości nagłówków tej strony JSP.

Odpowiedź serwera JSP

  • Gdy żądanie jest przetwarzane, a następnie generowana jest odpowiedź z serwera WWW. Składa się z wiersza stanu, nagłówków odpowiedzi, pustej linii i dokumentu.
  • Jest to obiekt HTTPServletResponseclass, który jest obiektem odpowiedzi.
  • Linia statusu to wersja HTML.

Nagłówki odpowiedzi są wymienione poniżej:

nagłówek guru nagłówek guru Wartości
Nazwa sesji to " + gurusession + "
Nazwa ustawień regionalnych to " + gurulocale + "
Nazwa ścieżki to " + ścieżka + "
Ścieżka kontekstowa to " + lipath + "
Nazwa serwera to " + nazwa_serwera + "
Port serwera to " + nazwa portu + "
" + paramName + "" + paramValue + "
nagłówek Opis
Dopuszczać Określa metody żądania, takie jak GET, POST, których żąda serwer
Kontrola pamięci podręcznej Dokument odpowiedzi można przechowywać w pamięci podręcznej. Może być publiczny, prywatny i bez pamięci podręcznej. Brak pamięci podręcznej określa, że ​​dokument nie powinien być buforowany
Połączenie Instruuje, czy przeglądarka ma używać zapisanych połączeń HTTTP, czy nie. Wartość Close oznacza, że ​​przeglądarka nie powinna używać trwałych połączeń w HTTPConnections, a „keep-alive” oznacza używanie trwałych połączeń
Dyspozycja treści Zapytanie użytkownika, czy zapisać odpowiedź na dysku, czy nie
Kodowanie treści Strona musi być zakodowana podczas transmisji
Długość treści Liczba bajtów w odpowiedzi
Typ zawartości Określa typ odpowiedzi MIME
Wygasa Określa, do kiedy zawartość powinna być uważana za nieaktualną i nie powinna być buforowana
Ostatnio zmodyfikowany Wskazuje, kiedy dokument był ostatnio modyfikowany
Lokalizacja Powinien być dołączony do wszystkich odpowiedzi, które mają kod statusu 300 jako kod stanu
Odświeżać Określa, jak znaleźć zaktualizowaną stronę.
Ponów po Może być używany z odpowiedzią 503, aby poinformować klienta, jak szybko może powtórzyć żądanie
Ustawiony plik cookie Określa plik cookie powiązany ze stroną

Poniżej przedstawiono metody wykorzystujące obiekt odpowiedzi:

  1. String encodeRedirectURL (String URL) - koduje adres URL w metodzie redirectURL.
  2. String encodeURL (String URL) - koduje adres URL, uwzględniając identyfikator sesji.
  3. Boolean zawiera nagłówek (nazwa ciągu) - zawiera nagłówek na stronie JSP lub nie.
  4. Boolean isCommited () - odpowiedź została zatwierdzona lub nie.
  5. Void addCookie (Cookie cookie) - dodaje plik cookie do odpowiedzi
  6. Void addDateHeader (nazwa ciągu, wartość ciągu) - dodaje nazwę daty i wartości nagłówka odpowiedzi
  7. Void addHeader (nazwa ciągu, wartość ciągu) - dodaje nagłówek odpowiedzi z nazwą i wartością
  8. Void addIntHeader (String name, int value) - dodaje nagłówek odpowiedzi z nazwą i wartością całkowitą
  9. Void flushBuffer () - wymusza zawartość bufora na wyjściu do klienta.
  10. Void reset () - czyści dane w buforze.
  11. Void resetBuffer - czyści bufor zawartości w odpowiedzi bez kasowania kodów statusu.
  12. Void sendError (intsc, Stringmsg) - wysyła odpowiedź błędu do klienta przy użyciu kodu statusu.
  13. Void sendRedirect (String location) - wysyła tymczasową odpowiedź przekierowania do klienta.
  14. Void setBufferSize (int size) - ustawia rozmiar bufora ciała
  15. Void setCharacterEncoding (String charset) - ustawia kodowanie znaków
  16. Void setContentType (String type) - ustawia typ treści odpowiedzi
  17. Void setContentLength (intlen) - ustawia długość treści odpowiedzi
  18. Void setLocale (Locale lcl) - ustawia typ locale odpowiedzi
  19. Void setStatus (intsc) - ustawia kod statusu odpowiedzi

Przykład:

W tym przykładzie omawiamy różne metody getLocale, flushbuffer, getWriter, get ContentType, setIntHeader.

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%><% @ page import = "java.io. * java.util. *"%> Odpowiedź guru dotycząca akcji 

Odpowiedź guru

<%Ustawienia regionalne lcl = response.getLocale ();out.println ("Ustawienia regionalne to: + lcl + "\ n");response.flushBuffer ();PrintWriter output = response.getWriter ();output.println ("To jest z obiektu pisarza");Typ ciągu = response.getContentType ();out.println ("Typ zawartości: + type + "\ n");// Ustaw czas odświeżania i automatycznego ładowania na 5 sekundresponse.setIntHeader ("Odśwież", 5);// Pobierz aktualny czasDate dt = new Date ();out.println ("Dzisiejsza data to: + dt.toString () + "\ n");%>

Wyjaśnienie kodu:

Linia kodu 13: Używając obiektu odpowiedzi, otrzymujemy obiekt locale tej sesji JSP

Linia kodu 15: Używając obiektu odpowiedzi, flushbuffer jest używany do wymuszenia zawartości bufora na kliencie

Linia kodu 16: Używając obiektu odpowiedzi, otrzymujemy obiekt pisarza, który otrzymuje dane wyjściowe w strumieniu wyjściowym

Code Line18: Używając obiektu odpowiedzi, otrzymujemy typ zawartości, tj. Typ MIME obiektu odpowiedzi

Linia kodu 21: Używając obiektu odpowiedzi, jest on używany do automatycznego ładowania co 5 sekund, ponieważ 5 jest ustawionym drugim parametrem

Po wykonaniu powyższego kodu otrzymasz następujące dane wyjściowe:

Wynik:

  • Tutaj otrzymujemy dane wyjściowe z obiektu writer z getWriter, który daje nam obiekt i możemy wyprowadzić w strumieniu wyjściowym.
  • Lokalizację otrzymujemy jako en_us, a typ treści jako text / html
  • Otrzymujemy kodowanie jako ISO 8859
  • Dzisiejsza data jest aktualną datą.

Kody stanu HTTP JSP

  • Po przetworzeniu żądania generowana jest odpowiedź. Linia statusu odpowiedzi składa się z wersji HTTP, kodu statusu i powiązanego komunikatu.
  • Wiadomość jest bezpośrednio powiązana z kodem statusu i wersją HTTP i jest określana przez serwer.
  • Domyślnie 200 jest ustawiony jako kod stanu w JSP, więc nie musimy go jawnie ustawiać.
  • Możemy ustawić jako metodę response.setStatus ()

Kody dzielą się na 5 następujących kategorii:

  • 100-199 - Tutaj klient wskazuje, że powinien odpowiedzieć jakąś czynnością
  • 200-299 - Oznacza to, że żądanie powiodło się
  • 300-399 - są używane dla plików, które zostały przeniesione i zwykle zawierają nagłówek lokalizacji wskazujący nowy adres
  • 400-499 - Wskazuje błąd klienta
  • 500-599 - Wskazuje błąd serwera

Poniżej przedstawiono niektóre typowe kody stanu:

  • 200 - Wskazuje, że wszystko jest w porządku
  • 301 - Przeniósł się na stałe
  • 304 - Nie zmodyfikowano od ostatniej zmiany
  • 400 - Złe żądanie
  • 404 Nie Znaleziono
  • 405 - Nie znaleziono metody
  • 500 wewnętrzny błąd serwera
  • 503 Usługa niedostępna
  • 505 - wersja HTTP nie jest obsługiwana

Niektóre z jego metod są wymienione poniżej:

  1. Publiczne void setStatus (intstatusCode)

    Ustawia kod statusu, który chcemy ustawić na tej stronie JSP, co da nam komunikat o ustawionym kodzie statusu

  2. Publiczne void sendRedirect (adres URL ciągu)

    Generuje odpowiedź 302 wraz z nagłówkiem lokalizacji podającym adres URL nowego dokumentu

  3. Publiczne void sendError (intcode, Stringmsg)

    Wysyła kod statusu wraz z krótką wiadomością i jest sformatowany w dokumencie HTML.

Przykład:

W tym przykładzie jawnie wysyłamy błąd do strony JSP.

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%> Kod statusu guru <% response.sendError (404, "Nie znaleziono strony guru"); %>

Wyjaśnienie kodu:

Linia kodu 10: Korzystając z obiektu odpowiedzi, wysyłamy błąd do strony z dwoma parametrami.

  1. Kod stanu - może to być dowolny z powyższych. W tym przypadku opisaliśmy jako 404
  2. Wiadomość - może to być dowolna wiadomość, w której chcemy pokazać błąd

Jeśli wykonasz powyższy kod, otrzymasz następujące dane wyjściowe:

Wynik:

Tutaj otrzymujemy kod błędu 404, który został wysłany z kodu, a także wyświetla komunikat „Guru Page not found” widoczny na wyjściu.

Podsumowanie:

  • W tym artykule dowiedzieliśmy się o żądaniu klienta i odpowiedzi serwera, w jaki sposób żądanie jest przechwytywane i jak manipuluje się odpowiedziami.
  • Dowiedzieliśmy się również o kodach stanu HTTP, które pokazują kody błędów lub kody powodzenia dla określonego pliku.