Żą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.

  • 📨 Żądanie klienta: Przeglądarka wysyła dane do serwera w nagłówkach żądania HTTP, odczytywanych za pomocą HttpServletRequest.
  • 🧾 Nagłówki żądań: Akceptuj, Akceptuj język, Połączenie, Plik cookie, Host i Agent użytkownika opisują klienta.
  • 📤 Odpowiedź serwera: HttpServletResponse zwraca wiersz statusu, nagłówki odpowiedzi i dokument.
  • 🔧 Metody reakcji: addHeader(), sendRedirect(), sendError() i setStatus() kształtują odpowiedź.
  • 🔢 Status Codes: Pogrupowane od 100 do 599; popularne grupy to 200, 301, 404 i 500.
  • 🧪 Przykłady: Działające strony JSP odczytują nagłówki, ustawiają interwał odświeżania i wysyłają błąd 404.

Żądanie klienta JSP

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:

  1. Cookie[] getCookies() – zwraca tablicę zawierającą obiekty cookie przesłane przez klienta
  2. Wyliczenie getAttributeNames() – zawiera wyliczenie nazw atrybutów dla żądania
  3. Wyliczenie getHeaderNames() – zawiera wyliczenie nazw nagłówka.
  4. Wyliczenie getParameterNames() – zawiera wyliczenie pobierania nazw parametrów w żądaniu.
  5. HttpSession getSession() – zwraca bieżącą sesję powiązaną z żądaniem lub jeśli nie ma sesji, utworzy nową.
  6. 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.
  7. Obiekt getAttribute (nazwa ciągu) – zwraca wartość nazwanego atrybutu jako obiekt.
  8. ServletInputStream getInputStream() – pobiera treść żądania jako dane binarne.
  9. Łańcuch getAuthType() – zwraca nazwę schematu uwierzytelniania w celu ochrony serwletu
  10. Łańcuch getCharacterEncoding() – zwraca nazwę kodowania znaków użytego w treści żądania.
  11. Łańcuch getContentType() – zwraca typ MIME treści żądania.
  12. Łańcuch getContextPath() – zwraca część żądania URI wskazującą ścieżkę kontekstu URI
  13. String getHeader(Nazwa ciągu) – zwraca nagłówek żądania jako ciąg znaków
  14. Łańcuch getMethod() – zwraca nazwę metody HTTP, taką jak GET, POST
  15. String getParameter (nazwa ciągu) – zwraca parametr żądania jako ciąg znaków.
  16. Ciąg getPathInfo() – zwraca informacje o ścieżce powiązane z URL
  17. Łańcuch getQueryString() – zwraca ciąg zapytania powiązany z żądaniem URL
  18. Łańcuch getServletPath() – zwraca część URLżądania, które wywołuje JSP
  19. 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:

Żądanie klienta JSP

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:

  1. Przekierowanie kodowania ciąguURL(Smyczkowy URL) - koduje URL w przekierowaniuURL Metoda.
  2. Kodowanie ciąguURL(Smyczkowy URL) - koduje URL poprzez uwzględnienie identyfikatora sesji.
  3. Wartość logiczna zawiera nagłówek (nazwa ciągu) – zawiera nagłówek na stronie JSP, czy nie.
  4. Wartość logiczna isCommited() – odpowiedź została popełniona, czy nie.
  5. Void addCookie(Cookie cookie) – dodaje plik cookie do odpowiedzi
  6. Void addDateHeader(Nazwa ciągu, Wartość ciągu) – dodaje nazwę i wartość daty nagłówka odpowiedzi
  7. Void addHeader(Nazwa ciągu, Wartość ciągu) – dodaje nagłówek odpowiedzi z nazwą i wartością
  8. Void addIntHeader(Nazwa ciągu, wartość int) – dodaje nagłówek odpowiedzi z nazwą i wartością całkowitą
  9. Puste spłukiwanieBuffer() - wymusza przesłanie zawartości bufora do klienta.
  10. Unieważnij reset() – czyści dane w buforze.
  11. Pusty resetBuffer - czyści bufor zawartości w odpowiedzi bez czyszczenia kodów statusu.
  12. Void sendError(int sc,String msg) – wysyła do klienta odpowiedź na błąd za pomocą kodu stanu.
  13. Unieważnij sendRedirect (lokalizacja ciągu znaków) – wysyła do klienta tymczasową odpowiedź przekierowania.
  14. Pusty zestawBufferRozmiar (rozmiar całkowity) – ustawia rozmiar bufora ciała
  15. Void setCharacterEncoding (zestaw znaków ciągu) – ustawia kodowanie znaków
  16. Void setContentType (typ ciągu) – ustawia typ treści odpowiedzi
  17. Void setContentLength(int len) – ustawia długość treści odpowiedzi
  18. Puste ustawienieLocale (Locale lcl) – ustawia typ ustawień regionalnych odpowiedzi
  19. 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:

Odpowiedź serwera JSP

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:

  1. 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
  2. Publiczna void sendRedirect(String URL): Generuje odpowiedź 302 wraz z nagłówkiem lokalizacji URL nowego dokumentu
  3. 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.

  1. Kod stanu — może to być dowolny z powyższych. W tym przypadku opisaliśmy jako 404
  2. 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:

Status HTTP JSP Codes

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”.

FAQ

HttpServletRequest przesyła dane wysyłane przez klienta do serwera, takie jak nagłówki i parametry. HttpServletResponse przesyła dane odsyłane z serwera, w tym kody statusu, nagłówki odpowiedzi i zawartość dokumentu.

Kod statusu 404 oznacza, że ​​żądany zasób nie został znaleziony na serwerze. W JSP można go wysłać jawnie za pomocą response.sendError(404, „message”), aby wyświetlić niestandardową stronę informującą o braku zasobu.

Użyj obiektu żądania: getHeaderNames() zwraca wyliczenie nazw nagłówków, a getHeader(name) zwraca wartość każdego nagłówka. Przejrzyj nazwy, aby odczytać każdy nagłówek wysłany przez klienta.

Sztuczna inteligencja może analizować dzienniki nagłówków, oznaczać brakujące lub nieprawidłowo skonfigurowane nagłówki, wykrywać problemy bezpieczeństwa, takie jak brak kontroli pamięci podręcznej, i podsumowywać wzorce ruchu,ping Programiści mogą szybciej debugować i optymalizować obsługę żądań i odpowiedzi.

Tak. Sztuczna inteligencja może generować skrypty JSP, które odczytują parametry i nagłówki żądania, ustawiają nagłówki odpowiedzi i wysyłają kody statusu na podstawie opisu w języku zwykłym, który następnie programiści sprawdzają pod kątem poprawności i bezpieczeństwa.

Podsumuj ten post następująco: