Žádost klienta JSP

⚡ Chytré shrnutí

Požadavky klienta JSP a odpovědi serveru používají prvky akcí JSP k řízení servletového enginu. Prohlížeč odesílá informace prostřednictvím HTTP hlaviček, server vrací stavový řádek a hlavičky a stavové kódy HTTP hlásí výsledek každého požadavku.

  • 📨 Požadavek klienta: Prohlížeč odesílá data na server v hlavičkách HTTP požadavků, které jsou čteny prostřednictvím HttpServletRequest.
  • 🧾 Záhlaví požadavku: Klienta popisují atributy Accept (Přijmout), Accept-language (Jazyk přijetí), Connection (Připojení), Cookie (Soubor cookie), Host (Hostitel) a User-agent (User-agent).
  • 📤 Odezva serveru: HttpServletResponse vrací stavový řádek, záhlaví odpovědi a dokument.
  • 🔧 Metody odezvy: Funkce addHeader(), sendRedirect(), sendError() a setStatus() formují odpověď.
  • 🔢 Status Codes: Seskupeno 100–599; mezi běžné patří 200, 301, 404 a 500.
  • 🧪 Příklady: Fungující stránky JSP čtou hlavičky, nastavují interval aktualizace a odesílají chybu 404.

Žádost klienta JSP

Akce JSP používají konstrukty v syntaxi XML k řízení chování servletového enginu. Dozvíme se podrobněji o různých prvcích akcí JSP, jako jsou požadavky klientů, odpovědi serverů a stavové kódy HTTP.

Žádost klienta JSP

  • Když je webová stránka požadována, odešle informace na webový server v hlavičce HTTP.
  • Tyto informace můžeme použít pomocí objektu HTTPServletRequest.
  • Informace odeslané prohlížečem jsou uloženy v záhlaví požadavku HTTP požadavku.
  • K odesílání informací do objektu požadavku používáme různé hlavičky.

Záhlaví v JSP

Různé hlavičky v JSP jsou popsány níže:

Hlavička Description Příklad
akceptovat Určuje typy MIME, které prohlížeč nebo jiní klienti zvládnou Obrázek/png nebo obrázek/jpeg
Accept-charset K zobrazení informací používá znakovou sadu používanou prohlížečem ISO-8859-1
Accept- Kódování Určuje typ kódování zpracovávaného prohlížečem Gzip nebo komprimujte
Přijímací jazyk Specifikuje klienty zadaný jazyk En, en_us
Povolení Záhlaví používané klienty při pokusu o přístup na webové stránky chráněné heslem
Přípojka Označuje, zda klient dokáže zpracovat trvalá připojení HTTP (prohlížeč může načíst více souborů) Udržet naživu
Obsahová délka Platí pro žádosti o zasílání příspěvků. Udává velikost dat příspěvku v bajtech
sušenka Vrátí soubory cookie na server (ty, které byly dříve odeslány do prohlížeče)
hostitel Určuje hostitele a port originálu URL
Pokud byly od té doby změněny Označuje, že vyžaduje pouze stránku, pokud byla změněna nebo upravena
Pokud od té doby nezměněno Označuje, že vyžaduje stránku pouze v případě, že nebyla změněna nebo upravena
Referrer Označuje URL odkazování URL strana
Uživatelský agent Identifikuje prohlížeč nebo požadavek klienta

Metody záhlaví HTTP v JSP

