Žádost klienta JSP

Akce JSP, které používají konstrukce v syntaxi XML k řízení chování servletového enginu. Dozvíme se podrobněji o různých prvcích akcí JSP, jako je požadavek klienta, odpověď serveru, 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 původní adresy 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 odkazující URL stránky  
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 jmen hlavičky .
  4. Výčet getParameterNames() – obsahuje výčet získání názvů parametrů v požadavku.
  5. HttpSessiongetSession() – 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. ServletInputStreamgetInputStream() – 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() – vrátí informace o cestě spojené s URL
  17. String getQueryString() – vrátí řetězec dotazu, který je přidružen k adrese URL požadavku
  18. Řetězec getServletPath() – vrátí část adres URL pož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:

17. řádek kódu: Pomocí objektu požadavku získáváme objekt relace této konkrétní relace a získáme hodnotu objektu této relace

19. řádek kódu: Pomocí objektu požadavku získáváme národní prostředí této konkrétní relace i.een_US locale pro daný JSP.

21. řádek kódu: Pomocí objektu požadavku získáváme informace o cestě pro tento JSP. V tomto případě je null, protože není uvedena žádná cesta pro URL.

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

25. řádek kódu: Pomocí objektu požadavku získáváme název serveru.

27. řádek kódu: Pomocí objektu požadavku získáváme port serveru.

Řádek 29–35 kódu: 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 HTTPServletResponseclass, 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
Lokalita 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. String encodeRedirectURL(String URL) – zakóduje adresu URL v metodě redirectURL.
  2. String encodeURL(String URL) – zakóduje adresu 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. Void addCookie (Cookie cookie) – přidá cookie do odpovědi
  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(intsc,Stringmsg) – 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. Void setContentLength(intlen) – nastavuje délku obsahu odpovědi
  18. Void setLocale(Locale lcl) – nastavuje typ národního prostředí odpovědi
  19. Void setStatus(intsc) – nastavuje stavový kód odpovědi

Příklad:

V tomto příkladu pokrýváme různé 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.*" %>
<!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:

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

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

16. řádek kódu: Pomocí objektu odpovědi získáme objekt Writer, který dostane výstup ve výstupním proudu

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

21. řádek kódu: 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 getWriter, který nám poskytne objekt a můžeme jej vytisknout ve výstupním proudu.
  • 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.

Stavové kódy HTTP JSP

  • 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

Metody stavového kódu HTTP v JSP

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

  1. Public void setStatus(intstatusCode): 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. Public void sendRedirect (String URL): Vygeneruje odpověď 302 spolu s hlavičkou umístění s URL nového dokumentu
  3. Public void sendError(intcode,Stringmsg): 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:

10. řádek kódu: 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:

Stavové kódy HTTP JSP

Výstup:

Zde dostaneme chybový kód jako 404, který byl odeslán z kódu a také zobrazí zprávu „Guru Page not found“ zobrazenou ve výstupu.

Shrnutí

  • V tomto článku jsme se dozvěděli o požadavku klienta a odpovědi serveru o tom, jak je požadavek zachycen a jak se s odpověďmi manipuluje.
  • akce JSP které používají konstrukce v syntaxi XML k řízení chování servletového enginu.
  • Když je webová stránka požadována, odešle informace na webový server v hlavičce HTTP.
  • 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.
  • 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.