JSP-klientforespørsel
⚡ Smart oppsummering
JSP-klientforespørsler og serverrespons bruker JSP-handlingselementer for å kontrollere servletmotoren. Nettleseren sender informasjon via HTTP-overskrifter, serveren returnerer en statuslinje og overskrifter, og HTTP-statuskoder rapporterer resultatet av hver forespørsel.

JSP-handlinger bruker konstruksjoner i XML-syntaks for å kontrollere oppførselen til servlet-motoren. Vi vil lære mer detaljert om ulike JSP-handlingselementer som klientforespørsel, serverrespons og HTTP-statuskoder.
JSP-klientforespørsel
- Når nettsiden blir forespurt, sender den informasjon til webserveren i HTTP-overskriften.
- Vi kan bruke denne informasjonen ved å bruke HTTPServletRequest-objektet.
- Informasjon sendt av nettleseren lagres i forespørselshodet til HTTP-forespørselen.
- Vi bruker forskjellige overskrifter for å sende informasjon til forespørselsobjektet.
Overskrifter i JSP
Ulike overskrifter i JSP er beskrevet nedenfor:
| Header | Tekniske beskrivelser | Eksempel |
|---|---|---|
| Aksepterer | Den spesifiserer MIME-typer som nettleseren eller andre klienter kan håndtere | Bilde/png eller bilde/jpeg |
| Godta-tegnsett | Den bruker tegnsettet som brukes av nettleseren for å vise informasjonen | ISO-8859-1 |
| Godta- Koding | Den spesifiserer type koding som håndteres av nettleseren | Gzip eller komprimere |
| Aksepter-språk | Den spesifiserer klientens spesifiserte språk | No,en_us |
| autorisasjon | Overskrift som brukes av klienter når de prøver å få tilgang til passordbeskyttede nettsider | |
| Tilkobling | Den indikerer om klienten kan håndtere vedvarende HTTP-tilkoblinger (nettleseren kan hente flere filer) | Holde i live |
| Innholdslengde | Gjelder for å legge inn forespørsler. Det gir størrelsen på postdata av byte | |
| Cookie | Returnerer informasjonskapsel til serveren (de som tidligere ble sendt til nettleseren) | |
| Host | Angir verten og porten til originalen URL | |
| Hvis endret siden | Det indikerer at det bare krever en side hvis den er endret eller modifisert | |
| Hvis uendret siden | Det indikerer at det bare krever en side hvis den ikke er endret eller modifisert | |
| referent | Indikerer URL å henvise URL side | |
| Bruker agent | Identifiserer nettleser eller klient som sender forespørsel |
HTTP-headermetoder i JSP
Følgende metoder brukes til å lese HTTP-overskriften på JSP-siden:
- Cookie[] getCookies() – returnerer en matrise som inneholder informasjonskapselobjekter som klienten har sendt
- Oppregning getAttributeNames() – inneholder oppregning av navn på attributter for forespørsel
- Oppregning getHeaderNames() – inneholder opplisting av navn på overskriften.
- Oppregning getParameterNames() – inneholder oppregning for å få parameternavn i forespørselen.
- HttpSession getSession() – returnerer gjeldende økt knyttet til forespørselen, eller hvis den ikke har en økt, vil den opprette en ny.
- Locale getLocale() – returnerer den foretrukne lokaliteten som klienten vil godta innhold i. Den har blitt tilordnet til svaret. Som standard vil verdien være standardlokaliteten til serveren.
- Objekt getAttribute(strengnavn) – returnerer verdien av navngitt attributt som et objekt.
- ServletInputStream getInputStream() – henter forespørselsteksten som binære data.
- String getAuthType() – returnerer navnet på autentiseringsskjemaet for å beskytte servlet
- String getCharacterEncoding() – returnerer navnet på tegnkodingen som brukes i forespørselens brødtekst.
- String getContentType() – returnerer MIME-typen for forespørselen.
- String getContextPath() – returnerer delen av forespørsels-URI angir kontekstbanen til URI
- String getHeader(strengnavn) – returnerer forespørselshodet som en streng
- String getMethod() – returnerer navnet på HTTP-metoden som GET, POST
- String getParameter(strengnavn) – returnerer parameteren til forespørselen som en streng.
- String getPathInfo() – returnerer stiinformasjonen som er knyttet til URL
- String getQueryString() – returnerer spørrestrengen som er knyttet til forespørselen URL
- String getServletPath() – returnerer delen av URLs av forespørselen som kaller JSP-en
- String[] getParameterValues(Stringnavn) – returnerer matrisen av strengobjekter som inneholder verdiene som forespørselsparameteren har
Eksempel:
I eksemplet nedenfor bruker vi forskjellige metoder ved å bruke forespørselsobjekt
<%@ 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>"); } %>
Forklaring av koden:
Code Linje 17: Ved å bruke forespørselsobjektet får vi sesjonsobjektet for den spesielle økten, og vi får objektverdien til den økten
Code Linje 19: Ved å bruke request-objektet får vi språkinnstillingene for den bestemte økten, dvs. en_US språkinnstillinger for den JSP-en.
Code Linje 21: Ved å bruke request-objektet får vi stiinformasjon for den JSP-en. I dette tilfellet er den null, ettersom det ikke finnes noen sti for URL nevnt.
Code Linje 23: Ved å bruke forespørselsobjekt får vi kontekstbane, dvs. rotbane
Code Linje 25: Ved å bruke forespørselsobjektet får vi servernavnet.
Code Linje 27: Ved å bruke forespørselsobjekt får vi serverport.
Code Linje 29-35: Ved å bruke forespørselsobjekt får vi overskriftsnavn som kommer ut som opplisting, og derfor får vi alle overskriftsverdier i overskriftsnavnene.
I dette får vi alle overskriftsverdier som en Cookie, vert, tilkobling, godta språk, godta koding.
Når du kjører koden ovenfor, får du følgende utgang:
Utgang:
Vi får serien med verdier som øktnavn, lokalitetsnavn, banenavn, servernavn, portnavn, vert, kontekstbane og alle overskriftsverdiene til det JSP.
JSP-serverrespons
- Når en forespørsel behandles og deretter genereres svaret fra webserveren. Den består av en statuslinje, svarhoder, en tom linje og dokument.
- Det er objektet til HTTPServletResponse-klassen, som er et responsobjekt.
- Statuslinjen er en versjon av HTML.
Responshoder i JSP
Svarhoder i JSP er nevnt nedenfor:
| Header | Tekniske beskrivelser |
|---|---|
| Allow | Den spesifiserer forespørselsmetodene som GET, POST som serveren ber om |
| Cache-kontroll | Svardokumentet kan bufres. Det kan være offentlig, privat og uten cache. Ingen hurtigbuffer angir at dokumentet ikke skal bufres |
| Tilkobling | Den instruerer om nettleseren skal bruke savedHTTPConnections eller ikke. Nærverdi representerer at nettleseren ikke skal bruke persistent i HTTPConnections og "holde i live" betyr bruk av vedvarende tilkoblinger |
| Innholdsdisposisjon | For å spørre brukeren om svaret skal lagres på disken eller ikke |
| Innholdskoding | Siden må kodes under overføring |
| Innholdslengde | Antall byte i svaret |
| Innholdstype | Den spesifiserer MIME-typen for svar |
| Utløper | Angir til når innholdet skal anses som utdatert og ikke skal bufres |
| Sist endret | Den indikerer når dokumentet sist ble endret |
| Vårt kontor: | Den skal inkluderes med alle svar som har statuskode har 300 som statuskode |
| Forfriske | Den spesifiserer hvordan du finner den oppdaterte siden. |
| Prøv på nytt etter | Den kan brukes med 503-svar for å fortelle klienten hvor snart den kan gjenta forespørselen |
| Sett-cookie | Angir informasjonskapselen knyttet til siden |
HTTP-responshodemetoder i JSP
Følgende er metodene i JSP som bruker responsobjekt:
- StrengkodeOmdirigeringURL(Streng URL) - koder for URL i omdirigeringURL metoden.
- StrengkodingURL(Streng URL) - koder for URL ved å inkludere økt-ID.
- Boolean containsHeader(strengnavn) – den inneholder en overskrift i JSP eller ikke.
- Boolean isCommited() – svar har blitt forpliktet eller ikke.
- Ugyldig addCookie(Cookie cookie) – legger til informasjonskapsel i svaret
- Void addDateHeader(strengnavn, strengverdi) – legger til svaroverskriftsdatonavn og -verdi
- Void addHeader (strengnavn, strengverdi) – legger til svarhode med navn og verdi
- Void addIntHeader(strengnavn,int verdi) – legger til svarhode med navn og heltallsverdi
- Ugyldig spylingBuffer() - tvinger innhold i bufferen til utdata til klienten.
- Void reset() – sletter data i bufferen.
- Ugyldig tilbakestillingBuffer - sletter innholdsbufferen i svaret uten å slette statuskoder.
- Ugyldig sendError(int sc,String msg) – sender et feilsvar til klienten ved hjelp av statuskode.
- Void sendRedirect (strengplassering) – sender et midlertidig omdirigeringssvar til klienten.
- Ugyldig sattBufferStørrelse (int størrelse) – angir bufferstørrelsen på kroppen
- Void setCharacterEncoding (strengtegnsett) – setter tegnkoding
- Void setContentType(String type) – angir innholdstypen for svaret
- Ugyldig setContentLength(int len) – angir innholdslengden på svaret
- Void setLocale(Locale lcl) – angir lokalitetstypen for svaret
- Ugyldig settStatus(int sc) – angir statuskoden for svaret
Eksempel:
I dette eksemplet dekker vi forskjellige metoder: getLocale, flushbuffer og 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>
Forklaring av koden:
Code Linje 13: Ved å bruke responsobjekt får vi lokalitetsobjekt for denne JSP-økten
Code Linje 15: Ved å bruke responsobjekt brukes flushbuffer til å tvinge bufferinnholdet inn i klienten
Code Linje 16: Ved å bruke responsobjekt får vi writer-objekt som får utdata i utdatastrømmen
Code Linje 18: Ved å bruke responsobjekt får vi innholdstype dvs. MIME-type responsobjekt
Code Linje 21: Ved å bruke responsobjekt brukes det til å laste automatisk hvert 5. sekund ettersom 5 er satt som den andre parameteren
Når du kjører koden ovenfor, får du følgende utgang:
Utgang:
- Her får vi utdataene, slik som dette er fra writer-objektet fra getWriter, som gir oss objektet og vi kan sende ut i utdatastrømmen.
- Vi får lokaliteten som en_us og innholdstype som tekst/html
- Vi får tegnsett som ISO 8859
- Dagens dato som gjeldende dato.
JSP HTTP-status Codes
- Når forespørselen er behandlet, genereres svaret. Svarstatuslinjen består av HTTP-versjon, en statuskode og en tilhørende melding.
- Meldingen er direkte knyttet til statuskoden og HTTP-versjonen, og den bestemmes av serveren.
- Som standard er 200 satt som en statuskode i JSP, så vi trenger ikke å angi eksplisitt.
- Vi kan angi som response.setStatus() metode
Kodene faller i følgende 5 kategorier:
- 100-199 – Her angir klienten at den bør svare med noen handling
- 200-299 – Det betyr at forespørselen er vellykket
- 300-399 – De brukes for filer som har blitt flyttet og inkluderer vanligvis en plasseringsoverskrift som indikerer ny adresse
- 400-499 – Indikerer feil fra klienten
- 500-599 – Indikerer feil fra serveren
Noen av de vanlige statuskodene er nedenfor:
- 200 – Indikerer at alt er i orden
- 301 – Den har flyttet permanent
- 304 – Ikke endret siden siste endring
- 400 – Dårlig forespørsel
- 404 – Ikke funnet
- 405 – Metoden ble ikke funnet
- 500 - Intern serverfeil
- 503 – Tjenesten er utilgjengelig
- 505 – HTTP-versjon støttes ikke
HTTP-status Code Metoder i JSP
Noen av statuskodemetodene i JSP er oppført nedenfor:
- Offentlig void settStatus(int statusCode): Den setter statuskoden som vi vil angi på den JSP-siden. Dette vil gi oss meldingen om statuskoden som er satt
- Offentlig void sendRedirect(String URL): Den genererer 302-svar sammen med plasseringshodet som gir URL av det nye dokumentet
- Offentlig void sendError(int kode,String melding): Den sender statuskoden sammen med den korte meldingen, og den er formatert i HTML-dokumentet.
Eksempel:
I dette eksemplet sender vi en feilmelding til JSP-siden eksplisitt.
<%@ 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>
Forklaring av koden:
Code Linje 10: Ved å bruke responsobjekt sender vi feilen til en side med to parametere.
- Statuskode – Det kan være en av de ovennevnte. I dette tilfellet har vi beskrevet som 404
- Melding – Det kan være en hvilken som helst spesifikk melding som vi vil vise feilen
Hvis du kjører koden ovenfor, får du følgende utgang:
Utgang:
Her får vi feilkode 404, som ble sendt fra koden og viser også "Guru Meldingen «Siden ble ikke funnet» vises i utdataene.