Ke čtení hlavičky HTTP na stránce JSP se používají následující metody:

  1. Cookie[] getCookies() – vrátí pole obsahující objekty cookie, které klient odeslal
  2. Výčet getAttributeNames() – obsahuje výčet jmen atributů pro požadavek
  3. Výčet getHeaderNames() – obsahuje výčet názvů záhlaví.
  4. Výčet getParameterNames() – obsahuje výčet získání názvů parametrů v požadavku.
  5. HttpSession getSession() – vrátí aktuální relaci spojenou s požadavkem, nebo pokud relaci nemá, vytvoří novou.
  6. Národní prostředí getLocale() – vrátí preferované národní prostředí, ve kterém klient přijme obsah. Bylo přiřazeno k odpovědi. Ve výchozím nastavení bude hodnotou výchozí národní prostředí serveru.
  7. Object getAttribute(název řetězce) – vrátí hodnotu pojmenovaného atributu jako objekt.
  8. ServletInputStream getInputStream() – načte tělo požadavku jako binární data.
  9. Řetězec getAuthType() – vrací název autentizačního schématu pro ochranu servletu
  10. Řetězec getCharacterEncoding() – vrací název kódování znaků použitého v těle požadavku.
  11. String getContentType() – vrací MIME typ těla požadavku.
  12. Řetězec getContextPath() – vrací část požadavku URI označuje kontextovou cestu URI
  13. String getHeader(název řetězce) – vrátí hlavičku požadavku jako řetězec
  14. String getMethod() – vrátí název metody HTTP jako GET, POST
  15. String getParameter(název řetězce) – vrátí parametr požadavku jako řetězec.
  16. Řetězec getPathInfo() – vrací informace o cestě spojené s URL
  17. String getQueryString() – vrací řetězec dotazu, který je přidružen k požadavku URL
  18. Řetězec getServletPath() – vrací část URLpožadavku, který volá JSP
  19. String[] getParameterValues(název řetězce) – vrátí pole objektů typu string obsahující hodnoty, které má parametr požadavku

Příklad:

V níže uvedeném příkladu používáme různé metody pomocí objektu požadavku

<%@ 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>");
    }

%>

Vysvětlení kódu:

Code Řádek 17: Pomocí objektu požadavku získáváme objekt relace této konkrétní relace a získáme hodnotu objektu této relace

Code Řádek 19: Pomocí objektu požadavku získáváme lokalizaci dané relace, tj. lokalizaci en_US pro danou JSP.

Code Řádek 21: Pomocí objektu request získáváme informace o cestě k dané JSP. V tomto případě je hodnota null, protože pro ni neexistuje žádná cesta. URL uvedeno.

Code Řádek 23: Pomocí objektu požadavku získáváme kontextovou cestu, tj. kořenovou cestu

Code Řádek 25: Pomocí objektu požadavku získáváme název serveru.

Code Řádek 27: Pomocí objektu požadavku získáváme port serveru.

Code Řádek 29–35: Pomocí objektu požadavku získáváme názvy hlaviček, které vycházejí jako výčet, a proto dostáváme všechny hodnoty hlaviček v názvech hlaviček.

V tomto získáme všechny hodnoty záhlaví jako a sušenka, hostitel, připojení, přijmout jazyk, přijmout kódování.

Když spustíte výše uvedený kód, získáte následující výstup:

Žádost klienta JSP

Výstup:

Získáváme řadu hodnot, jako je název relace, název národního prostředí, název cesty, název serveru, název portu, hostitel, kontextová cesta a všechny hodnoty záhlaví. JSP.

Odezva serveru JSP

  • Když je požadavek zpracován a poté je z webového serveru vygenerována odpověď. Skládá se ze stavového řádku, záhlaví odpovědí, prázdného řádku a dokumentu.
  • Je to objekt třídy HTTPServletResponse, což je objekt odpovědi.
  • Stavový řádek je verze HTML.

Záhlaví odpovědí v JSP

Záhlaví odpovědí v JSP jsou zmíněna níže:

Hlavička Description
povolit Určuje metody požadavku jako GET, POST, které server požaduje
Ovládání mezipaměti Dokument odpovědi lze uložit do mezipaměti. Může být veřejný, soukromý a bez mezipaměti. Žádná mezipaměť neurčuje, že dokument by neměl být ukládán do mezipaměti
Přípojka Dává pokyn, zda má prohlížeč používat uložená připojení HTTPS nebo ne. Zavřít hodnota znamená, že prohlížeč by neměl používat persistent v HTTPConnections a „keep-alive“ znamená používat trvalá připojení
Obsah-dispozice Zeptat se uživatele, zda uložit odpověď na disk nebo ne
Kódování obsahu Stránka musí být během přenosu zakódována
Obsahová délka Počet bajtů v odpovědi
Typ obsahu Určuje typ MIME odpovědi
Vyprší Určuje, do kdy by měl být obsah považován za zastaralý a neměl by být uložen do mezipaměti
Poslední úprava Označuje, kdy byl dokument naposledy změněn
Aktuální poloha Měl by být součástí všech odpovědí, které mají stavový kód 300 jako stavový kód
Obnovit Určuje, jak najít aktualizovanou stránku.
Opakovat-poté Může být použit s odpovědí 503, aby řekl klientovi, jak brzy může opakovat požadavek
Nastavit soubor cookie Určuje soubor cookie spojený se stránkou

