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.

  • 📨 Asiakaspyyntö: Selain lähettää tiedot palvelimelle HTTP-pyyntöjen otsikoissa, jotka luetaan HttpServletRequest-pyynnön kautta.
  • 🧾 Pyynnön otsikot: Hyväksy, Hyväksy-kieli, Yhteys, Eväste, Isäntä ja Käyttäjäagentti kuvaavat asiakasta.
  • 📤 Palvelimen vastaus: HttpServletResponse palauttaa tilarivin, vastauksen otsikot ja dokumentin.
  • 🔧 Vastausmenetelmät: addHeader(), sendRedirect(), sendError() ja setStatus() muokkaavat vastausta.
  • 🔢 Tila Codes: Ryhmitelty 100–599; yleisimpiä ovat 200, 301, 404 ja 500.
  • 🧪 Esimerkkejä: Toimivat JSP-sivut lukevat otsikot, asettavat päivitysvälin ja lähettävät 404-virheen.

JSP-asiakaspyyntö

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:

  1. Eväste[] getCookies() – palauttaa taulukon, joka sisältää asiakkaan lähettämät evästeobjektit
  2. Luettelo getAttributeNames() – sisältää luettelon attribuuttien nimistä pyynnöstä
  3. Luettelo getHeaderNames() – sisältää otsikkotietojen nimien luettelon.
  4. Luettelo getParameterNames() – sisältää luettelon parametrien nimien saamisesta pyynnössä.
  5. HttpSession getSession() – palauttaa pyyntöön liittyvän nykyisen istunnon tai jos sillä ei ole istuntoa, se luo uuden.
  6. Locale getLocale() – palauttaa ensisijaisen kielen, jolla asiakas hyväksyy sisällön. Se on määritetty vastaukselle. Oletuksena arvo on palvelimen oletuskieli.
  7. Objekti getAttribute (merkkijonon nimi) – palauttaa nimetyn attribuutin arvon objektina.
  8. ServletInputStream getInputStream() – hakee pyynnön rungon binääridatana.
  9. Merkkijono getAuthType() – palauttaa todennusmallin nimen servletin suojaamiseksi
  10. Merkkijono getCharacterEncoding() – palauttaa pyynnön rungossa käytetyn merkkikoodauksen nimen.
  11. Merkkijono getContentType() – palauttaa pyynnön rungon MIME-tyypin.
  12. Merkkijono getContextPath() – palauttaa pyynnön osan URI osoittaa URI:n kontekstipolun
  13. Merkkijono getHeader (merkkijonon nimi) – palauttaa pyynnön otsikon merkkijonona
  14. merkkijono getMethod() – palauttaa HTTP-menetelmän nimen, kuten GET, POST
  15. Merkkijono getParameter(merkkijonon nimi) – palauttaa pyynnön parametrin merkkijonona.
  16. Merkkijono getPathInfo() – palauttaa polkutiedot, jotka liittyvät kohteeseen URL
  17. Merkkijono getQueryString() – palauttaa pyyntöön liittyvän kyselymerkkijonon URL
  18. Merkkijono getServletPath() – palauttaa osan URLJSP:tä kutsuvan pyynnön osat
  19. 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:

JSP-asiakaspyyntö

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:

  1. Merkkijono encodeRedirectURL(Merkkijono URL) - koodaa URL uudelleenohjauksessaURL menetelmällä.
  2. Merkkijonon koodausURL(Merkkijono URL) - koodaa URL lisäämällä istuntotunnuksen.
  3. Boolean sisältää Otsikko(merkkijonon nimi) – se sisältää otsikon JSP:ssä vai ei.
  4. Boolen isCommited() – onko vastaus tehty vai ei.
  5. Mitätön addCookie(Eväste-eväste) – lisää vastaukseen evästeen
  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, jossa on nimi ja arvo
  8. Void addIntHeader(merkkijonon nimi, int-arvo) – lisää vastauksen otsikon, jossa on nimi ja kokonaislukuarvo
  9. Tyhjä huuhteluBuffer() - pakottaa puskurin sisällön tulostamaan asiakkaalle.
  10. Void reset() – tyhjentää tiedot puskurista.
  11. Void resetBuffer - tyhjentää vastauksen sisältöpuskurin tyhjentämättä tilakoodeja.
  12. Void sendError(int sc,String msg) – lähettää asiakkaalle virhevastauksen tilakoodilla.
  13. Void sendRedirect (merkkijonon sijainti) – lähettää tilapäisen uudelleenohjausvastauksen asiakkaalle.
  14. Tyhjä asetettuBufferKoko (int koko) - asettaa rungon puskurin koon
  15. Void setCharacterEncoding (merkkijono) – asettaa merkkikoodauksen
  16. Void setContentType (merkkijonotyyppi) – määrittää vastauksen sisältötyypin
  17. Void setContentLength(kokonaispituus) – määrittää vastauksen sisällön pituuden
  18. Void setLocale(Locale lcl) – määrittää vastauksen aluetyypin
  19. 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:

JSP-palvelinvastaus

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:

  1. Julkinen void setStatus(int tilaCode): Se asettaa tilakoodin, jonka haluamme asettaa kyseiselle JSP-sivulle. Tämä antaa meille viestin tilakoodista, joka on asetettu
  2. Julkinen void sendRedirect(String URL): Se luo 302-vastauksen sekä sijaintiotsikon, joka antaa URL uuden asiakirjan
  3. 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.

  1. Tilakoodi – Se voi olla mikä tahansa yllä olevista. Tässä tapauksessa olemme kuvanneet numeroa 404
  2. Viesti – Se voi olla mikä tahansa viesti, jonka haluamme näyttää virheen

Jos suoritat yllä olevan koodin, saat seuraavan tulosteen:

JSP HTTP -tila Codes

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

UKK

HttpServletRequest siirtää asiakkaan palvelimelle lähettämiä tietoja, kuten otsikoita ja parametreja. HttpServletResponse siirtää palvelimelta takaisin lähetettyjä tietoja, mukaan lukien tilakoodit, vastausotsikot ja dokumentin sisällön.

Tilakoodi 404 tarkoittaa, että pyydettyä resurssia ei löytynyt palvelimelta. JSP:ssä voit lähettää sen eksplisiittisesti funktiolla response.sendError(404, “message”) näyttääksesi mukautetun "ei löytynyt" -sivun.

Käytä request-objektia: getHeaderNames() palauttaa otsikkonimien luettelon ja getHeader(name) palauttaa kunkin otsikkoarvon. Iteroi nimet läpi lukeaksesi jokaisen asiakkaan lähettämän otsikon.

Tekoäly voi jäsentää otsikkolokeja, merkitä puuttuvia tai väärin määritettyjä otsikoita, havaita tietoturvaongelmia, kuten puuttuvaa välimuistin hallintaa, ja tiivistää liikennemalleja, auttaaping kehittäjät debuggaavat ja optimoivat pyyntöjen ja vastausten käsittelyn nopeammin.

Kyllä. Tekoäly voi luoda JSP-skriptilettejä, jotka lukevat pyyntöparametreja ja otsikoita, asettavat vastausotsikot ja lähettävät tilakoodeja selkokielisestä kuvauksesta, jonka kehittäjät sitten tarkistavat oikeellisuuden ja turvallisuuden varmistamiseksi.

Tiivistä tämä viesti seuraavasti: