JSP ügyfél kérés
⚡ Okos összefoglaló
A JSP klienskérés és a szerver válasza JSP műveletelemeket használ a servlet motor vezérléséhez. A böngésző HTTP fejléceken keresztül küldi az információkat, a szerver egy állapotsort és fejléceket ad vissza, és a HTTP állapotkódok jelentik az egyes kérések eredményét.

A JSP műveletek XML szintaxisban található konstrukciókat használnak a servlet motor viselkedésének vezérlésére. Részletesebben megismerkedünk majd a különböző JSP műveleti elemekkel, mint például az ügyfélkérelem, a szerverválasz és a HTTP állapotkódok.
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 |
|---|---|---|
| Elfogadom! | 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 gazdagépet és portot URL | |
| 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ó | Azt jelzi URL az utalás URL oldal | |
| 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() – fejlécnevek felsorolását tartalmazza.
- Felsorolás getParameterNames() – tartalmazza a kérésben szereplő paraméternevek felsorolását.
- HttpSession getSession() – 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.
- ServletInputStream getInputStream() – bináris adatként kéri le a kérés törzsét.
- 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 a hozzá tartozó elérési út információt URL
- Karakterlánc getQueryString() – visszaadja a kéréshez társított lekérdezési karakterláncot URL
- String getServletPath() – visszaadja a részét URLa JSP-t hívó kérés s-ei
- 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:
Code 17 vonal: A request objektum használatával megkapjuk az adott munkamenet session objektumát, és megkapjuk az adott munkamenet objektumértékét
Code 19 vonal: A request objektum használatával megkapjuk az adott munkamenet területi beállítását, azaz az adott JSP-hez tartozó en_US területi beállítást.
Code 21 vonal: A request objektum használatával elérési utat kapunk az adott JSP-hez. Ebben az esetben ez null, mivel nincs elérési út a következőhöz: URL említett.
Code 23 vonal: 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
Code 25 vonal: A kérelem objektum használatával megkapjuk a szerver nevét.
Code 27 vonal: A kérelem objektum használatával szerverportot kapunk.
Code 29-35. sor: 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:
output:
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 HTTPServletResponse osztály objektuma, ami egy válasz objektum.
- 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(Húr URL) - kódolja a URL átirányításbanURL módszer.
- Karakterlánc kódolásaURL(Húr URL) - kódolja a URL a munkamenet-azonosító megadásá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.
- Érvénytelen addCookie(Cookie süti) – sütit 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(int sc,String msg) – 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(int len) – 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(int sc) – beállítja a válasz állapotkódját
Példa:
Ebben a példában különböző metódusokat tárgyalunk: 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>
A kód magyarázata:
Code 13 vonal: A válaszobjektum használatával megkapjuk ennek a JSP-munkamenetnek a locale objektumát
Code 15 vonal: A válaszobjektum használatával a flushbuffer a puffertartalom kliensbe kényszerítésére szolgál
Code 16 vonal: A válaszobjektum használatával író objektumot kapunk, amely kimenetet kap a kimeneti folyamban
Code 18 vonal: A válaszobjektum használatával tartalomtípust, azaz MIME típusú válaszobjektumot kapunk
Code 21 vonal: 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 a kimenetet, mivel ez a get függvény író objektumából származik.Writer, ami objektumot ad nekünk, és ezt kimenetként használhatjuk.
- 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 állapot Codes
- 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 állapot Code JSP metódusok
Az alábbiakban felsorolunk néhány állapotkód-módszert a JSP-ben:
- Public void setStatus(int állapotCode): 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
- Nyilvános void sendRedirect(String URL): 302-es választ generál a helymeghatározó fejléccel együtt, amely megadja URL az új dokumentum
- Public void sendError(int kód,String üzenet): 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:
Code 10 vonal: 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 404-es hibakódot kapunk, amelyet a kód küldött, és a következőt is megjeleníti: „Guru „Az oldal nem található” üzenet jelenik meg a kimenetben.