Metody záhlaví odpovědi HTTP v JSP

Níže jsou uvedeny metody v JSP pomocí objektu odpovědi:

  1. Řetězec encodeRedirectURL(Řetězec URL) - kóduje URL v přesměrováníURL metoda.
  2. Kódování řetězcůURL(Řetězec URL) - kóduje URL zahrnutím ID relace.
  3. Boolean obsahujeHeader (název řetězce) – obsahuje záhlaví v JSP nebo ne.
  4. Boolean isCommited() – odpověď byla učiněna nebo ne.
  5. Neplatné addCookie (soubor cookie) – přidá k odpovědi soubor cookie
  6. Void addDateHeader(název řetězce, hodnota řetězce) – přidá datum hlavičky odpovědi, název a hodnotu
  7. Void addHeader(název řetězce, hodnota řetězce) – přidá hlavičku odpovědi s názvem a hodnotou
  8. Void addIntHeader(název řetězce, hodnota int) – přidá hlavičku odpovědi s názvem a celočíselnou hodnotou
  9. Void flushBuffer() - vynutí obsah ve vyrovnávací paměti na výstup klientovi.
  10. Void reset() – vymaže data ve vyrovnávací paměti.
  11. Void resetBuffer - vymaže obsah vyrovnávací paměti v odpovědi bez vymazání stavových kódů.
  12. Void sendError(int sc,String msg) – odešle klientovi chybovou odpověď pomocí stavového kódu.
  13. Void sendRedirect (umístění řetězce) – odešle klientovi dočasnou odpověď přesměrování.
  14. Prázdná sadaBufferVelikost (int size) – nastavuje velikost vyrovnávací paměti těla
  15. Void setCharacterEncoding (znaková sada řetězce) – nastavuje kódování znaků
  16. Void setContentType (typ řetězce) – nastavuje typ obsahu odpovědi
  17. Neplatné nastaveníDélkyObsahu(int len) – nastavuje délku obsahu odpovědi
  18. Void setLocale(Locale lcl) – nastavuje typ národního prostředí odpovědi
  19. Neplatné nastaveníStatus(int sc) – nastavuje stavový kód odpovědi

Příklad:

V tomto příkladu se zabýváme různými metodami getLocale, flushbuffer, getWriter, getContentType, setIntHeader.

<%@ 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>

Vysvětlení kódu:

Code Řádek 13: Pomocí objektu odpovědi získáme objekt národního prostředí této relace JSP

Code Řádek 15: Pomocí objektu odpovědi se flushbuffer používá k vynucení obsahu vyrovnávací paměti do klienta

Code Řádek 16: Pomocí objektu odpovědi získáme objekt Writer, který dostane výstup ve výstupním proudu

Code Řádek 18: Pomocí objektu odpovědi získáme typ obsahu, tj. typ MIME objektu odpovědi

Code Řádek 21: Pomocí objektu odezvy se používá k automatickému načítání každých 5 sekund, protože 5 je nastaveno jako druhý parametr

Když spustíte výše uvedený kód, získáte následující výstup:

Odezva serveru JSP

Výstup:

  • Zde získáme výstup, protože je to z objektu writer z příkazu getWriter, což nám dává objekt a my ho můžeme vypsat do výstupního streamu.
  • Dostaneme národní prostředí jako en_us a typ obsahu jako text/html
  • Získáme znakovou sadu jako ISO 8859
  • Dnešní datum jako aktuální datum.

