Akcie JSP, ktoré používajú konštrukcie v syntaxi XML na riadenie správania servletového motora. Dozvieme sa podrobnejšie rôzne prvky JSP Action, ako je požiadavka klienta, odpoveď servera, stavové kódy HTTP.
V tomto návode sa naučíte
Žiadosť klienta JSP
Odpoveď servera JSP
Stavové kódy HTTP JSP
Žiadosť klienta JSP
Keď sa požaduje webová stránka, odošle informácie na webový server v hlavičke HTTP.
Tieto informácie môžeme použiť pomocou objektu HTTPServletRequest.
Informácie odoslané prehliadačom sú uložené v hlavičke požiadavky požiadavky HTTP.
Na zasielanie informácií do objektu požiadavky používame rôzne hlavičky.
Ďalej sú popísané rôzne hlavičky:
Hlavička
Popis
Príklad
súhlasiť
Určuje typy MIME, s ktorými môže pracovať prehliadač alebo iní klienti
Obrázok / png alebo obrázok / jpeg.webp
Prijať znakovú sadu
Na zobrazenie informácií používa znakovú sadu, ktorú používa prehliadač
ISO-8859-1
Prijať - kódovanie
Určuje typ kódovania, s ktorým pracuje prehliadač
Gzip alebo komprimovať
Prijať jazyk
Určuje zadaný jazyk klientov
En, en_us
Povolenie
Hlavička používaná klientmi pri pokuse o prístup na webové stránky chránené heslom
Pripojenie
Označuje, či klient dokáže zvládnuť trvalé pripojenie HTTP (prehľadávač dokáže načítať viac súborov)
Udržať nažive
Obsahová dĺžka
Uplatňuje sa na odosielanie žiadostí. Poskytuje veľkosť poštových údajov bajtov
Cookie
Vráti súbor cookie na server (tie, ktoré boli predtým odoslané do prehľadávača)
Hostiteľ
Určuje hostiteľa a port pôvodnej adresy URL
Ak dôjde k zmene odvtedy
Znamená to, že vyžaduje iba stránku, ak bola zmenená alebo upravená
Pokiaľ nebude upravený odvtedy
Znamená to, že vyžaduje stránku, iba ak nebola zmenená alebo upravená
Sprostredkovateľ
Označuje adresu URL sprostredkujúcej stránky URL
User-agent
Identifikuje požiadavku prehliadača alebo klienta
Na načítanie hlavičky HTTP na stránke JSP sa používajú nasledujúce metódy:
Cookie [] getCookies () - vráti pole obsahujúce objekty cookie, ktoré poslal klient
Výpočet getAttributeNames () - obsahuje zoznam mien atribútov pre požiadavku
Výpočet getHeaderNames () - obsahuje výčet mien hlavičky.
Výpočet getParameterNames () - obsahuje výčet získavania názvov parametrov v žiadosti.
HttpSessiongetSession () - vráti aktuálnu reláciu spojenú s požiadavkou, alebo ak reláciu nemá, vytvorí novú.
Locale getLocale () - vráti preferované miestne nastavenie, v ktorom klient prijme obsah. Bolo priradené k odpovedi. V predvolenom nastavení bude hodnotou predvolené miestne nastavenie servera.
Objekt getAttribute (názov reťazca) - vráti hodnotu pomenovaného atribútu ako objekt.
ServletInputStreamgetInputStream () - načíta každú požiadavku ako binárne údaje.
String getAuthType () - vráti názov schémy autentifikácie na ochranu servletu
String getCharacterEncoding () - vráti názov kódovania znakov použitého v tele požiadavky.
String getContentType () - vráti typ tela MIME požiadavky.
String getContextPath () - vráti časť identifikátora URI požiadavky, ktorá označuje kontextovú cestu URI
String getHeader (názov reťazca) - vráti hlavičku požiadavky ako reťazec
String getMethod () - vráti názov metódy HTTP ako GET, POST
String getParameter (Názov reťazca) - vráti parameter požiadavky ako reťazec.
String getPathInfo () - vráti informácie o ceste spojené s adresou URL
String getQueryString () - vráti reťazec dotazu, ktorý je spojený s adresou URL žiadosti
String getServletPath () - vráti časť adries URL požiadavky, ktorá volá JSP
String [] getParameterValues (názov reťazca) - vráti pole reťazcových objektov obsahujúcich hodnoty, ktoré má parameter požiadavky
Príklad:
V príklade nižšie používame rôzne metódy využívajúce objekt požiadavky
Riadok kódu 17: Pomocou objektu požiadavky získame objekt relácie konkrétnej relácie a dostaneme hodnotu objektu tejto relácie
Riadok kódu 19: Pomocou objektu požiadavky získame miestne nastavenie konkrétnej lokálnej relácie i.een_US pre dané JSP.
Riadok kódu 21: Pomocou objektu požiadavky získavame informácie o ceste pre tento JSP. V tomto prípade je to null, pretože nie je uvedená žiadna cesta k URL.
Riadok kódu 23: Pomocou objektu požiadavky dostaneme kontextovú cestu, tj koreňovú cestu
Riadok kódu 25: Pomocou objektu požiadavky získame názov servera.
Riadok kódu 27: Pomocou objektu požiadavky získavame port servera.
Riadok kódu 29-35: Pomocou objektu požiadavky dostaneme názvy hlavičiek, ktoré vyjdú ako výčet, a teda dostaneme všetky hodnoty hlavičiek v názvoch hlavičiek.
V tomto dostaneme všetky hodnoty hlavičky ako cookie, hostiteľ, pripojenie, akceptujeme jazyk, akceptujeme kódovanie.
Po vykonaní vyššie uvedeného kódu získate nasledujúci výstup:
Výstup :
Dostávame sériu hodnôt ako názov relácie, názov miestneho nastavenia, názov cesty, názov servera, názov portu, hostiteľ, kontextová cesta a všetky hodnoty hlavičky tohto JSP.
Odpoveď servera JSP
Keď sa žiadosť spracuje a potom sa generuje odpoveď z webového servera. Skladá sa zo stavového riadku, hlavičiek odpovedí, prázdneho riadku a dokumentu.
Je to objekt HTTPServletResponseclass, ktorý je objektom odpovede.
Stavový riadok je verziou HTML.
Hlavičky odpovedí sú uvedené nižšie:
Hlavička
Popis
Povoliť
Určuje metódy požiadaviek, ako je GET, POST, ktoré server požaduje
Kontrola cache
Dokument s odpoveďou je možné uložiť do pamäte cache. Môže to byť verejné, súkromné a žiadna vyrovnávacia pamäť. Žiadna vyrovnávacia pamäť neurčuje, že by sa dokument nemal ukladať do medzipamäte
Pripojenie
Dáva pokyny, či má prehliadač používať uloženéHTTPConnections alebo nie. Blízka hodnota znamená, že prehliadač by nemal v HTTPConnections používať perzistentné a „keep-alive“ znamená použitie perzistentných pripojení
Obsahová dispozícia
Opýtať sa používateľa, či má uložiť odpoveď na disk alebo nie
Kódovanie obsahu
Stránka musí byť počas prenosu kódovaná
Obsahová dĺžka
Počet bajtov v odpovedi
Typ obsahu
Určuje typ odpovede MIME
Platnosť vyprší
Určuje, dokedy by sa mal obsah považovať za zastaraný a nemal by sa ukladať do medzipamäte
Naposledy zmenené
Označuje, kedy bol dokument naposledy upravený
Poloha
Mal by byť súčasťou všetkých odpovedí, ktoré majú stavový kód ako stavový kód 300
Obnoviť
Určuje, ako nájsť aktualizovanú stránku.
Skúsiť znova
Môže byť použitý s odpoveďou 503 na informovanie klienta o tom, ako skoro môže zopakovať požiadavku
Súbor cookie
Určuje súbor cookie spojený so stránkou
Nasledujú metódy používajúce objekt odpovede:
String encodeRedirectURL (String URL) - kóduje URL v metóde redirectURL.
String encodeURL (String URL) - kóduje adresu URL vrátane ID relácie.
Boolean containsHeader (názov reťazca) - obsahuje alebo neobsahuje hlavičku v JSP.
Boolean isCommited () - odpoveď bola spáchaná alebo nie.
Void addCookie (Cookie cookie) - pridá do odpovede cookie
Void addDateHeader (názov reťazca, hodnota reťazca) - pridá dátum a názov hlavičky odpovede
Void addHeader (názov reťazca, hodnota reťazca) - pridá hlavičku odpovede s menom a hodnotou
Void addIntHeader (String name, int value) - pridá hlavičku odpovede s menom a celočíselnou hodnotou
Void flushBuffer () - vynúti obsah vo vyrovnávacej pamäti na výstup pre klienta.
Void reset () - vymaže údaje vo vyrovnávacej pamäti.
Void resetBuffer - vymaže vyrovnávaciu pamäť obsahu v odpovedi bez vymazania stavových kódov.
<%Miestne nastavenie lcl = response.getLocale ();out.println ("Miestne nastavenie je: + lcl + "\ n");response.flushBuffer ();Výstup PrintWriter = response.getWriter ();output.println ("Toto je z objektu zapisovača");Typ reťazca = response.getContentType ();out.println ("Typ obsahu: + typ + "\ n");// Nastaviť obnovenie, čas automatického načítania na 5 sekúndresponse.setIntHeader ("Obnoviť", 5);// Získať aktuálny časDátum dt = nový Dátum ();out.println ("Dnešný dátum je: + dt.toString () + "\ n");%>
Vysvetlenie kódu:
Riadok kódu 13: Pomocou objektu odpovede dostaneme lokálny objekt tejto relácie JSP
Riadok kódu 15: Pomocou objektu odpovede sa flushbuffer používa na vynútenie obsahu medzipamäte do klienta
Riadok kódu 16: Pomocou objektu odpovede dostaneme objekt zapisovača, ktorý dostane výstup do výstupného toku
Riadok kódu 18: Použitím objektu odpovede dostaneme typ obsahu, tj MIME typ objektu odpovede
Riadok kódu 21: Pomocou objektu odpovede sa používa na automatické načítanie každých 5 sekúnd, pretože hodnota 5 je nastavená ako druhý parameter
Po vykonaní vyššie uvedeného kódu získate nasledujúci výstup:
Výkon:
Tu dostaneme výstup, pretože je to z objektu zapisovača z getWriter, ktorý nám dáva objekt a môžeme výstupovať vo výstupnom prúde.
Získame miestne nastavenie ako en_us a typ obsahu ako text / html
Charset dostaneme ako ISO 8859
Dnešný dátum ako aktuálny dátum.
Stavové kódy HTTP JSP
Po spracovaní požiadavky sa vygeneruje odpoveď. Riadok stavu odpovede pozostáva z verzie HTTP, stavového kódu a príslušnej správy.
Správa je priamo spojená so stavovým kódom a verziou protokolu HTTP a určuje ju server.
Predvolene je v JSP nastavený stavový kód 200, takže ho nemusíme nastavovať explicitne.
Môžeme nastaviť ako response.setStatus () metódu
Kódy spadajú do nasledujúcich 5 kategórií:
100-199 - Tu klient naznačuje, že by mal odpovedať nejakou akciou
200-299 - Znamená to, že požiadavka je úspešná
300 - 399 - Používajú sa pre súbory, ktoré boli presunuté a zvyčajne obsahujú hlavičku umiestnenia označujúcu novú adresu
400-499 - označuje chybu klienta
500 - 599 - označuje chybu servera
Niektoré z bežných stavových kódov sú uvedené nižšie:
200 - Označuje, že je všetko v poriadku
301 - Bolo to natrvalo presunuté
304 - od poslednej zmeny nezmenené
400 - Zlá požiadavka
404 nenájdené
405 - Metóda sa nenašla
500 - Interná chyba servera
503 služba nedostupná
505 - verzia HTTP nie je podporovaná
Niektoré z jeho metód sú uvedené nižšie:
Public void setStatus (intstatusCode)
Nastaví stavový kód podľa toho, čo chceme na tejto stránke JSP nastaviť. Toto nám poskytne správu o stavovom kóde, ktorý bol nastavený
Public void sendRedirect (reťazcová adresa URL)
Generuje odpoveď 302 spolu s hlavičkou umiestnenia, ktorá poskytuje adresu URL nového dokumentu
Public void sendError (intcode, Stringmsg)
Spolu s krátkou správou odošle stavový kód a je naformátovaný v dokumente HTML.
Príklad:
V tomto príklade zasielame chybu na stránku JSP výslovne.
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%> Kód stavu guru <% response.sendError (404, „Stránka guru sa nenašla“); %>
Vysvetlenie kódu:
Riadok kódu 10: Pomocou objektu odpovede pošleme chybu na stránku s dvoma parametrami.
Stavový kód - môže to byť ktorýkoľvek z vyššie uvedených. V tomto prípade sme to opísali ako 404
Správa - Môže to byť akákoľvek konkrétna správa, v ktorej chceme zobraziť chybu
Ak spustíte vyššie uvedený kód, získate nasledujúci výstup:
Výkon:
Tu dostaneme chybový kód ako 404, ktorý bol odoslaný z kódu a na výstupe sa tiež zobrazí správa „Guru Page not found“.
Zhrnutie:
V tomto článku sme sa dozvedeli o požiadavke klienta a reakcii servera na to, ako je požiadavka zachytená a ako sa s odpoveďami manipuluje.
Dozvedeli sme sa tiež o stavových kódoch HTTP na zobrazovanie chybových alebo úspešných kódov pre konkrétny súbor.