JSP-asiakaspyyntö
⚡ Älykäs yhteenveto
JSP-asiakaspyyntö ja palvelimen vastaus käyttävät JSP-toimintoelementtejä servlet-moottorin ohjaamiseen. Selain lähettää tietoja HTTP-otsikoiden kautta, palvelin palauttaa tilarivin ja otsikot, ja HTTP-tilakoodit raportoivat kunkin pyynnön tuloksen.

JSP-toiminnot käyttävät XML-syntaksin rakenteita servlet-moottorin toiminnan ohjaamiseen. Opimme lisää 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 | Tuotetiedot | 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 isännän ja portin URL | |
| 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 URL viittaamisesta URL sivulla | |
| 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ää otsikkotietojen nimien luettelon.
- Luettelo getParameterNames() – sisältää luettelon parametrien nimien saamisesta pyynnössä.
- HttpSession getSession() – 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.
- ServletInputStream getInputStream() – hakee pyynnön rungon binääridatana.
- 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 polkutiedot, jotka liittyvät kohteeseen URL
- Merkkijono getQueryString() – palauttaa pyyntöön liittyvän kyselymerkkijonon URL
- Merkkijono getServletPath() – palauttaa osan URLJSP:tä kutsuvan pyynnön osat
- 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:
Code Rivi 17: Pyyntöobjektin avulla saamme kyseisen istunnon istuntoobjektin ja tämän istunnon objektiarvon
Code Rivi 19: Käyttämällä pyyntöobjektia saamme kyseisen istunnon kieliasetuksen, eli en_US kyseisen JSP:n kieliasetuksen.
Code Rivi 21: Käyttämällä pyyntöobjektia saamme kyseisen JSP:n polkutiedot. Tässä tapauksessa ne ovat null, koska polkua ei ole. URL mainitsi.
Code Rivi 23: Pyyntöobjektia käyttämällä saamme kontekstipolun eli juuripolun
Code Rivi 25: Pyyntöobjektin avulla saamme palvelimen nimen.
Code Rivi 27: Pyyntöobjektin avulla saamme palvelinportin.
Code Rivi 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:
lähtö:
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 HTTPServletResponse-luokan objekti, joka on vastausobjekti.
- Tilarivi on HTML-versio.
Vastausten otsikot JSP:ssä
JSP:n vastausotsikot mainitaan alla:
| Ylätunniste | Tuotetiedot |
|---|---|
| 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 uudelleenohjauksessaURL menetelmällä.
- Merkkijonon koodausURL(Merkkijono URL) - koodaa URL 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.
- Mitätön addCookie(Eväste-eväste) – lisää vastaukseen evästeen
- 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(int sc,String msg) – 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(kokonaispituus) – määrittää vastauksen sisällön pituuden
- Void setLocale(Locale lcl) – määrittää vastauksen aluetyypin
- Void setStatus(int sc) – asettaa vastauksen tilakoodin
Esimerkiksi:
Tässä esimerkissä käsittelemme eri metodeja: 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>
Koodin selitys:
Code Rivi 13: Käyttämällä vastausobjektia saamme tämän JSP-istunnon locale-objektin
Code Rivi 15: Käyttämällä vastausobjektia flushbufferia käytetään puskurin sisällön pakottamiseksi asiakkaalle
Code Rivi 16: Käyttämällä vastausobjektia saamme kirjoitusobjektin, joka saa ulostulon lähtövirrassa
Code Rivi 18: Käyttämällä vastausobjektia saamme sisältötyypin eli MIME-tyypin vastausobjektin
Code Rivi 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ässä saamme tulosteen, koska tämä on kirjoittajan objektista get-funktiostaWriter, joka antaa meille objektin ja voimme tulostaa sen tulostusvirrassa.
- 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 -tila Codes
- 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-tila Code JSP-menetelmät
Jotkut JSP:n tilakoodimenetelmistä on lueteltu alla:
- Julkinen void setStatus(int tilaCode): Se asettaa tilakoodin, jonka haluamme asettaa kyseiselle JSP-sivulle. Tämä antaa meille viestin tilakoodista, joka on asetettu
- Julkinen void sendRedirect(String URL): Se luo 302-vastauksen sekä sijaintiotsikon, joka antaa URL uuden asiakirjan
- Public void sendError(int koodi,String viesti): 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:
Code Rivi 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ässä saamme virhekoodin 404, joka lähetettiin koodista ja näyttää myös "Guru Tulosteessa näkyy viesti "Sivua ei löydy".



