JSP-asiakaspyyntö
JSP-toiminnot, jotka käyttävät XML-syntaksin konstrukteja servlet-moottorin toiminnan ohjaamiseen. Opimme yksityiskohtaisemmin erilaisista JSP-toimintoelementeistä, kuten asiakaspyynnöstä, palvelimen vastauksesta ja HTTP-tilakoodeista.
JSP-asiakaspyyntö
- Kun verkkosivua pyydetään, se lähettää tiedot web-palvelimelle HTTP-otsikossa.
- Voimme käyttää näitä tietoja käyttämällä HTTPServletRequest-objektia.
- Selaimen lähettämät tiedot tallennetaan HTTP-pyynnön pyyntöotsikkoon.
- Käytämme erilaisia otsikoita lähettääksemme tietoja pyyntöobjektiin.
Otsikot JSP:ssä
JSP:n eri otsikot on kuvattu alla:
Ylätunniste | Descriptioni | esimerkki |
---|---|---|
Hyväksyä | Se määrittää MIME-tyypit, joita selain tai muut asiakkaat voivat käsitellä | Kuva/png tai kuva/jpeg |
Hyväksy-merkki | Se käyttää selaimen käyttämää merkistöä tietojen näyttämiseen | ISO-8859-1 |
Hyväksy - koodaus | Se määrittää selaimen käsittelemän koodaustyypin | Gzip tai pakkaa |
Hyväksy-kieli | Se määrittää asiakkaiden määrittämän kielen | En,en_us |
Lupa | Asiakkaiden käyttämä ylätunniste yrittäessään käyttää salasanalla suojattuja verkkosivuja | |
Yhteys | Se osoittaa, pystyykö asiakas käsittelemään pysyviä HTTP-yhteyksiä (selain voi hakea useita tiedostoja) | Pitää hengissä |
Sisällön pituus | Koskee postituspyyntöjä. Se antaa koon post data tavuja | |
Cookie | Palauttaa evästeen palvelimelle (selaimelle aiemmin lähetetyt) | |
Isäntä | Määrittää alkuperäisen URL-osoitteen isännän ja portin | |
Jos sitä on muutettu sen jälkeen | Se osoittaa, että se vaatii vain sivun, jos sitä on muutettu tai muokattu | |
Jos sitä ei ole muutettu sen jälkeen | Se osoittaa, että se vaatii sivun vain, jos sitä ei ole muutettu tai muokattu | |
viittaava | Osoittaa viittaavan URL-sivun URL-osoitteen | |
Käyttäjä agentti | Tunnistaa selaimen tai asiakkaan tekemän pyynnön |
HTTP-otsikkomenetelmät JSP:ssä
Seuraavia menetelmiä käytetään HTTP-otsikon lukemiseen JSP-sivulla:
- Eväste[] getCookies() – palauttaa taulukon, joka sisältää asiakkaan lähettämät evästeobjektit
- Luettelo getAttributeNames() – sisältää luettelon attribuuttien nimistä pyynnöstä
- Luettelo getHeaderNames() – sisältää otsikon nimien luettelon.
- Luettelo getParameterNames() – sisältää luettelon parametrien nimien saamisesta pyynnössä.
- HttpSessiongetSession() – palauttaa pyyntöön liittyvän nykyisen istunnon tai jos sillä ei ole istuntoa, se luo uuden.
- Locale getLocale() – palauttaa ensisijaisen kielen, jolla asiakas hyväksyy sisällön. Se on määritetty vastaukselle. Oletuksena arvo on palvelimen oletuskieli.
- Objekti getAttribute (merkkijonon nimi) – palauttaa nimetyn attribuutin arvon objektina.
- ServletInputStreamgetInputStream() – noutaa pyynnön kehon binääritietona.
- Merkkijono getAuthType() – palauttaa todennusmallin nimen servletin suojaamiseksi
- Merkkijono getCharacterEncoding() – palauttaa pyynnön rungossa käytetyn merkkikoodauksen nimen.
- Merkkijono getContentType() – palauttaa pyynnön rungon MIME-tyypin.
- Merkkijono getContextPath() – palauttaa pyynnön osan URI osoittaa URI:n kontekstipolun
- Merkkijono getHeader (merkkijonon nimi) – palauttaa pyynnön otsikon merkkijonona
- merkkijono getMethod() – palauttaa HTTP-menetelmän nimen, kuten GET, POST
- Merkkijono getParameter(merkkijonon nimi) – palauttaa pyynnön parametrin merkkijonona.
- Merkkijono getPathInfo() – palauttaa URL-osoitteeseen liittyvät polkutiedot
- Merkkijono getQueryString() – palauttaa kyselymerkkijonon, joka liittyy pyynnön URL-osoitteeseen
- Merkkijono getServletPath() – palauttaa pyynnön URL-osoitteiden osan, joka kutsuu JSP:tä
- Merkkijono[] getParameterValues(merkkijonon nimi) – palauttaa merkkijonoobjektien joukon, joka sisältää pyyntöparametrin arvot
Esimerkiksi:
Alla olevassa esimerkissä käytämme erilaisia menetelmiä pyyntöobjektin avulla
<%@ 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>"); } %>
Koodin selitys:
Koodirivi 17: Pyyntöobjektin avulla saamme kyseisen istunnon istuntoobjektin ja tämän istunnon objektiarvon
Koodirivi 19: Pyyntöobjektia käyttämällä saamme kyseisen istunnon i.een_US locale -asetuksen tälle JSP:lle.
Koodirivi 21: Pyyntöobjektin avulla saamme polkutiedot kyseiselle JSP:lle. Tässä tapauksessa se on tyhjä, koska URL-osoitteelle ei ole mainittu polkua.
Koodirivi 23: Pyyntöobjektia käyttämällä saamme kontekstipolun eli juuripolun
Koodirivi 25: Pyyntöobjektin avulla saamme palvelimen nimen.
Koodirivi 27: Pyyntöobjektin avulla saamme palvelinportin.
Koodirivit 29-35: Pyyntöobjektia käyttämällä saamme otsikon nimiä, jotka tulevat esiin luettelona, ja siten saamme kaikki otsikkoarvot otsikon nimissä.
Tässä saamme kaikki otsikkoarvot muodossa a Cookie, isäntä, yhteys, hyväksy kieli, hyväksy koodaus.
Kun suoritat yllä olevan koodin, saat seuraavan tulosteen:
ulostulo:
Saamme sarjan arvoja, kuten istunnon nimi, aluenimi, polun nimi, palvelimen nimi, portin nimi, isäntä, kontekstipolku ja kaikki sen otsikkoarvot. JSP.
JSP-palvelinvastaus
- Kun pyyntö käsitellään ja sitten vastaus luodaan verkkopalvelimelta. Se koostuu tilarivistä, vastausotsikoista, tyhjästä rivistä ja asiakirjasta.
- Se on HTTPServletResponseclass-objekti, joka on vastausobjekti.
- Tilarivi on HTML-versio.
Vastausten otsikot JSP:ssä
JSP:n vastausotsikot mainitaan alla:
Ylätunniste | Descriptioni |
---|---|
allow | Se määrittää pyyntömenetelmät, kuten GET, POST, jota palvelin pyytää |
Välimuistin hallinta | Vastausasiakirja voidaan tallentaa välimuistiin. Se voi olla julkinen, yksityinen ja ilman välimuistia. Mikään välimuisti ei määrää, että asiakirjaa ei saa tallentaa välimuistiin |
Yhteys | Se neuvoo, tuleeko selaimen käyttää tallennettuja HTTPConnections-yhteyksiä vai ei. Sulje arvo tarkoittaa, että selaimen ei pitäisi käyttää pysyviä yhteyksiä HTTPConnectionsissa ja "keep-alive" tarkoittaa pysyvien yhteyksien käyttöä |
Sisältö-asetelma | Kysy käyttäjältä, tallennetaanko vastaus levylle vai ei |
Sisällön koodaus | Sivu on koodattava lähetyksen aikana |
Sisällön pituus | Tavujen määrä vastauksessa |
Sisältötyyppi | Se määrittää MIME-vastauksen tyypin |
Vanhenee | Määrittää, milloin sisältö on katsottava vanhentuneeksi, eikä sitä saa tallentaa välimuistiin |
Viimeksi muokattu | Se osoittaa, milloin asiakirjaa on viimeksi muokattu |
Sijainti | Se tulee sisällyttää kaikkiin vastauksiin, joiden tilakoodi on 300 tilakoodina |
virkistää | Se määrittää, kuinka päivitetty sivu löytyy. |
Yritä uudelleen | Sitä voidaan käyttää 503-vastauksen kanssa kertomaan asiakkaalle, kuinka pian se voi toistaa pyynnön |
Aseta eväste | Määrittää sivuun liittyvän evästeen |
HTTP-vastausotsikkomenetelmät JSP:ssä
Seuraavat ovat menetelmät JSP:ssä käyttäen vastausobjektia:
- Merkkijono encodeRedirectURL(merkkijono URL) – koodaa URL-osoitteen redirectURL-menetelmällä.
- Merkkijono encodeURL(String URL) – koodaa URL-osoitteen lisäämällä istuntotunnuksen.
- Boolean sisältää Otsikko(merkkijonon nimi) – se sisältää otsikon JSP:ssä vai ei.
- Boolen isCommited() – onko vastaus tehty vai ei.
- Void addCookie (Cookie cookie) – lisää evästeen vastaukseen
- Void addDateHeader (merkkijonon nimi, merkkijonon arvo) – lisää vastauksen otsikon päivämäärän nimen ja arvon
- Void addHeader (merkkijonon nimi, merkkijonon arvo) – lisää vastauksen otsikon, jossa on nimi ja arvo
- Void addIntHeader(merkkijonon nimi, int-arvo) – lisää vastauksen otsikon, jossa on nimi ja kokonaislukuarvo
- Tyhjä huuhteluBuffer() - pakottaa puskurin sisällön tulostamaan asiakkaalle.
- Void reset() – tyhjentää tiedot puskurista.
- Void resetBuffer - tyhjentää vastauksen sisältöpuskurin tyhjentämättä tilakoodeja.
- Void sendError(intsc,Stringmsg) – lähettää asiakkaalle virhevastauksen tilakoodilla.
- Void sendRedirect (merkkijonon sijainti) – lähettää tilapäisen uudelleenohjausvastauksen asiakkaalle.
- Tyhjä asetettuBufferKoko (int koko) - asettaa rungon puskurin koon
- Void setCharacterEncoding (merkkijono) – asettaa merkkikoodauksen
- Void setContentType (merkkijonotyyppi) – määrittää vastauksen sisältötyypin
- Void setContentLength(intlen) – määrittää vastauksen sisällön pituuden
- Void setLocale(Locale lcl) – määrittää vastauksen aluetyypin
- Void setStatus(intsc) – asettaa vastauksen tilakoodin
Esimerkiksi:
Tässä esimerkissä käsittelemme erilaisia menetelmiä 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>
Koodin selitys:
Koodirivi 13: Käyttämällä vastausobjektia saamme tämän JSP-istunnon locale-objektin
Koodirivi 15: Käyttämällä vastausobjektia flushbufferia käytetään puskurin sisällön pakottamiseksi asiakkaalle
Koodirivi 16: Käyttämällä vastausobjektia saamme kirjoitusobjektin, joka saa ulostulon lähtövirrassa
Koodirivi18: Käyttämällä vastausobjektia saamme sisältötyypin eli MIME-tyypin vastausobjektin
Koodirivi 21: Käyttämällä vastausobjektia sitä käytetään automaattiseen lataukseen 5 sekunnin välein, kun 5 on asetettu toiseksi parametriksi
Kun suoritat yllä olevan koodin, saat seuraavan tulosteen:
lähtö:
- Täältä saamme ulostulon, koska tämä on getWriterin kirjoitusobjektista, joka antaa meille objektin ja voimme tulostaa tulosvirtaan.
- Saamme maa-asetuksen muodossa en_us ja sisältötyypin muodossa text/html
- Saamme merkistön ISO 8859:nä
- Tämän päivän päivämäärä nykyisenä päivämääränä.
JSP HTTP-tilakoodit
- Kun pyyntö on käsitelty, syntyy vastaus. Vastauksen tilarivi koostuu HTTP-versiosta, tilakoodista ja siihen liittyvästä viestistä.
- Viesti liittyy suoraan tilakoodiin ja HTTP-versioon, ja palvelin määrittää sen.
- Oletusarvoisesti 200 on asetettu tilakoodiksi JSP:ssä, joten meidän ei tarvitse määrittää erikseen.
- Voimme asettaa vastauksena.setStatus() -menetelmäksi
Koodit jakautuvat seuraaviin 5 luokkaan:
- 100-199 – Tässä asiakas ilmoittaa, että sen pitäisi vastata jollain toimenpiteellä
- 200-299 – Se tarkoittaa, että pyyntö on onnistunut
- 300-399 – Niitä käytetään tiedostoille, jotka on siirretty ja sisältävät yleensä uuden osoitteen osoittavan sijaintiotsikon
- 400-499 – Osoittaa asiakkaan tekemän virheen
- 500-599 – Osoittaa palvelimen aiheuttaman virheen
Alla on joitakin yleisiä tilakoodeja:
- 200 – Ilmaisee, että kaikki on hyvin
- 301 – Se on muuttanut pysyvästi
- 304 – Ei muokattu viimeisen muutoksen jälkeen
- 400 Virheellinen pyyntö
- 404 ei löydetty
- 405 – Menetelmää ei löydy
- 500 – Sisäinen palvelinvirhe
- 503 Palvelu ei ole käytettävissä
- 505 – HTTP-versiota ei tueta
HTTP-tilakoodimenetelmät JSP:ssä
Jotkut JSP:n tilakoodimenetelmistä on lueteltu alla:
- Public void setStatus(intstatusCode): Se asettaa tilakoodin, jonka haluamme asettaa kyseiselle JSP-sivulle. Tämä antaa meille viestin tilakoodista, joka on asetettu
- Julkinen void sendRedirect(String URL): Se tuottaa 302-vastauksen sekä sijaintiotsikon, joka antaa uuden asiakirjan URL-osoitteen
- Public void sendError(intcode,Stringmsg): Se lähettää tilakoodin tekstiviestin mukana ja muotoillaan HTML-dokumentin sisällä.
Esimerkiksi:
Tässä esimerkissä lähetämme virheilmoituksen JSP-sivulle eksplisiittisesti.
<%@ 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>
Koodin selitys:
Koodirivi 10: Vastausobjektia käyttämällä lähetämme virheen sivulle, jossa on kaksi parametria.
- Tilakoodi – Se voi olla mikä tahansa yllä olevista. Tässä tapauksessa olemme kuvanneet numeroa 404
- Viesti – Se voi olla mikä tahansa viesti, jonka haluamme näyttää virheen
Jos suoritat yllä olevan koodin, saat seuraavan tulosteen:
lähtö:
Täältä saamme virhekoodin 404, joka lähetettiin koodista ja näyttää myös "Guru-sivua ei löydy" -viestin, joka näkyy ulostulossa.
Yhteenveto
- Tässä artikkelissa olemme oppineet asiakkaan pyynnöstä ja palvelimen vastauksesta, kuinka pyyntö siepataan ja miten vastauksia käsitellään.
- JSP-toiminnot jotka käyttävät XML-syntaksin konstrukteja ohjaamaan servlet-moottorin toimintaa.
- Kun verkkosivua pyydetään, se lähettää tiedot web-palvelimelle HTTP-otsikossa.
- Kun pyyntö käsitellään ja sitten vastaus luodaan verkkopalvelimelta. Se koostuu tilarivistä, vastausotsikoista, tyhjästä rivistä ja asiakirjasta.
- Kun pyyntö on käsitelty, syntyy vastaus. Vastauksen tilarivi koostuu HTTP-versiosta, tilakoodista ja siihen liittyvästä viestistä.