Akce JSP, které používají konstrukty v syntaxi XML k řízení chování servletového motoru. Dozvíme se podrobněji o různých prvcích akce JSP, jako je požadavek klienta, odpověď serveru, stavové kódy HTTP.
V tomto výukovém programu se naučíte
- Žádost klienta JSP
- Odpověď serveru JSP
- Stavové kódy HTTP JSP
Žá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 požadavku HTTP.
- K odesílání informací do objektu požadavku používáme různé záhlaví.
Níže jsou popsány různé záhlaví:
Záhlaví | Popis | Příklad |
Přijmout | Určuje typy MIME, které může prohlížeč nebo jiný klient zpracovat | Obrázek / png nebo obrázek / jpeg.webp |
Přijmout znakovou sadu | K zobrazení informací používá znakovou sadu používanou prohlížečem | ISO-8859-1 |
Přijmout - kódování | Určuje typ kódování zpracovaný prohlížečem | Gzip nebo komprimovat |
Přijmout jazyk | Určuje zadaný jazyk klienta | En, en_us |
Oprávnění | Záhlaví používané klienty při pokusu o přístup na webové stránky chráněné heslem | |
Spojení | Označuje, zda klient zvládne trvalé připojení HTTP (prohlížeč může načíst více souborů) | Udržet naživu |
Délka obsahu | Platí pro odesílání žádostí. Poskytuje velikost post dat bajtů | |
Cookie | Vrátí 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 bude od té doby změněno | 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 pokud nebyla změněna nebo upravena | |
Doporučující | Označuje URL odkazující stránky URL | |
Uživatelský agent | Identifikuje požadavek prohlížeče nebo klienta | |
Ke čtení hlavičky HTTP na stránce JSP se používají následující metody:
- Cookie [] getCookies () - vrací pole obsahující objekty cookie, které klient poslal
- Výčet getAttributeNames () - obsahuje výčet názvů atributů pro požadavek
- Výčet getHeaderNames () - obsahuje výčet názvů záhlaví.
- Výčet getParameterNames () - obsahuje výčet získání názvů parametrů v požadavku.
- HttpSessiongetSession () - vrátí aktuální relaci spojenou s požadavkem, nebo pokud relaci nemá, vytvoří novou.
- Locale getLocale () - vrátí upřednostňované 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.
- Objekt getAttribute (název řetězce) - vrací hodnotu pojmenovaného atributu jako objektu.
- ServletInputStreamgetInputStream () - načte osobu požadavku jako binární data.
- String getAuthType () - vrátí název schématu ověřování k ochraně servletu
- String getCharacterEncoding () - vrací název kódování znaků použitého v těle požadavku.
- String getContentType () - vrátí MIME typ těla požadavku.
- String getContextPath () - vrací část požadavku URI označuje kontextovou cestu URI
- String getHeader (název řetězce) - vrací záhlaví požadavku jako řetězec
- String getMethod () - vrátí název metody HTTP jako GET, POST
- String getParameter (název řetězce) - vrátí parametr požadavku jako řetězec.
- String getPathInfo () - vrací informace o cestě spojené s adresou URL
- String getQueryString () - vrátí řetězec dotazu, který je přidružen k adrese URL požadavku
- String getServletPath () - vrací část adres URL požadavku, která volá JSP
- String [] getParameterValues (název řetězce) - vrací pole řetězcových objektů obsahující hodnoty, které má parametr požadavku
Příklad:
V níže uvedeném příkladu používáme různé metody využívající objekt požadavku
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%><% @ page import = "java.io. * java.util. *"%> Požadavek klienta Guru JSP
Požadavek klienta Guru JSP
záhlaví guru | hodnota záhlaví guru |
<%HttpSession guruession = request.getSession ();out.print ("
Název relace je | " + guruession + " td.>
|
");Národní gurulocale = request.getLocale ();out.print ("
Název národního prostředí je | " + gurulocale + " |
");Řetězcová cesta = request.getPathInfo ();out.print ("
Název cesty je | " + cesta + " |
");Řetězec lpath = request.get ();out.print ("
Kontextová cesta je | " + lipath + " |
");Řetězec název_serveru = request.getServerName ();out.print ("
Název serveru je | " + název serveru + " |
");int portname = request.getServerPort ();out.print ("
Port serveru je | " + portname + " |
");Výčet hnames = request.getHeaderNames ();while (hnames.hasMoreElements ()) {Řetězec paramName = (řetězec) hnames.nextElement ();out.print ("
" + paramName + " | ");Řetězec paramValue = request.getHeader (paramName);out.println ("" + paramValue + " |
");}%>
Vysvětlení kódu:
Řádek kódu 17: Pomocí objektu požadavku získáváme objekt relace konkrétní relace a získáváme hodnotu objektu dané relace
Řádek kódu 19: Pomocí objektu požadavku získáváme národní prostředí dané relace i.een_US národní prostředí pro daný JSP.
Řádek kódu 21: 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 k URL.
Řádek kódu 23: Pomocí objektu požadavku získáváme kontextovou cestu, tj. Kořenovou cestu
Řádek kódu 25: Pomocí objektu požadavku získáváme název serveru.
Řádek kódu 27: Pomocí objektu požadavku získáváme port serveru.
Řádek kódu 29-35: Pomocí objektu požadavku získáváme názvy záhlaví, které vycházejí jako výčet, a proto dostáváme všechny hodnoty záhlaví v názvech záhlaví.
V tomto získáme všechny hodnoty záhlaví jako cookie, hostitel, připojení, přijímáme jazyk, přijímáme kódování.
Když spustíte výše uvedený kód, získáte následující výstup:
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, hostitele, kontextové cesty a všechny hodnoty záhlaví tohoto JSP.
Odpověď serveru JSP
- Když je požadavek zpracován a poté je odpověď vygenerována z webového serveru. Skládá se ze stavového řádku, hlaviček odpovědí, prázdného řádku a dokumentu.
- Je to objekt HTTPServletResponseclass, což je objekt odpovědi.
- Stavový řádek je verzí HTML.
Záhlaví odpovědí jsou uvedena níže:
Záhlaví | Popis |
Dovolit | Určuje metody požadavků, jako je GET, POST, které server požaduje |
Řízení mezipaměti | Dokument odpovědi lze uložit do mezipaměti. Může to být veřejná, soukromá a žádná mezipaměť. Žádná mezipaměť neurčuje, že by dokument neměl být ukládán do mezipaměti |
Spojení | Dává pokyny, zda má prohlížeč používat uloženéHTTPConnections nebo ne. Blízká hodnota znamená, že prohlížeč by neměl používat trvalé připojení HTTP a „keep-alive“ znamená použití trvalého připojení |
Dispozice obsahu | Zeptat se uživatele, zda má uložit odpověď na disk nebo ne |
Kódování obsahu | Stránka musí být během přenosu kódována |
Délka obsahu | Počet bajtů v odpovědi |
Typ obsahu | Určuje typ odpovědi MIME |
Vyprší | Určuje, do kdy by měl být obsah považován za zastaralý a neměl by být ukládán do mezipaměti |
Naposledy změněno | Udává, kdy byl dokument naposledy upraven |
Umístění | Mělo by být součástí všech odpovědí, které mají stavový kód, který má 300 jako stavový kód |
Obnovit | Určuje, jak najít aktualizovanou stránku. |
Zkuste to znovu | Lze jej použít s odpovědí 503 a informovat klienta o tom, jak brzy může požadavek opakovat |
Set-cookie | Určuje soubor cookie přidružený ke stránce |
Následují metody využívající objekt odpovědi:
- String encodeRedirectURL (String URL) - kóduje URL v metodě redirectURL.
- String encodeURL (String URL) - kóduje adresu URL včetně ID relace.
- Boolean containsHeader (název řetězce) - obsahuje záhlaví v JSP nebo ne.
- Boolean isCommited () - odpověď byla spáchána nebo ne.
- Void addCookie (cookie cookie) - přidá do odpovědi cookie
- Void addDateHeader (název řetězce, hodnota řetězce) - přidá název a hodnotu záhlaví odpovědi
- Void addHeader (název řetězce, hodnota řetězce) - přidá záhlaví odpovědi se jménem a hodnotou
- Void addIntHeader (String name, int value) - přidá záhlaví odpovědi s názvem a celočíselnou hodnotou
- Void flushBuffer () - vynutí obsah ve vyrovnávací paměti na výstup do klienta.
- Void reset () - vymaže data ve vyrovnávací paměti.
- Void resetBuffer - vymaže vyrovnávací paměť obsahu v odpovědi bez vymazání stavových kódů.
- Void sendError (intsc, Stringmsg) - odešle chybovou odpověď klientovi pomocí stavového kódu.
- Void sendRedirect (String location) - odešle klientovi dočasnou odpověď přesměrování.
- Void setBufferSize (int size) - nastaví velikost vyrovnávací paměti těla
- Void setCharacterEncoding (String charset) - nastavuje kódování znaků
- Void setContentType (String type) - nastaví typ obsahu odpovědi
- Void setContentLength (intlen) - nastaví délku obsahu odpovědi
- Void setLocale (Locale lcl) - nastaví typ národního prostředí odpovědi
- 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. *"%> Guru Action Response
Odpověď guru
<%Národní prostředí lcl = response.getLocale ();out.println ("Národní prostředí je: + lcl + "\ n");response.flushBuffer ();Výstup PrintWriter = response.getWriter ();output.println ("Toto je z objektu zapisovače");Typ řetězce = response.getContentType ();out.println ("Typ obsahu: + typ + "\ n");// Nastavit aktualizaci, čas automatického načítání na 5 sekundresponse.setIntHeader ("Obnovit", 5);// Získejte aktuální časDatum dt = nové Datum ();out.println ("Dnešní datum je: + dt.toString () + "\ n");%>
Vysvětlení kódu:
Řádek kódu 13: Pomocí objektu odpovědi získáme národní objekt této relace JSP
Řádek kódu 15: Pomocí objektu odpovědi se flushbuffer používá k vynucení obsahu vyrovnávací paměti do klienta
Řádek kódu 16: Pomocí objektu odpovědi získáme objekt zapisovače, který získá výstup ve výstupním proudu
Řádek kódu 18: Pomocí objektu odpovědi získáme typ obsahu, tj. Typ MIME objektu odpovědi
Řádek kódu 21: Pomocí objektu odpovědi se používá k automatickému načítání každých 5 sekund, protože 5 je nastaven jako druhý parametr
Když spustíte výše uvedený kód, získáte následující výstup:
Výstup:
- Zde získáme výstup, protože jde o objekt zapisovače z getWriter, který nám dává objekt a můžeme výstup ve výstupním proudu.
- Získáme národní prostředí jako en_us a typ obsahu jako text / html
- Charset dostaneme 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ěď. Řádek stavu odpovědi se skládá z verze HTTP, stavového kódu a přidružené zprávy.
- Zpráva je přímo spojena se stavovým kódem a verzí protokolu HTTP a je určena serverem.
- Ve výchozím nastavení je 200 nastaven jako stavový kód v JSP, takže 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 naznačuje, že by měl reagovat nějakou akcí
- 200-299 - Znamená to, že požadavek je úspěšný
- 300–399 - Používají se pro soubory, které byly přesunuty, a obvykle obsahují záhlaví umístění označující novou adresu
- 400-499 - označuje chybu klienta
- 500-599 - označuje chybu serverem
Níže jsou uvedeny některé běžné stavové kódy:
- 200 - Označuje, že je vše v pořádku
- 301 - Trvale se přesunul
- 304 - od poslední změny nezměněno
- 400 - Špatný požadavek
- 404 nenalezeno
- 405 - Metoda nebyla nalezena
- 500 - Interní chyba serveru
- 503 služba nedostupná
- 505 - Verze HTTP není podporována
Některé z jeho metod jsou uvedeny níže:
- Public void setStatus (intstatusCode)
Nastaví stavový kód podle toho, co chceme na dané stránce JSP nastavit. To nám dá zprávu o stavovém kódu, který byl nastaven
- Public void sendRedirect (řetězec URL)
Generuje odpověď 302 spolu s hlavičkou umístění poskytující URL nového dokumentu
- Public void sendError (intcode, Stringmsg)
Odešle stavový kód spolu s krátkou zprávou a je naformátován uvnitř dokumentu HTML.
Příklad:
V tomto příkladu zasíláme chybu na stránku JSP výslovně.
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%> Guru Status Code <% response.sendError (404, "Stránka guru nenalezena"); %>