Stav HTTP JSP Codes

  • Když je požadavek zpracován, je vygenerována odpověď. Stavový řádek odpovědi se skládá z verze HTTP, stavového kódu a související zprávy.
  • Zpráva je přímo spojena se stavovým kódem a verzí HTTP a je určena serverem.
  • Ve výchozím nastavení je v JSP nastaveno 200 jako stavový kód, takže je nemusíme nastavovat explicitně.
  • Můžeme nastavit jako metodu response.setStatus().

Kódy spadají do následujících 5 kategorií:

  • 100-199 – Zde klient uvádí, že by měl reagovat nějakou akcí
  • 200-299 – Znamená, že požadavek byl úspěšný
  • 300-399 – Používají se pro soubory, které byly přesunuty a obvykle obsahují hlavičku umístění označující novou adresu
  • 400-499 – Označuje chybu klienta
  • 500-599 – Označuje chybu serveru

Některé běžné stavové kódy jsou uvedeny níže:

  • 200 – Označuje, že je vše v pořádku
  • 301 – Trvale se přestěhoval
  • 304 – Nezměněno od poslední změny
  • 400 – špatný požadavek
  • 404 nenalezeno
  • 405 – Metoda nenalezena
  • 500 – Interní chyba serveru
  • 503 služba nedostupná
  • 505 – verze HTTP není podporována

Stav HTTP Code Metody v JSP

Některé z metod stavového kódu v JSP jsou uvedeny níže:

  1. Veřejné void setStatus(int statusCode): Nastaví stavový kód podle toho, co chceme nastavit na této stránce JSP. To nám dá zprávu o nastaveném stavovém kódu
  2. Veřejné void sendRedirect(String URL): Generuje odpověď 302 spolu se záhlavím s uvedením polohy. URL nového dokumentu
  3. Veřejná chyba sendError(int kód, řetězec zpráv): Odešle stavový kód spolu s krátkou zprávou a je naformátován v dokumentu HTML.

Příklad:

V tomto příkladu explicitně posíláme chybu na stránku 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>

Vysvětlení kódu:

Code Řádek 10: Pomocí objektu odpovědi posíláme chybu na stránku se dvěma parametry.

  1. Stavový kód – Může to být kterýkoli z výše uvedených. V tomto případě jsme popsali jako 404
  2. Zpráva – Může to být jakákoli konkrétní zpráva, kterou chceme zobrazit chybu

Pokud provedete výše uvedený kód, získáte následující výstup:

Stav HTTP JSP Codes

Výstup:

Zde se nám zobrazí chybový kód 404, který byl odeslán z kódu a také se zobrazí „Guru Ve výstupu se zobrazuje zpráva „Stránka nenalezena“.

Nejčastější dotazy

HttpServletRequest přenáší data odeslaná klientem na server, jako jsou záhlaví a parametry. HttpServletResponse přenáší data odeslaná zpět ze serveru, včetně stavových kódů, záhlaví odpovědí a obsahu dokumentu.

Stavový kód 404 znamená, že požadovaný zdroj nebyl na serveru nalezen. V JSP jej můžete explicitně odeslat pomocí response.sendError(404, „message“) a zobrazit tak vlastní stránku s hlášením „nenalezen“.

Použijte objekt požadavku: getHeaderNames() vrací výčet názvů hlaviček a getHeader(name) vrací hodnotu každé hlavičky. Iterujte přes názvy, abyste si přečetli každou hlavičku odeslanou klientem.

Umělá inteligence dokáže analyzovat protokoly hlaviček, označovat chybějící nebo nesprávně nakonfigurované hlavičky, detekovat bezpečnostní problémy, jako je například chybějící kontrola mezipaměti, a sumarizovat vzorce provozu, help...ping vývojáři ladí a optimalizují zpracování požadavků a odpovědí rychleji.

Ano. Umělá inteligence dokáže generovat JSP skripty, které čtou parametry a hlavičky požadavků, nastavují hlavičky odpovědí a odesílají stavové kódy z popisu v jednoduchém jazyce, který pak vývojáři kontrolují z hlediska správnosti a bezpečnosti.

Shrňte tento příspěvek takto: