JSP ügyfél kérés
JSP-műveletek, amelyek XML-szintaxis konstrukciókat használnak a szervlet motor viselkedésének szabályozására. További részleteket fogunk megtudni a különféle JSP-műveletelemekről, például az ügyfélkérésről, a szerver válaszáról, a HTTP állapotkódokról.
JSP ügyfél kérés
- Amikor a weboldal kérésre kerül, az információkat küld a webszervernek a HTTP fejlécben.
- Ezt az információt a HTTPServletRequest objektum használatával használhatjuk fel.
- A böngésző által küldött információk a HTTP kérés kérésfejlécében tárolódnak.
- Különböző fejléceket használunk, hogy információkat küldjünk a kérelem objektumnak.
Fejlécek JSP-ben
Az alábbiakban ismertetjük a JSP különböző fejléceit:
Fejléc | Leírás | Példa |
---|---|---|
Elfogad! | Meghatározza a MIME típusokat, amelyeket a böngésző vagy más kliensek kezelni tudnak | Kép/png vagy kép/jpeg |
Accept-charset | A böngésző által használt karakterkészletet használja az információk megjelenítéséhez | ISO-8859 1- |
Elfogadás- Kódolás | Meghatározza a böngésző által kezelt kódolás típusát | Gzip vagy tömörítés |
Elfogad-nyelv | Meghatározza az ügyfelek által megadott nyelvet | En,en_us |
Meghatalmazás | Az ügyfelek által használt fejléc, amikor jelszóval védett weboldalakat próbálnak elérni | |
csatlakozás | Azt jelzi, hogy az ügyfél képes-e kezelni az állandó HTTP-kapcsolatokat (a böngésző több fájlt is lekérhet) | Életben tartani |
Tartalom-hosszúság | Feladási kérésekre vonatkozik. Megadja a postai adatok méretét bájtokban | |
aprósütemény | Visszaküldi a cookie-t a szervernek (azokat, amelyeket korábban elküldtek a böngészőnek) | |
Házigazda | Megadja az eredeti URL gazdagépét és portját | |
Ha azóta módosították | Azt jelzi, hogy csak egy oldalt igényel, ha módosították vagy módosították | |
Ha azóta változatlanul | Azt jelzi, hogy csak akkor igényel oldalt, ha azt nem módosították vagy módosították | |
Ajánló | A hivatkozó URL-oldal URL-jét jelzi | |
Felhasználó-ügynök | Azonosítja a böngésző vagy az ügyfél kérését |
HTTP-fejléc-módszerek a JSP-ben
A következő módszereket használják a HTTP-fejléc beolvasására a JSP-oldalon:
- Cookie[] getCookies() – az ügyfél által küldött cookie-objektumokat tartalmazó tömböt ad vissza
- Felsorolás getAttributeNames() – tartalmazza a kéréshez szükséges attribútumnevek felsorolását
- Felsorolás getHeaderNames() – tartalmazza a fejléc neveinek felsorolását.
- Felsorolás getParameterNames() – tartalmazza a kérésben szereplő paraméternevek felsorolását.
- HttpSessiongetSession() – visszaadja a kéréshez társított aktuális munkamenetet, vagy ha nincs munkamenete, akkor újat hoz létre.
- Helyi beállítás getLocale() – visszaadja azt az előnyben részesített területi beállítást, amelyben az ügyfél a tartalmat elfogadja. Hozzá van rendelve a válaszhoz. Alapértelmezés szerint az érték a kiszolgáló alapértelmezett területi beállítása lesz.
- Objektum getAttribute (karakterlánc neve) – a named attribútum értékét adja vissza objektumként.
- ServletInputStreamgetInputStream() – lekéri a kérés testét bináris adatként.
- Karakterlánc getAuthType() – a servlet védelmére szolgáló hitelesítési séma nevét adja vissza
- String getCharacterEncoding() – a kérés törzsében használt karakterkódolás nevét adja vissza.
- String getContentType() – a kérés törzsének MIME típusát adja vissza.
- String getContextPath() – a kérésnek azt a részét adja vissza, amely URI az URI környezeti elérési útját jelzi
- String getHeader (karakterlánc neve) – visszaadja a kérés fejlécét karakterláncként
- String getMethod() – visszaadja a HTTP metódus nevét, például GET, POST
- String getParameter (karakterlánc neve) – visszaadja a kérés paraméterét karakterláncként.
- String getPathInfo() – visszaadja az URL-hez tartozó elérési utat
- Karakterlánc getQueryString() – a kérés URL-jéhez társított lekérdezési karakterláncot adja vissza
- String getServletPath() – visszaadja a kérés URL-címeinek azt a részét, amely meghívja a JSP-t
- String[] getParameterValues(karakterlánc neve) – visszaadja a karakterlánc objektumokból álló tömböt, amely tartalmazza a kérési paraméter értékeit
Példa:
Az alábbi példában különböző módszereket használunk a request objektum használatával
<%@ 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>"); } %>
A kód magyarázata:
17. kódsor: A request objektum használatával megkapjuk az adott munkamenet session objektumát, és megkapjuk az adott munkamenet objektumértékét
19. kódsor: A request objektum használatával megkapjuk az adott munkamenet területi beállításait, az i.een_US területi beállítást az adott JSP-hez.
21. kódsor: A kérelem objektum használatával megkapjuk a JSP elérési útját. Ebben az esetben ez nulla, mivel nincs megemlítve az URL elérési útja.
23. kódsor: A kérelem objektum használatával a kontextus elérési útját, azaz a gyökér elérési útját kapjuk
25. kódsor: A kérelem objektum használatával megkapjuk a szerver nevét.
27. kódsor: A kérelem objektum használatával szerverportot kapunk.
29-35. kódsor: A kérelem objektum használatával fejlécneveket kapunk, amelyek felsorolásként jönnek ki, és így megkapjuk az összes fejlécértéket a fejlécnevekben.
Ebben az összes fejlécértéket a-ként kapjuk meg aprósütemény, gazdagép, kapcsolat, nyelv elfogadása, kódolás elfogadása.
Amikor végrehajtja a fenti kódot, a következő kimenetet kapja:
teljesítmény:
Olyan értékek sorozatát kapjuk meg, mint a munkamenet neve, területi beállítás neve, elérési út neve, kiszolgáló neve, port neve, gazdagép, kontextus elérési útja és ezek összes fejlécértéke. JSP.
JSP szerver válasz
- Amikor egy kérést feldolgoznak, majd a választ generálja a webszerver. Állapotsorból, válaszfejlécekből, üres sorból és dokumentumból áll.
- Ez a HTTPServletResponseclass objektuma, amely egy válaszobjektum.
- Az állapotsor a HTML egy változata.
Válaszfejlécek JSP-ben
A JSP válaszfejléceit az alábbiakban említjük:
Fejléc | Leírás |
---|---|
Hagyjuk | Meghatározza a kérési metódusokat, például a GET, POST, amelyet a szerver kér |
Cache-vezérlés | A válaszdokumentum gyorsítótárazható. Lehet nyilvános, privát és gyorsítótár nélküli. A gyorsítótár nem határozza meg, hogy a dokumentum ne legyen gyorsítótárban |
csatlakozás | Utasítja, hogy a böngészőnek használnia kell-e a mentett HTTPConnections-t vagy sem. A bezárás azt jelenti, hogy a böngészőnek nem szabad állandó kapcsolatot használnia a HTTP-kapcsolatokban, a „keep-alive” pedig állandó kapcsolatok használatát jelenti. |
Tartalom-rendelkezés | Megkérdezni a felhasználót, hogy mentse-e a választ lemezre vagy sem |
Tartalom-kódolás | Az oldalt az átvitel során kódolni kell |
Tartalom-hosszúság | A válasz bájtok száma |
Tartalom típus | Meghatározza a válasz MIME típusát |
Lejár | Meghatározza, hogy a tartalom meddig tekinthető elavultnak, és mennyi ideig nem szabad gyorsítótárban tárolni |
Utolsó módosítás | Azt jelzi, hogy mikor módosították utoljára a dokumentumot |
Települések | Minden olyan válaszban szerepelnie kell, amelynek állapotkódja 300 állapotkód |
felfrissít | Meghatározza, hogyan találja meg a frissített oldalt. |
Újrapróbálkozás után | Használható 503-as válaszokkal, hogy közölje az ügyféllel, hogy milyen hamar tudja megismételni a kérést |
Set-cookie | Meghatározza az oldalhoz társított cookie-t |
HTTP-válaszfejléc-módszerek a JSP-ben
A következő módszerek a JSP-ben válaszobjektumot használva:
- Karakterlánc encodeRedirectURL(String URL) – az URL-t redirectURL metódusban kódolja.
- String encodeURL (String URL) – kódolja az URL-t a munkamenet-azonosítóval.
- Boolean tartalmaz fejlécet (karakterlánc neve) – tartalmaz-e fejlécet a JSP-ben, vagy sem.
- Boolean isCommited() – a válasz megtörtént-e vagy sem.
- Void addCookie (Cookie cookie) – cookie-t ad a válaszhoz
- Void addDateHeader (karakterlánc neve, karakterlánc értéke) – hozzáadja a válaszfejléc dátumának nevét és értékét
- Void addHeader (karakterlánc neve, karakterlánc értéke) – hozzáadja a válaszfejlécet névvel és értékkel
- Érvénytelen addIntHeader(karakterlánc neve, int érték) – hozzáadja a válaszfejlécet névvel és egész értékkel
- Üres öblítésBuffer() - a puffer tartalmát a kliens kimenetére kényszeríti.
- Void reset() – törli az adatokat a pufferben.
- Érvénytelen visszaállításBuffer - az állapotkódok törlése nélkül törli a válasz tartalmi pufferét.
- Void sendError(intsc,Stringmsg) – hibaüzenetet küld a kliensnek állapotkód használatával.
- Érvénytelen sendRedirect (karakterlánc helye) – ideiglenes átirányítási választ küld az ügyfélnek.
- Üres készletBufferMéret (int méret) - beállítja a test pufferméretét
- Void set CharacterEncoding (karakterlánc karakterkészlet) – beállítja a karakterkódolást
- Void setContentType (karakterlánc típusa) – beállítja a válasz tartalomtípusát
- Void setContentLength(intlen) – beállítja a válasz tartalmi hosszát
- Void setLocale(Locale lcl) – beállítja a válasz területi típusát
- Void setStatus(intsc) – beállítja a válasz állapotkódját
Példa:
Ebben a példában különböző módszereket ismertetünk: 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>
A kód magyarázata:
13. kódsor: A válaszobjektum használatával megkapjuk ennek a JSP-munkamenetnek a locale objektumát
15. kódsor: A válaszobjektum használatával a flushbuffer a puffertartalom kliensbe kényszerítésére szolgál
16. kódsor: A válaszobjektum használatával író objektumot kapunk, amely kimenetet kap a kimeneti folyamban
18. kódsor: A válaszobjektum használatával tartalomtípust, azaz MIME típusú válaszobjektumot kapunk
21. kódsor: A válaszobjektum használatával 5 másodpercenként automatikusan betöltődik, mivel az 5 van beállítva második paraméterként
Amikor végrehajtja a fenti kódot, a következő kimenetet kapja:
output:
- Itt kapjuk meg a kimenetet, mivel ez a getWriter író objektumától származik, amely objektumot ad nekünk, és a kimeneti folyamban tudjuk kiadni.
- A locale-t en_us-ként, a tartalomtípust pedig text/html-ként kapjuk meg
- A karakterkészletet ISO 8859-ként kapjuk meg
- A mai dátum mint aktuális dátum.
JSP HTTP állapotkódok
- A kérés feldolgozása után a válasz jön létre. A válasz állapotsora a HTTP verzióból, egy állapotkódból és egy kapcsolódó üzenetből áll.
- Az üzenet közvetlenül kapcsolódik az állapotkódhoz és a HTTP-verzióhoz, és azt a szerver határozza meg.
- Alapértelmezés szerint 200 van beállítva állapotkódként a JSP-ben, így nem kell kifejezetten beállítanunk.
- Beállíthatjuk válasz.setStatus() metódusként
A kódok a következő 5 kategóriába sorolhatók:
- 100-199 – Itt az ügyfél jelzi, hogy valamilyen művelettel kell válaszolnia
- 200-299 – Azt jelzi, hogy a kérés sikeres volt
- 300-399 – Áthelyezett fájlokhoz használják, és általában tartalmaznak egy helyfejlécet, amely az új címet jelzi
- 400-499 – Az ügyfél hibáját jelzi
- 500-599 – A szerver hibáját jelzi
Az alábbiakban néhány általános állapotkód található:
- 200 – Azt jelzi, hogy minden rendben van
- 301 – Végleg elköltözött
- 304 – A legutóbbi változtatás óta nem módosult
- 400 Hibás kérelem
- 404 nem található
- 405 – A módszer nem található
- 500 Belső Szerver Hiba
- 503 A szolgáltatás nem elérhető
- 505 – A HTTP-verzió nem támogatott
HTTP állapotkód-módszerek a JSP-ben
Az alábbiakban felsorolunk néhány állapotkód-módszert a JSP-ben:
- Public void setStatus(intstatusCode): Beállítja az állapotkódot, amelyiket be akarjuk állítani az adott JSP-oldalon. Ezzel a beállított állapotkód üzenetét kapjuk
- Public void sendRedirect (String URL): 302-es választ generál a hely fejlécével együtt, amely megadja az új dokumentum URL-jét
- Public void sendError(intcode,Stringmsg): A rövid üzenettel együtt elküldi az állapotkódot, és HTML dokumentumban van formázva.
Példa:
Ebben a példában a hibát kifejezetten a JSP-oldalnak küldjük.
<%@ 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>
A kód magyarázata:
10. kódsor: A válaszobjektum segítségével a hibát egy két paraméteres oldalra küldjük.
- Állapotkód – A fentiek bármelyike lehet. Ebben az esetben a 404-et írtuk le
- Üzenet – Bármilyen konkrét üzenet lehet, amelyben a hibát szeretnénk megjeleníteni
Ha végrehajtja a fenti kódot, a következő kimenetet kapja:
output:
Itt a 404-es hibakódot kapjuk, amelyet a kódból küldtünk, és a kimenetben is megjelenik a „Guru oldal nem található” üzenet.
Összegzésként
- Ebben a cikkben megismerkedtünk az ügyfélkérésekkel és a kiszolgálói válaszokkal, amelyek a kérés elfogására és a válaszok manipulálására vonatkoznak.
- JSP-műveletek amelyek XML szintaxis konstrukciókat használnak a szervlet motor viselkedésének szabályozására.
- Amikor a weboldal kérésre kerül, az információkat küld a webszervernek a HTTP fejlécben.
- Amikor egy kérést feldolgoznak, majd a választ generálja a webszerver. Állapotsorból, válaszfejlécekből, üres sorból és dokumentumból áll.
- A kérés feldolgozása után a válasz jön létre. A válasz állapotsora a HTTP verzióból, egy állapotkódból és egy kapcsolódó üzenetből áll.