JSP veiksmai, kurie naudoja XML sintaksės konstrukcijas, kad valdytų servleto variklio veikimą. Išsamiau sužinosime apie įvairius JSP veiksmo elementus, tokius kaip kliento užklausa, serverio atsakymas, HTTP būsenos kodai.
Šioje pamokoje sužinosite
- JSP kliento užklausa
- JSP serverio atsakymas
- JSP HTTP būsenos kodai
JSP kliento užklausa
- Kai prašoma tinklalapio, jis HTTP antraštėje siunčia informaciją į interneto serverį.
- Šią informaciją galime naudoti naudodami „HTTPServletRequest“ objektą.
- Naršyklės siunčiama informacija saugoma HTTP užklausos antraštėje.
- Mes naudojame skirtingas antraštes informacijai siųsti į užklausos objektą.
Skirtingos antraštės aprašytos toliau:
Antraštė | apibūdinimas | Pavyzdys |
Priimti | Jis nurodo MIME tipus, kuriuos gali tvarkyti naršyklė ar kiti klientai | Vaizdas / png arba vaizdas / JPEG.webp |
Priimti-simbolis | Informacijai rodyti naudojamas naršyklės naudojamas simbolių rinkinys | ISO-8859-1 |
Priimti - kodavimas | Jis nurodo naršyklės tvarkomo kodavimo tipą | Gzip arba suspausti |
Priimti kalbą | Jame nurodoma kliento nurodyta kalba | En, en_us |
Leidimas | Antraštė, kurią klientai naudoja bandydami pasiekti slaptažodžiu apsaugotus tinklalapius | |
Ryšys | Tai nurodo, ar klientas gali tvarkyti nuolatinius HTTP ryšius (naršyklė gali nuskaityti kelis failus) | Išlaikyti gyvą |
Turinio ilgis | Taikoma užklausų paskelbimui. Tai nurodo baitų pašto duomenų dydį | |
Slapukas | Grąžina slapuką į serverį (tuos, kurie anksčiau buvo nusiųsti į naršyklę) | |
Šeimininkas | Nurodo pirminio URL pagrindinį kompiuterį ir prievadą | |
Jei pakeistas nuo | Tai rodo, kad jam reikalingas tik puslapis, jei jis buvo pakeistas ar modifikuotas | |
Jei nepakeistas nuo | Tai rodo, kad jam reikalingas puslapis tik tuo atveju, jei jis nebuvo pakeistas ar modifikuotas | |
Persiuntėjas | Nurodo nukreipiančio URL puslapio URL | |
Vartotojo atstovas | Nurodo naršyklės ar kliento užklausą | |
Šie būdai naudojami HTTP antraštei skaityti JSP puslapyje:
- Slapukas [] getCookies () - pateikia masyvą, kuriame yra slapukų objektai, kuriuos klientas atsiuntė
- Surašymas getAttributeNames () - apima užklausos atributų pavadinimų sąrašą
- Enumeration getHeaderNames () - yra antraštės pavadinimų sąrašas.
- Surašymas getParameterNames () - apima parametrų pavadinimų gavimo užklausoje sąrašą.
- „HttpSessiongetSession ()“ - grąžina dabartinę sesiją, susietą su užklausa, arba, jei jos nėra, sukurs naują.
- Locale getLocale () - pateikia pageidaujamą lokalę, kurioje klientas priims turinį. Ji buvo priskirta atsakymui. Pagal numatytuosius nustatymus reikšmė bus numatytoji serverio lokalė.
- Object getAttribute (String name) - grąžina pavadinto atributo kaip objekto vertę.
- „ServletInputStreamgetInputStream ()“ - užklausos kūnas atkuriamas kaip dvejetainiai duomenys.
- String getAuthType () - pateikia autentifikavimo schemos pavadinimą, kad apsaugotų servletą
- String getCharacterEncoding () - pateikia simbolio kodavimo, naudojamo užklausos tekste, pavadinimą.
- String getContentType () - pateikia užklausos turinio MIME tipą.
- String getContextPath () - pateikia užklausos URI dalį, nurodančią URI konteksto kelią
- String getHeader (String name) - pateikia užklausos antraštę kaip eilutę
- String getMethod () - pateikia HTTP metodo pavadinimą, pvz., GET, POST
- String getParameter (String name) - pateikia užklausos parametrą kaip eilutę.
- String getPathInfo () - pateikia kelio informaciją, susietą su URL
- String getQueryString () - pateikia užklausos eilutę, susietą su užklausos URL
- String getServletPath () - pateikia užklausos URL dalį, kuri iškviečia JSP
- String [] getParameterValues (String name) - pateikia eilutės objektų masyvą, kuriame yra reikšmės, kurias turi užklausos parametras
Pavyzdys:
Toliau pateiktame pavyzdyje mes naudojame skirtingus metodus, naudojant užklausos objektą
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%><% @ page import = "java.io. * java.util. *"%> Kliento užklausos „Guru JSP“
Kliento užklausos „Guru JSP“
guru antraštė | guru antraštė (-ės) Vertė (-ės) |
<%HttpSession gurusession = request.getSession ();out.print ("
seanso pavadinimas yra | " + gurusession + " td.>
|
");Lokalė gurulocale = request.getLocale ();out.print ("
Lokalės pavadinimas yra | " + gurulocale + " |
");Stygos kelias = request.getPathInfo ();out.print ("
kelio pavadinimas yra | " + kelias + " |
");String lpath = request.get ();out.print ("
Konteksto kelias yra | " + lipatas + " |
");Eilutės serverio vardas = request.getServerName ();out.print ("
Serverio pavadinimas yra | " + serverio vardas + " |
");int portname = request.getServerPort ();out.print ("
Serverio prievadas yra | " + prievado vardas + " |
");Surašymo hnames = request.getHeaderNames ();while (hnames.hasMoreElements ()) {String paramName = (String) hnames.nextElement ();out.print ("
" + paramName + " | ");Eilutė paramValue = request.getHeader (paramName);out.println ("" + paramValue + " |
");}%>
Kodo paaiškinimas:
17 kodo eilutė: Naudodami užklausos objektą, gauname konkretaus seanso seanso objektą ir gauname tos seanso objekto vertę
19 kodo eilutė: Naudodami užklausos objektą, gauname tos JSP lokalizacijos seansą i.een_US.
Kodo eilutė 21: Naudodami užklausos objektą, gauname to JSP kelio informaciją. Šiuo atveju jis yra niekinis, nes nėra nurodyto URL kelio.
Kodo eilutė 23: Naudodami užklausos objektą, gauname konteksto kelią, ty šaknies kelią
25 kodo eilutė: Naudodami užklausos objektą, gauname serverio pavadinimą.
27 kodo eilutė: Naudodami užklausos objektą, gauname serverio prievadą.
Kodo eilutė 29-35: Naudodami užklausos objektą, gauname antraščių pavadinimus, kurie pasirodo kaip surašymas, taigi visas antraštės reikšmes gauname antraštių pavadinimuose.
Tuo mes gauname visas antraštės reikšmes kaip slapuką, pagrindinį kompiuterį, ryšį, priimame kalbą, priimame kodavimą.
Vykdydami pirmiau nurodytą kodą gausite šį išvestį:
Išvestis :
Gauname tokių verčių serijas kaip seanso pavadinimas, lokalės pavadinimas, kelio pavadinimas, serverio pavadinimas, prievado pavadinimas, pagrindinis kompiuteris, konteksto kelias ir visos to JSP antraštės vertės.
JSP serverio atsakymas
- Kai užklausa apdorojama ir atsakymas sugeneruojamas iš žiniatinklio serverio. Ją sudaro būsenos eilutė, atsakymo antraštės, tuščia eilutė ir dokumentas.
- Tai yra „HTTPServletResponseclass“ objektas, kuris yra atsako objektas.
- Būsenos eilutė yra HTML versija.
Toliau pateikiamos atsakymo antraštės:
Antraštė | apibūdinimas |
Leisti | Jame nurodomi užklausos metodai, pvz., GET, POST, kurių prašo serveris |
Talpyklos valdymas | Atsakymo dokumentą galima išsaugoti talpykloje. Tai gali būti vieša, privati ir be talpyklos. Nei viena talpykla nenurodo, kad dokumentas neturėtų būti laikomas talpykloje |
Ryšys | Jis nurodo, ar naršyklė turėtų naudoti išsaugotus HTTP ryšius, ar ne. Uždaroji vertė reiškia, kad naršyklė neturėtų naudoti nuolatinio ryšio „HTTP“ ryšiuose, o „palaikyti gyvą“ reiškia nuolatinių ryšių naudojimą |
Turinio išdėstymas | Paklausti vartotojo, ar išsaugoti atsakymą į diską, ar ne |
Turinio kodavimas | Puslapis turi būti užkoduotas perdavimo metu |
Turinio ilgis | Baitų skaičius atsakyme |
Turinio tipas | Jis nurodo MIME tipo atsakymą |
Pasibaigia | Nurodo, iki kada turinys turėtų būti laikomas pasenusiu ir neturėtų būti laikomas talpykloje |
Paskutinį kartą keistas | Tai nurodo, kada dokumentas buvo paskutinį kartą modifikuotas |
Vieta | Jis turėtų būti įtrauktas į visus atsakymus, kurių būsenos kodas yra 300 kaip būsenos kodas |
Atnaujinti | Jame nurodoma, kaip rasti atnaujintą puslapį. |
Vėl bandykite | Jį galima naudoti su 503 atsakymu, kad klientas galėtų pasakyti, kaip greitai jis gali pakartoti užklausą |
Rinkinys-sausainis | Nurodo su puslapiu susietą slapuką |
Toliau pateikiami metodai, naudojantys atsako objektą:
- String encodeRedirectURL (String URL) - koduoja URL redirectURL metodu.
- String encodeURL (String URL) - koduoja URL įtraukdamas seanso ID.
- „Boolean“ yraHeader (String name) - JSP yra antraštė, ar ne.
- Boolean isCommited () - atsakymas įvykdytas arba ne.
- Void addCookie (slapuko slapukas) - prideda slapuką prie atsakymo
- Panaikinti addDateHeader (eilutės pavadinimas, eilutės vertė) - prideda atsakymo antraštės datos pavadinimą ir vertę
- Void addHeader (String name, String value) - prideda atsakymo antraštę su vardu ir verte
- Panaikinti addIntHeader (eilutės pavadinimas, int reikšmė) - prideda atsakymo antraštę su pavadinimu ir sveikojo skaičiaus verte
- Void flushBuffer () - priverčia buferio turinį perduoti klientui.
- Void reset () - išvalo buferio duomenis.
- Void resetBuffer - išvalo turinio buferį atsakyme neišvalydamas būsenos kodų.
- Void sendError (intsc, Stringmsg) - siunčia klaidos atsakymą klientui naudodamas būsenos kodą.
- Void sendRedirect (String location) - siunčia laikiną peradresavimo atsakymą klientui.
- Void setBufferSize (int dydis) - nustato kūno buferio dydį
- Void setCharacterEncoding (String charset) - nustato simbolių kodavimą
- Void setContentType (String type) - nustato atsakymo turinio tipą
- Void setContentLength (intlen) - nustato atsakymo turinio ilgį
- Void setLocale (Locale lcl) - nustato atsakymo lokalės tipą
- Void setStatus (intsc) - nustato atsakymo būsenos kodą
Pavyzdys:
Šiame pavyzdyje aptariame įvairius metodus 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“ atsakas
„Guru“ atsakymas
<%Lokalė lcl = response.getLocale ();out.println ("Lokalė yra: + lcl + "\ n");response.flushBuffer ();„PrintWriter“ išvestis = response.getWriter ();output.println ("Tai yra iš rašytojo objekto");Stygos tipas = response.getContentType ();out.println ("Turinio tipas: + type + "\ n");// Nustatykite atnaujinimo, automatinio leidimo laiką kaip 5 sekundesresponse.setIntHeader („Atnaujinti“, 5);// Gaukite dabartinį laikąData dt = nauja data ();out.println ("Šios dienos data yra: + dt.toString () + "\ n");%>
Kodo paaiškinimas:
Kodo eilutė 13: Naudodami atsako objektą, gauname šios JSP sesijos lokalės objektą
15 kodo eilutė: naudojant atsako objektą, „flushbuffer“ naudojamas priversti buferio turinį klientui
Kodo eilutė 16: Naudodami atsako objektą, gauname rašytojo objektą, kuris gauna išvestį išvesties sraute
Kodo eilutė18: naudojant atsako objektą gauname turinio tipą, ty atsakymo objekto MIME tipą
Kodo eilutė 21: naudojant atsako objektą, jis naudojamas automatiškai leisti kas 5 sekundes, nes 5 yra nustatytas kaip antrasis parametras
Vykdydami pirmiau nurodytą kodą gausite šį išvestį:
Išvestis:
- Čia mes gauname išvestį, nes tai yra iš getWriter rašytojo objekto, kuris suteikia mums objektą ir mes galime išvesties išvesties sraute.
- Gauname lokalę kaip en_us ir turinio tipą kaip text / html
- Gauname simbolį kaip ISO 8859
- Šios dienos data yra dabartinė.
JSP HTTP būsenos kodai
- Apdorojus užklausą, generuojamas atsakymas. Atsakymo būsenos eilutę sudaro HTTP versija, būsenos kodas ir susijęs pranešimas.
- Pranešimas yra tiesiogiai susietas su būsenos kodu ir HTTP versija, ir jį nustato serveris.
- Pagal numatytuosius nustatymus 200 JSP yra nustatytas kaip būsenos kodas, todėl mums nereikia jų aiškiai nustatyti.
- Mes galime nustatyti kaip response.setStatus () metodą
Kodai skirstomi į šias 5 kategorijas:
- 100–199 - čia klientas nurodo, kad turėtų atsakyti atlikdamas tam tikrus veiksmus
- 200–299 - tai reiškia, kad užklausa yra sėkminga
- 300–399 - jie naudojami perkeltiems failams ir paprastai apima vietos antraštę, nurodančią naują adresą
- 400-499 - nurodo kliento klaidą
- 500–599 - nurodo serverio klaidą
Kai kurie įprasti būsenos kodai yra žemiau:
- 200 - rodo, kad viskas gerai
- 301 - jis visam laikui persikėlė
- 304 - Nepakeistas nuo paskutinio pakeitimo
- 400 bloga užklausa
- 404 Nerasta
- 405 - metodas nerastas
- 500 Vidinė serverio klaida
- 503 Paslauga neteikiama
- 505 - HTTP versija nepalaikoma
Kai kurie jo metodai yra išvardyti žemiau:
- Public void setStatus (intstatusCode)
Jis nustato būsenos kodą, kurį norime nustatyti tame JSP puslapyje. Tai suteiks mums pranešimą apie būsenos kodą, kuris buvo nustatytas
- Viešas negaliojantis sendRedirect (eilutės URL)
Tai generuoja 302 atsakymą kartu su vietos antrašte, nurodančiu naujo dokumento URL
- Viešas negaliojantis sendError (intcode, Stringmsg)
Jis siunčia būsenos kodą kartu su trumpuoju pranešimu ir suformatuojamas HTML dokumente.
Pavyzdys:
Šiame pavyzdyje mes aiškiai siunčiame klaidą į JSP puslapį.
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%> „Guru“ būsenos kodas <% response.sendError (404, „Guru puslapis nerastas“); %>