JSP-toiminnot, jotka käyttävät XML-syntaksissa olevia rakenteita servlet-moottorin käyttäytymisen hallitsemiseksi. Opimme tarkemmin erilaisista JSP-toimintoelementeistä, kuten asiakaspyyntö, palvelimen vastaus, HTTP-tilakoodit.
Tässä opetusohjelmassa opit-
- JSP-asiakaspyyntö
- JSP-palvelimen vastaus
- JSP HTTP -tilakoodit
JSP-asiakaspyyntö
- Kun verkkosivua pyydetään, se lähettää tietoja WWW-palvelimelle HTTP-otsikossa.
- Voimme käyttää näitä tietoja HTTPServletRequest-objektilla.
- Selaimen lähettämät tiedot tallennetaan HTTP-pyynnön pyyntöotsikkoon.
- Lähetämme tietoja pyyntöobjektiin eri otsikoiden avulla.
Eri otsikot kuvataan alla:
Otsikko | Kuvaus | Esimerkki |
---|---|---|
Hyväksyä | Se määrittää MIME-tyypit, joita selain tai muut asiakkaat voivat käsitellä | Kuva / png tai kuva / JPEG.webp |
Hyväksy-merkistö | 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 koodauksen tyypin | Gzip tai pakkaa |
Hyväksy kieli | Se määrittää asiakkaiden määrittelemän kielen | En, en_us |
Valtuutus | Otsikko, jota asiakkaat käyttävät yrittäessään käyttää salasanasuojattuja verkkosivuja | |
Yhteys | Se osoittaa, pystyykö asiakas käsittelemään pysyviä HTTP-yhteyksiä (selain voi hakea useita tiedostoja) | Pitää hengissä |
Sisällön pituus | Sovelletaan pyyntöjen lähettämiseen. Se antaa tavujen postitietojen koon | |
Eväste | Palauttaa evästeen palvelimelle (aiemmin selaimeen lähetetyt) | |
Isäntä | Määrittää alkuperäisen URL-osoitteen isännän ja portin | |
Jos sitä on muutettu | Se osoittaa, että se vaatii vain sivun, jos sitä on muutettu tai muokattu | |
Jos sitä ei ole muutettu | Se osoittaa, että se vaatii sivun vain, jos sitä ei ole muutettu tai muokattu | |
Viittaaja | Osoittaa viittaavan URL-sivun URL-osoitteen | |
Käyttäjä agentti | Tunnistaa selaimen tai asiakkaan pyynnön |
Seuraavia menetelmiä käytetään HTTP-otsikon lukemiseen JSP-sivulla:
- Cookie [] getCookies () - palauttaa taulukon, joka sisältää asiakkaan lähettämät evästeobjektit
- Enumeration getAttributeNames () - sisältää luettelon attribuuttien nimistä pyynnölle
- Enumeration getHeaderNames () - sisältää otsikkojen nimien luettelon.
- Enumerointi getParameterNames () - sisältää luettelon parametrinimien 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, johon asiakas hyväksyy sisällön. Se on määritetty vastaukselle. Oletusarvoisesti arvo on palvelimen oletusarvo.
- Object getAttribute (String name) - palauttaa nimetyn attribuutin arvon objektina.
- ServletInputStreamgetInputStream () - palauttaa pyynnön rungon binaaritiedona.
- String getAuthType () - palauttaa todennustavan nimen servlet- sovelluksen suojaamiseksi
- String getCharacterEncoding () - palauttaa pyynnön rungossa käytetyn merkkikoodauksen nimen.
- String getContentType () - palauttaa pyynnön MIME-tyypin rungon.
- Merkkijono getContextPath () - palauttaa pyynnön URI: n osan, joka osoittaa URI: n kontekstipolun
- String getHeader (String name) - palauttaa pyynnön otsikon merkkijonona
- String getMethod () - palauttaa HTTP-menetelmän nimen, kuten GET, POST
- String getParameter (String name) - palauttaa pyynnön parametrin merkkijonona.
- String getPathInfo () - palauttaa URL-osoitteeseen liittyvät polkutiedot
- String getQueryString () - palauttaa kyselyn URL-osoitteeseen liittyvän kyselymerkkijonon
- String getServletPath () - palauttaa pyynnön URL-osoitteiden osan, joka kutsuu JSP: n
- String [] getParameterValues (String name) - palauttaa jono-objektijoukon, joka sisältää arvot, jotka pyynnön parametri on
Esimerkki:
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. *"%>Client Request Guru JSP Client Request Guru JSP
<%HttpSession gurusession = request.getSession ();out.print (" guru header guru header arvo (t) ");Locale gurulocale = request.getLocale ();out.print (" Istunnon nimi on " + gurusession + " td.> ");Merkkijonopolku = request.getPathInfo ();out.print (" Kielen nimi on " + gurulocale + " ");Merkkijono lpath = request.get ();out.print (" Polun nimi on " + polku + " ");Merkkijonon palvelimen nimi = request.getServerName ();out.print (" Kontekstipolku on " + lipath + " ");int-porttinimi = request.getServerPort ();out.print (" Palvelimen nimi on " + palvelimen nimi + " ");Listaus hnames = request.getHeaderNames ();while (hnames.hasMoreElements ()) {Merkkijono paramName = (Merkkijono) hnames.nextElement ();out.print (" Palvelinportti on " + portin nimi + " ");}%> " + paramNimi + " ");Merkkijono paramValue = request.getHeader (paramName);out.println ("" + paramValue + "
Koodin selitys:
Koodirivi 17: Pyyntöobjektia käyttämällä haemme kyseisen istunnon istuntoobjektin ja saamme kyseisen istunnon objektiarvon
Koodirivi 19: Pyyntöobjektin avulla saamme kyseisen JSP: n kyseisen istunnon i.een_US-kielen locale.
Koodirivi 21: Pyyntöobjektia käyttämällä saamme polun tietoja tälle JSP: lle. Tässä tapauksessa se on tyhjä, koska mainitulle URL-osoitteelle ei ole polkua.
Koodirivi 23: Pyyntöobjektia käyttämällä saamme kontekstipolun eli juuripolun
Koodirivi 25: Pyyntöobjektia käyttämällä saamme palvelimen nimen.
Koodirivi 27: Pyyntöobjektia käyttämällä saamme palvelinportin.
Koodirivi 29-35: Pyyntöobjektia käyttämällä saamme otsikkojen nimet, jotka ilmestyvät luettelona, ja siten saamme kaikki otsikkojen arvot otsikkojen nimissä.
Tässä saamme kaikki otsikkotiedot evästeinä, isäntänä, yhteyksiä, hyväksymme kielen, hyväksymme koodauksen.
Kun suoritat yllä olevan koodin, saat seuraavan tuloksen:
Tuotos :
Saamme sarjan arvoja, kuten istunnon nimi, kielen nimi, polun nimi, palvelimen nimi, portin nimi, isäntä, kontekstipolku ja kaikki kyseisen JSP: n otsikkoarvot.
JSP-palvelimen vastaus
- Kun pyyntö käsitellään ja vastaus generoidaan sitten Web-palvelimelta. Se koostuu tilarivistä, vastausotsikoista, tyhjästä rivistä ja dokumentista.
- Se on HTTPServletResponseclass-objekti, joka on vastausobjekti.
- Tilarivi on HTML-versio.
Vastausotsikot mainitaan alla:
Otsikko | Kuvaus |
---|---|
Sallia | Se määrittää palvelimen pyytämät pyyntötavat, kuten GET, POST |
Välimuistin hallinta | Vastausasiakirja voidaan tallentaa välimuistiin. Se voi olla julkinen, yksityinen eikä välimuistia. Mikään välimuisti ei määritä, että asiakirjaa ei tule tallentaa välimuistiin |
Yhteys | Siinä neuvotaan, pitäisikö selaimen käyttää tallennettuja HTTP-yhteyksiä vai ei. Sulje-arvo tarkoittaa, että selaimen ei tule käyttää pysyvää HTTP-yhteyksissä, ja "pidä hengissä" tarkoittaa pysyvien yhteyksien käyttöä |
Sisältö | Jos haluat 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ää vastauksen MIME-tyypin |
Vanhenee | Määrittää, milloin sisältöä pidetään vanhentuneena eikä sitä tulisi tallentaa välimuistiin |
Viimeksi muokattu | Se osoittaa, milloin asiakirjaa viimeksi muokattiin |
Sijainti | Se tulisi sisällyttää kaikkiin vastauksiin, joiden tilakoodi on 300 tilakoodina |
virkistää | Se määrittää kuinka löytää päivitetty sivu. |
Yritä uudelleen | Sitä voidaan käyttää 503 vastauksella kertomaan asiakkaalle, kuinka pian se voi toistaa pyynnön |
Aseta eväste | Määrittää sivulle liitetyn evästeen |
Seuraavassa on vasteobjektia käyttävät menetelmät:
- String encodeRedirectURL (String URL) - koodaa URL-osoitteen redirectURL-menetelmällä.
- String encodeURL (String URL) - koodaa URL-osoitteen sisällyttämällä istunnon tunnuksen.
- Totuusarvo sisältääHeader (String name) - se sisältää otsikon JSP: ssä tai ei.
- Boolean isCommited () - vastaus on tehty tai ei.
- Void addCookie (evästeeväste) - 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 nimen ja arvon kanssa
- Void addIntHeader (Merkkijonon nimi, int-arvo) - lisää vastauksen otsikon nimen ja kokonaisluvun kanssa
- Void flushBuffer () - pakottaa puskurissa olevan sisällön asiakkaan ulostuloon.
- Void reset () - tyhjentää tiedot puskurista.
- Void resetBuffer - tyhjentää sisällön puskurin vastauksessa tyhjentämättä tilakoodeja.
- Void sendError (intsc, Stringmsg) - lähettää virheviestin asiakkaalle tilakoodin avulla.
- Void sendRedirect (String location) - lähettää tilapäisen uudelleenohjausvasteen asiakkaalle.
- Void setBufferSize (int-koko) - määrittää rungon puskurikoon
- Void setCharacterEncoding (merkkijonosarja) - asettaa merkkikoodauksen
- Void setContentType (String type) - määrittää vastauksen sisältötyypin
- Void setContentLength (intlen) - määrittää vastauksen sisällön pituuden
- Void setLocale (Locale lcl) - asettaa vastauksen kielityypin
- Void setStatus (intsc) - asettaa vastauksen tilakoodin
Esimerkki:
Tässä esimerkissä käsitellään 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. *"%>Guru-toimintavaste Guru-vastaus
<%Locale lcl = response.getLocale ();out.println ("Kielivalinta on: + lcl + "\ n");response.flushBuffer ();PrintWriter output = vastaus.getWriter ();output.println ("Tämä on kirjoittajaobjektilta");Merkkijonotyyppi = response.getContentType ();out.println ("Sisältötyyppi: + type + "\ n");// Aseta päivityksen, automaattisen latauksen aika 5 sekunniksiresponse.setIntHeader ("Päivitä", 5);// Hae nykyinen aikaPäivämäärä dt = uusi päivämäärä ();out.println ("Päivän päivämäärä on: + dt.toString () + "\ n");%>
Koodin selitys:
Koodirivi 13: Vastausobjektia käyttämällä saadaan tämän JSP-istunnon locale-objekti
Koodirivi 15: Vastaobjektin avulla flushbufferia käytetään puskurisisällön pakottamiseen asiakkaaseen
Koodirivi 16: Vastausobjektia käyttämällä saamme kirjoittajaobjektin, joka saa tuotoksen lähtövirtaan
Koodirivi 18: Vastausobjektia käytettäessä saadaan sisältötyyppi eli vastausobjektin MIME-tyyppi
Koodirivi 21: Vastausobjektia käyttämällä sitä käytetään automaattiseen lataukseen 5 sekunnin välein, kun 5 on asetettu toiseksi parametriksi
Kun suoritat yllä olevan koodin, saat seuraavan tuloksen:
Tuotos:
- Täältä saamme lähdön, koska tämä on getWriterin kirjoittajaobjektista, joka antaa meille objektin ja voimme tulostaa lähtövirrassa.
- Saamme kielen en_us ja sisältötyypin tekstinä / html
- Saamme merkin ISO 8859 -standardina
- Tämän päivän päivämäärä nykyisenä päivämääränä.
JSP HTTP -tilakoodit
- Kun pyyntö on käsitelty, vastaus luodaan. Vasteen tilarivi koostuu HTTP-versiosta, tilakoodista ja siihen liittyvästä sanomasta.
- Viesti liittyy suoraan tilakoodiin ja HTTP-versioon, ja palvelin määrittää sen.
- Oletuksena 200 on asetettu tilakoodiksi JSP: ssä, joten meidän ei tarvitse asettaa sitä erikseen.
- Voimme asettaa response.setStatus () -menetelmäksi
Koodit kuuluvat seuraaviin 5 luokkaan:
- 100-199 - Tässä asiakas ilmoittaa, että sen pitäisi vastata jollakin toiminnalla
- 200–299 - Se tarkoittaa, että pyyntö on onnistunut
- 300-399 - Niitä käytetään siirrettyihin tiedostoihin, ja ne sisältävät yleensä uuden osoitteen osoittavan sijainnin otsikon
- 400-499 - Ilmaisee asiakkaan virheen
- 500-599 - Ilmaisee palvelimen virheen
Jotkut yleisimmistä tilakoodeista ovat alla:
- 200 - Osoittaa, että kaikki on hyvin
- 301 - Se on muuttanut pysyvästi
- 304 - Ei muutettu edellisen 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
Jotkut sen menetelmistä on lueteltu alla:
- Julkinen void setStatus (intstatusCode)
Se asettaa tilakoodin sen mukaan, minkä haluamme asettaa kyseiselle JSP-sivulle.Tämä antaa meille ilmoituksen tilakoodista, joka on asetettu
- Public void sendRedirect (String URL)
Se tuottaa 302 vastausta yhdessä uuden otsikon URL-osoitteen antavan sijaintiotsikon kanssa
- Julkinen tyhjä sendError (intcode, Stringmsg)
Se lähettää tilakoodin lyhytsanoman mukana ja se muotoillaan HTML-dokumenttiin.
Esimerkki:
Tässä esimerkissä lähetämme virheen JSP-sivulle nimenomaisesti.
<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%>Gurun tilakoodi <% response.sendError (404, "Guru-sivua ei löydy"); %>
Koodin selitys:
Koodirivi 10: Vastausobjektia käyttämällä lähetämme virheen sivulle, jolla on kaksi parametria.
- Tilakoodi - se voi olla mikä tahansa yllä olevista. Tässä tapauksessa olemme kuvanneet 404
- Viesti - se voi olla mikä tahansa tietty viesti, jonka haluamme näyttää virheen
Jos suoritat yllä olevan koodin, saat seuraavan tuloksen:
Tuotos:
Täällä saamme virhekoodin 404, joka lähetettiin koodista ja näyttää myös "Guru-sivua ei löydy" -sanoman, joka näkyy lähdössä.
Yhteenveto:
- Tässä artikkelissa olemme oppineet asiakkaan pyynnöstä ja palvelimen vastauksista siitä, kuinka pyyntö siepataan ja miten vastauksia manipuloidaan.
- Olemme myös oppineet HTTP-tilakoodeista näyttämään virhekoodit tai onnistumiskoodit tietylle tiedostolle.