Żądanie klienta JSP
⚡ Inteligentne podsumowanie
Żądanie klienta JSP i odpowiedź serwera wykorzystują elementy akcji JSP do sterowania silnikiem serwletów. Przeglądarka wysyła informacje za pośrednictwem nagłówków HTTP, serwer zwraca wiersz stanu i nagłówki, a kody stanu HTTP raportują wynik każdego żądania.

Akcje JSP wykorzystują konstrukcje w składni XML do sterowania działaniem silnika serwletów. Dowiemy się więcej o różnych elementach akcji JSP, takich jak żądanie klienta, odpowiedź serwera i kody stanu HTTP.
Żądanie klienta JSP
- Gdy strona internetowa jest żądana, wysyła informacje do serwera internetowego 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.
- Do wysyłania informacji do obiektu żądania używamy różnych nagłówków.
Nagłówki w JSP
Poniżej opisano różne nagłówki w formacie JSP:
| Nagłówek | OPIS | Przykład |
|---|---|---|
| Akceptuj | Określa typy MIME obsługiwane przez przeglądarkę lub innych klientów | Obraz/png lub obraz/jpeg |
| Zaakceptuj zestaw znaków | Do wyświetlania informacji wykorzystuje zestaw znaków używany przez przeglądarkę | ISO-8859-1 |
| Zaakceptuj - kodowanie | Określa typ kodowania obsługiwany przez przeglądarkę | Gzip lub skompresuj |
| Zaakceptuj-język | Określa język określony przez klienta | En,en_nas |
| Autoryzacja | Nagłówek używany przez klientów podczas próby uzyskania dostępu do stron internetowych chronionych hasłem | |
| Przyłącze | 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ę. Podaje rozmiar danych pocztowych w bajtach | |
| Cookies | Zwraca pliki cookie na serwer (te, które zostały wcześniej wysłane do przeglądarki) | |
| Gospodarz | Określa hosta i port oryginału URL | |
| Jeśli zmodyfikowano od | Wskazuje, że wymaga tylko strony, jeśli została zmieniona lub zmodyfikowana | |
| Jeśli od tego czasu nie zostało zmodyfikowane | Wskazuje, że wymaga strony tylko wtedy, gdy nie została zmieniona lub zmodyfikowana | |
| Polecający | Wskazuje URL odnosząc się URL strona | |
| Agent użytkownika | Identyfikuje żądanie przeglądarki lub klienta |
Metody nagłówka HTTP w JSP
Do odczytu nagłówka HTTP na stronie JSP używane są następujące metody:
- Cookie[] getCookies() – zwraca tablicę zawierającą obiekty cookie przesłane przez klienta
- Wyliczenie getAttributeNames() – zawiera wyliczenie nazw atrybutów dla żądania
- Wyliczenie getHeaderNames() – zawiera wyliczenie nazw nagłówka.
- Wyliczenie getParameterNames() – zawiera wyliczenie pobierania nazw parametrów w żądaniu.
- HttpSession getSession() – zwraca bieżącą sesję powiązaną z żądaniem lub jeśli nie ma sesji, utworzy nową.
- Ustawienia regionalne getLocale() – zwraca preferowaną lokalizację, w której klient zaakceptuje treść. Została ona przypisana do odpowiedzi. Domyślnie wartością będzie domyślna lokalizacja serwera.
- Obiekt getAttribute (nazwa ciągu) – zwraca wartość nazwanego atrybutu jako obiekt.
- ServletInputStream getInputStream() – pobiera treść żądania jako dane binarne.
- Łańcuch getAuthType() – zwraca nazwę schematu uwierzytelniania w celu ochrony serwletu
- Łańcuch getCharacterEncoding() – zwraca nazwę kodowania znaków użytego w treści żądania.
- Łańcuch getContentType() – zwraca typ MIME treści żądania.
- Łańcuch getContextPath() – zwraca część żądania URI wskazującą ścieżkę kontekstu URI
- String getHeader(Nazwa ciągu) – zwraca nagłówek żądania jako ciąg znaków
- Łańcuch getMethod() – zwraca nazwę metody HTTP, taką jak GET, POST
- String getParameter (nazwa ciągu) – zwraca parametr żądania jako ciąg znaków.
- Ciąg getPathInfo() – zwraca informacje o ścieżce powiązane z URL
- Łańcuch getQueryString() – zwraca ciąg zapytania powiązany z żądaniem URL
- Łańcuch getServletPath() – zwraca część URLżądania, które wywołuje JSP
- String[] getParameterValues(Nazwa ciągu) – zwraca tablicę obiektów łańcuchowych zawierających wartości parametru request
Przykład:
W poniższym przykładzie używamy różnych metod wykorzystujących obiekt żądania
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import="java.io.* java.util.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Client Request Guru JSP</title> </head> <body> <h2>Client Request Guru JSP</h2> <table border="1"> <tr> <th>guru header</th><th>guru header Value(s)</th> </tr> <% HttpSession gurusession = request.getSession(); out.print("<tr><td>Session Name is </td><td>" +gurusession+ "</td.></tr>"); Locale gurulocale = request.getLocale (); out.print("<tr><td>Locale Name is</td><td>" +gurulocale + "</td></tr>"); String path = request.getPathInfo(); out.print("<tr><td>Path Name is</td><td>" +path+ "</td></tr>"); String lpath = request.get(); out.print("<tr><td>Context path is</td><td>" +lipath + "</td></tr>"); String servername = request.getServerName(); out.print("<tr><td>Server Name is </td><td>" +servername+ "</td></tr>"); int portname = request.getServerPort(); out.print("<tr><td>Server Port is </td><td>" +portname+ "</td></tr>"); Enumeration hnames = request.getHeaderNames(); while(hnames.hasMoreElements()) { String paramName = (String)hnames.nextElement(); out.print ("<tr><td>" + paramName + "</td>" ); String paramValue = request.getHeader(paramName); out.println("<td> " + paramValue + "</td></tr>"); } %>
Wyjaśnienie kodu:
Code Linia 17: Używając obiektu żądania, otrzymujemy obiekt sesji tej konkretnej sesji i wartość obiektu tej sesji
Code Linia 19: Za pomocą obiektu żądania pobieramy ustawienia regionalne danej sesji, np. ustawienia regionalne en_US dla danej strony JSP.
Code Linia 21: Używając obiektu żądania, pobieramy informacje o ścieżce dla tego JSP. W tym przypadku jest to wartość null, ponieważ nie ma ścieżki dla URL wzmiankowany.
Code Linia 23: Wykorzystując obiekt żądania, uzyskujemy ścieżkę kontekstu, czyli ścieżkę roota
Code Linia 25: Korzystając z obiektu żądania, uzyskujemy nazwę serwera.
Code Linia 27: Korzystając z obiektu żądania, uzyskujemy port serwera.
Code Linia 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 a Cookies , host, połączenie, zaakceptuj język, zaakceptuj kodowanie.
Po wykonaniu powyższego kodu otrzymasz następujący wynik:
Wyjście:
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łówka JSP.
Odpowiedź serwera JSP
- Kiedy żądanie jest przetwarzane, a następnie generowana jest odpowiedź z serwera WWW. Składa się z linii statusu, nagłówków odpowiedzi, pustej linii i dokumentu.
- Jest to obiekt klasy HTTPServletResponse, który jest obiektem odpowiedzi.
- Linia stanu jest wersją HTML.
Nagłówki odpowiedzi w JSP
Nagłówki odpowiedzi w JSP są wymienione poniżej:
| 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 zapisać w pamięci podręcznej. Może być publiczny, prywatny i nie zawierać pamięci podręcznej. Brak pamięci podręcznej określa, że dokument nie powinien być buforowany |
| Przyłącze | Instruuje, czy przeglądarka powinna używać zapisanych połączeń HTTP, czy nie. Wartość Close oznacza, że przeglądarka nie powinna używać trwałych połączeń HTTP, a „utrzymanie aktywności” oznacza używanie trwałych połączeń |
| Dyspozycja treści | Aby zapytać użytkownika, czy zapisać odpowiedź na dysku, czy nie |
| Kodowanie treści | Strona musi zostać 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 treść powinna być uważana za nieaktualną i nie powinna być buforowana |
| Ostatnia modyfikacja | Wskazuje, kiedy dokument był ostatnio modyfikowany |
| Lokalizacja | Należy go dołączyć do wszystkich odpowiedzi, których kod statusu ma wartość 300 |
| Odśwież kod | Określa, jak znaleźć zaktualizowaną stronę. |
| Ponów próbę po | Można go użyć z odpowiedzią 503, aby poinformować klienta, jak szybko może powtórzyć żądanie |
| Ustaw plik cookie | Określa plik cookie powiązany ze stroną |
Metody nagłówka odpowiedzi HTTP w JSP
Poniżej przedstawiono metody w JSP wykorzystujące obiekt odpowiedzi:
- Przekierowanie kodowania ciąguURL(Smyczkowy URL) - koduje URL w przekierowaniuURL Metoda.
- Kodowanie ciąguURL(Smyczkowy URL) - koduje URL poprzez uwzględnienie identyfikatora sesji.
- Wartość logiczna zawiera nagłówek (nazwa ciągu) – zawiera nagłówek na stronie JSP, czy nie.
- Wartość logiczna isCommited() – odpowiedź została popełniona, czy nie.
- Void addCookie(Cookie cookie) – dodaje plik cookie do odpowiedzi
- Void addDateHeader(Nazwa ciągu, Wartość ciągu) – dodaje nazwę i wartość daty nagłówka odpowiedzi
- Void addHeader(Nazwa ciągu, Wartość ciągu) – dodaje nagłówek odpowiedzi z nazwą i wartością
- Void addIntHeader(Nazwa ciągu, wartość int) – dodaje nagłówek odpowiedzi z nazwą i wartością całkowitą
- Puste spłukiwanieBuffer() - wymusza przesłanie zawartości bufora do klienta.
- Unieważnij reset() – czyści dane w buforze.
- Pusty resetBuffer - czyści bufor zawartości w odpowiedzi bez czyszczenia kodów statusu.
- Void sendError(int sc,String msg) – wysyła do klienta odpowiedź na błąd za pomocą kodu stanu.
- Unieważnij sendRedirect (lokalizacja ciągu znaków) – wysyła do klienta tymczasową odpowiedź przekierowania.
- Pusty zestawBufferRozmiar (rozmiar całkowity) – ustawia rozmiar bufora ciała
- Void setCharacterEncoding (zestaw znaków ciągu) – ustawia kodowanie znaków
- Void setContentType (typ ciągu) – ustawia typ treści odpowiedzi
- Void setContentLength(int len) – ustawia długość treści odpowiedzi
- Puste ustawienieLocale (Locale lcl) – ustawia typ ustawień regionalnych odpowiedzi
- Pusty setStatus(int sc) – ustawia kod stanu odpowiedzi
Przykład:
W tym przykładzie omówimy różne metody getLocale, flushbuffer, getWriter, pobierzTypTreści, ustawNagłówekInt.
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> <%@ page import="java.io.* java.util.*" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Action Response</title> </head> <body> <center> <h2>Guru Response</h2> <% Locale lcl = response.getLocale(); out.println("Locale is : " + lcl + "\n"); response.flushBuffer(); PrintWriter output = response.getWriter(); output.println("This is from writer object"); String type = response.getContentType(); out.println("The content type : " + type + "\n"); // Set refresh,autoload time as 5 seconds response.setIntHeader("Refresh", 5); //Get current time Date dt = new Date(); out.println("Today's date is : " +dt.toString() + "\n"); %> </center> </body> </html>
Wyjaśnienie kodu:
Code Linia 13: Używając obiektu odpowiedzi, otrzymujemy obiekt ustawień regionalnych tej sesji JSP
Code Linia 15: Używając obiektu odpowiedzi, flushbuffer jest używany do wymuszania zawartości bufora w kliencie
Code Linia 16: Używając obiektu odpowiedzi, otrzymujemy obiekt piszący, który otrzymuje dane wyjściowe w strumieniu wyjściowym
Code Linia 18: Korzystając z obiektu odpowiedzi, otrzymujemy typ zawartości, czyli obiekt odpowiedzi typu MIME
Code Linia 21: Używając obiektu odpowiedzi, jest on używany do automatycznego ładowania co 5 sekund, ponieważ jako drugi parametr ustawiono 5
Po wykonaniu powyższego kodu otrzymasz następujący wynik:
Wyjście:
- Tutaj otrzymujemy dane wyjściowe, ponieważ pochodzą one z obiektu Writer z GetWriter, co daje nam obiekt, który możemy wyprowadzić do strumienia wyjściowego.
- Otrzymujemy ustawienia regionalne jako en_us i typ zawartości jako tekst/html
- Otrzymujemy zestaw znaków jako ISO 8859
- Dzisiejsza data jako data bieżąca.
Status HTTP JSP Codes
- Po przetworzeniu żądania generowana jest odpowiedź. Wiersz stanu odpowiedzi składa się z wersji HTTP, kodu stanu i powiązanego komunikatu.
- Wiadomość jest bezpośrednio powiązana z kodem statusu i wersją HTTP i jest ustalana przez serwer.
- Domyślnie 200 jest ustawione jako kod stanu w JSP, więc nie musimy ustawiać jawnie.
- Możemy ustawić jako metodę respond.setStatus().
Kody dzielą się na następujące 5 kategorii:
- 100-199 – Tutaj klient wskazuje, że powinien odpowiedzieć jakąś akcją
- 200-299 – oznacza, że żądanie zakończyło się sukcesem
- 300-399 – są używane do plików, które zostały przeniesione i zazwyczaj zawierają nagłówek lokalizacji wskazujący nowy adres
- 400-499 – wskazuje błąd klienta
- 500-599 – wskazuje błąd serwera
Poniżej znajdują się niektóre z typowych kodów stanu:
- 200 – wskazuje, że wszystko jest w porządku
- 301 – Został przeniesiony 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
Stan HTTP Code Metody w JSP
Poniżej wymieniono niektóre metody kodów stanu w JSP:
- Publiczna void setStatus(int statusCode): Ustawia kod statusu, który chcemy ustawić na tej stronie JSP. Spowoduje to wyświetlenie komunikatu o kodzie statusu, który został ustawiony
- Publiczna void sendRedirect(String URL): Generuje odpowiedź 302 wraz z nagłówkiem lokalizacji URL nowego dokumentu
- Publiczna void sendError(int code,String msg): Wysyła kod statusu wraz z krótką wiadomością i jest on formatowany 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"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Guru Status Code</title> </head> <body> <% response.sendError(404,"Guru Page Not Found"); %> </body> </html>
Wyjaśnienie kodu:
Code Linia 10: Używając obiektu odpowiedzi wysyłamy błąd do strony z dwoma parametrami.
- Kod stanu — może to być dowolny z powyższych. W tym przypadku opisaliśmy jako 404
- Komunikat – może to być dowolny konkretny komunikat, w którym chcemy pokazać błąd
Jeśli wykonasz powyższy kod, otrzymasz następujący wynik:
Wyjście:
Tutaj otrzymujemy kod błędu 404, który został wysłany z kodu i wyświetla również „Guru Na wyjściu wyświetla się komunikat „Strona nie została znaleziona”.



