JSP-klientforespørsel
JSP-handlinger som bruker konstruksjoner i XML-syntaks for å kontrollere oppførselen til servletmotoren. Vi vil lære mer i detalj om ulike JSP Action-elementer som klientforespørsel, serversvar, 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 den opprinnelige URL-adressen | |
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-en til henvisnings-URL-siden | |
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 oppregning av navn på overskrift.
- Oppregning getParameterNames() – inneholder oppregning for å få parameternavn i forespørselen.
- HttpSessiongetSession() – 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.
- ServletInputStreamgetInputStream() – henter kroppen av forespørselen 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 baneinformasjonen knyttet til URL-en
- String getQueryString() – returnerer søkestrengen som er knyttet til forespørsels-URLen
- String getServletPath() – returnerer den delen av URL-ene til forespørselen som kaller JSP
- 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:
Kodelinje 17: Ved å bruke forespørselsobjektet får vi sesjonsobjektet for den spesielle økten, og vi får objektverdien til den økten
Kodelinje 19: Ved å bruke forespørselsobjektet får vi lokaliteten for den spesielle sesjonen i.een_US-lokaliteten for den JSP-en.
Kodelinje 21: Ved å bruke forespørselsobjektet får vi baneinformasjon for den JSP-en. I dette tilfellet er den null siden det ikke er nevnt noen bane for URL.
Kodelinje 23: Ved å bruke forespørselsobjekt får vi kontekstbane, dvs. rotbane
Kodelinje 25: Ved å bruke forespørselsobjektet får vi servernavnet.
Kodelinje 27: Ved å bruke forespørselsobjekt får vi serverport.
Kodelinje 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:
Produksjon:
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 HTTPServletResponseclass, 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:
- String encodeRedirectURL(String URL) – koder URL-en i redirectURL-metoden.
- String encodeURL(String URL) – koder URL-en ved å inkludere økt-ID.
- Boolean containsHeader(strengnavn) – den inneholder en overskrift i JSP eller ikke.
- Boolean isCommited() – svar har blitt forpliktet eller ikke.
- Void addCookie (Cookie-informasjonskapsel) – 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.
- Void sendError(intsc,Stringmsg) – 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
- Void setContentLength(intlen) – angir innholdslengden på svaret
- Void setLocale(Locale lcl) – angir lokalitetstypen for svaret
- Void setStatus(intsc) – angir statuskoden for svaret
Eksempel:
I dette eksemplet dekker vi forskjellige metoder 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.*" %> <!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:
Kodelinje 13: Ved å bruke responsobjekt får vi lokalitetsobjekt for denne JSP-økten
Kodelinje 15: Ved å bruke responsobjekt brukes flushbuffer til å tvinge bufferinnholdet inn i klienten
Kodelinje 16: Ved å bruke responsobjekt får vi writer-objekt som får utdata i utdatastrømmen
Kodelinje 18: Ved å bruke responsobjekt får vi innholdstype dvs. MIME-type responsobjekt
Kodelinje 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 output da dette er fra writer object fra getWriter, som gir oss objekt og vi kan output i output stream.
- 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-statuskoder
- 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-statuskodemetoder i JSP
Noen av statuskodemetodene i JSP er oppført nedenfor:
- Offentlig void setStatus(intstatusCode): 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 lokasjonsoverskriften som gir URL-en til det nye dokumentet
- Public void sendError(intcode,Stringmsg): 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:
Kodelinje 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 som 404, som ble sendt fra koden og viser også "Guru Page not found"-meldingen som vises i utdataene.
Sammendrag
- I denne artikkelen har vi lært om klientforespørsel og serverrespons om hvordan forespørselen blir fanget opp og hvordan svarene manipuleres.
- JSP-handlinger som bruker konstruksjoner i XML-syntaks for å kontrollere oppførselen til servletmotoren.
- Når nettsiden blir forespurt, sender den informasjon til webserveren i HTTP-overskriften.
- Når en forespørsel behandles og deretter genereres svaret fra webserveren. Den består av en statuslinje, svarhoder, en tom linje og dokument.
- Når forespørselen er behandlet, genereres svaret. Svarstatuslinjen består av HTTP-versjon, en statuskode og en tilhørende melding.