JSP-asiakaspyyntö, palvelimen vastaus & HTTP-tilakoodit

Sisällysluettelo:

Anonim

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:

  1. Cookie [] getCookies () - palauttaa taulukon, joka sisältää asiakkaan lähettämät evästeobjektit
  2. Enumeration getAttributeNames () - sisältää luettelon attribuuttien nimistä pyynnölle
  3. Enumeration getHeaderNames () - sisältää otsikkojen nimien luettelon.
  4. Enumerointi getParameterNames () - sisältää luettelon parametrinimien saamisesta pyynnössä.
  5. HttpSessiongetSession () - palauttaa pyyntöön liittyvän nykyisen istunnon tai jos sillä ei ole istuntoa, se luo uuden.
  6. Locale getLocale () - palauttaa ensisijaisen kielen, johon asiakas hyväksyy sisällön. Se on määritetty vastaukselle. Oletusarvoisesti arvo on palvelimen oletusarvo.
  7. Object getAttribute (String name) - palauttaa nimetyn attribuutin arvon objektina.
  8. ServletInputStreamgetInputStream () - palauttaa pyynnön rungon binaaritiedona.
  9. String getAuthType () - palauttaa todennustavan nimen servlet- sovelluksen suojaamiseksi
  10. String getCharacterEncoding () - palauttaa pyynnön rungossa käytetyn merkkikoodauksen nimen.
  11. String getContentType () - palauttaa pyynnön MIME-tyypin rungon.
  12. Merkkijono getContextPath () - palauttaa pyynnön URI: n osan, joka osoittaa URI: n kontekstipolun
  13. String getHeader (String name) - palauttaa pyynnön otsikon merkkijonona
  14. String getMethod () - palauttaa HTTP-menetelmän nimen, kuten GET, POST
  15. String getParameter (String name) - palauttaa pyynnön parametrin merkkijonona.
  16. String getPathInfo () - palauttaa URL-osoitteeseen liittyvät polkutiedot
  17. String getQueryString () - palauttaa kyselyn URL-osoitteeseen liittyvän kyselymerkkijonon
  18. String getServletPath () - palauttaa pyynnön URL-osoitteiden osan, joka kutsuu JSP: n
  19. 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

guru header guru header arvo (t) <%HttpSession gurusession = request.getSession ();out.print (" Istunnon nimi on " + gurusession + " ");Locale gurulocale = request.getLocale ();out.print (" Kielen nimi on " + gurulocale + " ");Merkkijonopolku = request.getPathInfo ();out.print (" Polun nimi on " + polku + " ");Merkkijono lpath = request.get ();out.print (" Kontekstipolku on " + lipath + " ");Merkkijonon palvelimen nimi = request.getServerName ();out.print (" Palvelimen nimi on " + palvelimen nimi + " ");int-porttinimi = request.getServerPort ();out.print (" Palvelinportti on " + portin nimi + " ");Listaus hnames = request.getHeaderNames ();while (hnames.hasMoreElements ()) {Merkkijono paramName = (Merkkijono) hnames.nextElement ();out.print (" " + 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:

  1. String encodeRedirectURL (String URL) - koodaa URL-osoitteen redirectURL-menetelmällä.
  2. String encodeURL (String URL) - koodaa URL-osoitteen sisällyttämällä istunnon tunnuksen.
  3. Totuusarvo sisältääHeader (String name) - se sisältää otsikon JSP: ssä tai ei.
  4. Boolean isCommited () - vastaus on tehty tai ei.
  5. Void addCookie (evästeeväste) - lisää evästeen vastaukseen
  6. Void addDateHeader (Merkkijonon nimi, Merkkijonon arvo) - lisää vastauksen otsikon päivämäärän nimen ja arvon
  7. Void addHeader (Merkkijonon nimi, Merkkijonon arvo) - lisää vastauksen otsikon nimen ja arvon kanssa
  8. Void addIntHeader (Merkkijonon nimi, int-arvo) - lisää vastauksen otsikon nimen ja kokonaisluvun kanssa
  9. Void flushBuffer () - pakottaa puskurissa olevan sisällön asiakkaan ulostuloon.
  10. Void reset () - tyhjentää tiedot puskurista.
  11. Void resetBuffer - tyhjentää sisällön puskurin vastauksessa tyhjentämättä tilakoodeja.
  12. Void sendError (intsc, Stringmsg) - lähettää virheviestin asiakkaalle tilakoodin avulla.
  13. Void sendRedirect (String location) - lähettää tilapäisen uudelleenohjausvasteen asiakkaalle.
  14. Void setBufferSize (int-koko) - määrittää rungon puskurikoon
  15. Void setCharacterEncoding (merkkijonosarja) - asettaa merkkikoodauksen
  16. Void setContentType (String type) - määrittää vastauksen sisältötyypin
  17. Void setContentLength (intlen) - määrittää vastauksen sisällön pituuden
  18. Void setLocale (Locale lcl) - asettaa vastauksen kielityypin
  19. 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:

  1. Julkinen void setStatus (intstatusCode)

    Se asettaa tilakoodin sen mukaan, minkä haluamme asettaa kyseiselle JSP-sivulle.Tämä antaa meille ilmoituksen tilakoodista, joka on asetettu

  2. Public void sendRedirect (String URL)

    Se tuottaa 302 vastausta yhdessä uuden otsikon URL-osoitteen antavan sijaintiotsikon kanssa

  3. 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.

  1. Tilakoodi - se voi olla mikä tahansa yllä olevista. Tässä tapauksessa olemme kuvanneet 404
  2. 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.