JSP-klientanmodning
JSP-handlinger, der bruger konstruktioner i XML-syntaks til at kontrollere servlet-motorens opførsel. Vi vil lære mere detaljeret om forskellige JSP Action-elementer som klientanmodning, serversvar, HTTP-statuskoder.
JSP-klientanmodning
- Når websiden anmodes om, sender den information til webserveren i HTTP-headeren.
- Vi kan bruge disse oplysninger ved hjælp af HTTPServletRequest-objektet.
- Oplysninger sendt af browseren gemmes i anmodningshovedet på HTTP-anmodningen.
- Vi bruger forskellige overskrifter til at sende information til anmodningsobjektet.
Overskrifter i JSP
Forskellige overskrifter i JSP er beskrevet nedenfor:
Header | Produktbeskrivelse | Eksempel |
---|---|---|
Acceptere | Det specificerer MIME-typer, som browser eller andre klienter kan håndtere | Image/png eller image/jpeg |
Accepter-tegnsæt | Den bruger det tegnsæt, som browseren bruger til at vise oplysningerne | ISO-8859-1 |
Accepter- Kodning | Det specificerer typen af kodning, der håndteres af browseren | Gzip eller komprimere |
Accepter-sprog | Det specificerer klientens angivne sprog | En, en_us |
Tilladelse | Header brugt af klienter, når de forsøger at få adgang til adgangskodebeskyttede websider | |
Forbindelse | Det angiver, om klienten kan håndtere vedvarende HTTP-forbindelser (browser kan hente flere filer) | Holde i live |
Indholdslængde | Gælder for at sende anmodninger. Det giver størrelsen på postdata på bytes | |
Cookie | Returnerer cookie til serveren (dem, der tidligere blev sendt til browseren) | |
Host | Angiver værten og porten for den originale URL | |
Hvis ændret siden | Det angiver, at det kun kræver en side, hvis den er blevet ændret eller modificeret | |
Hvis uændret siden | Det angiver, at det kun kræver en side, hvis den ikke er blevet ændret eller modificeret | |
Henviser | Angiver URL-adressen for den henvisende URL-side | |
Bruger-agent | Identificerer browser eller klient, der fremsætter anmodning |
HTTP-headermetoder i JSP
Følgende metoder bruges til at læse HTTP-headeren på JSP-siden:
- Cookie[] getCookies() – returnerer et array, der indeholder cookie-objekter, som klienten har sendt
- Enumeration getAttributeNames() – indeholder opremsning af navne på attributter til anmodning
- Enumeration getHeaderNames() – indeholder opremsning af navne på overskrift.
- Enumeration getParameterNames() – indeholder opregning af at få parameternavne i anmodningen.
- HttpSessiongetSession() – returnerer den aktuelle session, der er knyttet til anmodningen, eller hvis den ikke har en session, vil den oprette en ny.
- Lokalitet getLocale() – returnerer den foretrukne lokalitet, som klienten vil acceptere indhold i. Den er blevet tildelt til svaret. Som standard vil værdien være serverens standardlokalitet.
- Objekt getAttribute(strengnavn) – returnerer værdien af navngivet attribut som et objekt.
- ServletInputStreamgetInputStream() – henter kroppen af anmodningen som binære data.
- String getAuthType() – returnerer navnet på godkendelsesskemaet for at beskytte servlet
- String getCharacterEncoding() – returnerer navnet på den tegnkodning, der bruges i anmodningens brødtekst.
- String getContentType() – returnerer MIME-typen af brødteksten for anmodningen.
- Streng getContextPath() – returnerer den del af anmodnings-URI, der angiver kontekststien til URI
- Streng getHeader(strengnavn) – returnerer anmodningshovedet som en streng
- String getMethod() – returnerer navnet på HTTP-metoden som GET, POST
- String getParameter(String name) – returnerer parameteren for anmodningen som en streng.
- String getPathInfo() – returnerer de stioplysninger, der er knyttet til URL'en
- String getQueryString() – returnerer den forespørgselsstreng, der er knyttet til anmodningens URL
- String getServletPath() – returnerer den del af URL'erne for anmodningen, der kalder JSP'en
- String[] getParameterValues(Stringnavn) – returnerer arrayet af strengobjekter, der indeholder de værdier, som anmodningsparameteren har
Eksempel:
I eksemplet nedenfor bruger vi forskellige metoder ved hjælp af anmodningsobjekt
<%@ 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 af koden:
Kodelinje 17: Ved at bruge anmodningsobjekt får vi sessionsobjektet for den pågældende session, og vi får objektværdien for den session
Kodelinje 19: Ved at bruge anmodningsobjektet får vi lokalitet for den pågældende session i.een_US landestandard for den JSP.
Kodelinje 21: Ved at bruge anmodningsobjektet får vi stioplysninger for den JSP. I dette tilfælde er den null, da der ikke er nogen sti til URL nævnt.
Kodelinje 23: Ved at bruge anmodningsobjekt får vi kontekststi, dvs. rodsti
Kodelinje 25: Ved at bruge anmodningsobjektet får vi servernavnet.
Kodelinje 27: Ved at bruge anmodningsobjekt får vi serverport.
Kodelinje 29-35: Ved at bruge anmodningsobjekt får vi headernavne, der kommer ud som opregning, og derfor får vi alle headerværdier i headernavnene.
I denne får vi alle overskriftsværdier som en Cookie, vært, forbindelse, acceptere sprog, acceptere kodning.
Når du udfører ovenstående kode, får du følgende output:
Produktion:
Vi får rækken af værdier som sessionsnavn, lokalitetsnavn, stinavn, servernavn, portnavn, vært, kontekststi og alle overskriftens værdier JSP.
JSP-serversvar
- Når en anmodning behandles, og derefter genereres svaret fra webserveren. Den består af en statuslinje, svaroverskrifter, en tom linje og dokument.
- Det er objektet for HTTPServletResponseclass, som er et responsobjekt.
- Statuslinjen er en version af HTML.
Response Headers i JSP
Svaroverskrifter i JSP er nævnt nedenfor:
Header | Produktbeskrivelse |
---|---|
Tillad | Det specificerer anmodningsmetoderne som GET, POST, som serveren anmoder om |
Cache-kontrol | Svardokumentet kan cachelagres. Det kan være offentligt, privat og uden cache. Ingen cache angiver, at dokumentet ikke skal cachelagres |
Forbindelse | Den instruerer om browseren skal bruge savedHTTPConnections eller ej. Tæt værdi repræsenterer, at browseren ikke bør bruge persistent i HTTPConnections, og "holde i live" betyder brug af vedvarende forbindelser |
Indholdsdisposition | At spørge brugeren, om svaret skal gemmes på disken eller ej |
Indholdskodning | Siden skal kodes under transmissionen |
Indholdslængde | Antal bytes i svaret |
Indholdstype | Den specificerer MIME-typen for svar |
Udløber | Angiver, hvornår indholdet skal betragtes som forældet og ikke skal cachelagres |
Sidst ændret | Det angiver, hvornår dokumentet sidst blev ændret |
Lokation | Den skal inkluderes i alle svar, der har statuskode har 300 som statuskode |
Opfrisk | Den specificerer, hvordan man finder den opdaterede side. |
Prøv igen - efter | Den kan bruges med 503-svar til at fortælle klienten, hvor hurtigt den kan gentage anmodningen |
Sæt-cookie | Angiver den cookie, der er knyttet til siden |
HTTP Response Header-metoder i JSP
Følgende er metoderne i JSP ved hjælp af responsobjekt:
- String encodeRedirectURL(String URL) – koder URL'en i redirectURL-metoden.
- String encodeURL(String URL) – koder URL'en ved at inkludere sessions-id.
- Boolean containsHeader(strengnavn) – den indeholder en header i JSP'en eller ej.
- Boolean isCommited() – svar er blevet begået eller ej.
- Void addCookie(Cookie-cookie) – føjer cookie til svaret
- Void addDateHeader (strengnavn, strengværdi) – tilføjer svaroverskriftsdatonavn og -værdi
- Void addHeader (strengnavn, strengværdi) – tilføjer svarheader med navn og værdi
- Void addIntHeader(String name,int value) – tilføjer svarheader med navn og heltalsværdi
- Ugyldig skylningBuffer() - tvinger indhold i bufferen til output til klienten.
- Void reset() – rydder data i bufferen.
- Ugyldig nulstillingBuffer - rydder indholdsbufferen i svaret uden at rydde statuskoder.
- Void sendError(intsc,Stringmsg) – sender et fejlsvar til klienten ved hjælp af statuskode.
- Void sendRedirect (strengplacering) – sender et midlertidigt omdirigeringssvar til klienten.
- Tomt sætBufferStørrelse (int størrelse) – indstiller bufferstørrelsen på kroppen
- Void setCharacterEncoding(String charset) – indstiller tegnkodning
- Void setContentType(String type) – indstiller indholdstypen for svaret
- Void setContentLength(intlen) – indstiller svarets indholdslængde
- Void setLocale(Locale lcl) – angiver lokalitetstypen for svaret
- Void setStatus(intsc) – indstiller statuskoden for svaret
Eksempel:
I dette eksempel dækker vi forskellige 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 af koden:
Kodelinje 13: Ved at bruge responsobjekt får vi lokalitetsobjekt for denne JSP-session
Kodelinje 15: Ved at bruge responsobjekt bruges flushbuffer til at tvinge bufferindholdet ind i klienten
Kodelinje 16: Ved at bruge responsobjekt får vi writer-objekt, som får output i outputstrømmen
Kodelinje 18: Ved at bruge responsobjekt får vi indholdstype dvs. MIME-type svarobjekt
Kodelinje 21: Ved at bruge responsobjektet bruges det til at autoloade hvert 5. sekund, da 5 er indstillet som den anden parameter
Når du udfører ovenstående kode, får du følgende output:
Output:
- Her får vi output, da dette er fra writer-objekt fra getWriter, som giver os objekt, og vi kan output i output-strømmen.
- Vi får lokaliteten som en_us og indholdstypen som tekst/html
- Vi får tegnsæt som ISO 8859
- Dagens dato som den aktuelle dato.
JSP HTTP-statuskoder
- Når anmodningen er behandlet, genereres svaret. Svarstatuslinjen består af HTTP-version, en statuskode og en tilhørende meddelelse.
- Meddelelsen er direkte forbundet med statuskoden og HTTP-versionen, og den bestemmes af serveren.
- Som standard er 200 indstillet som en statuskode i JSP, så vi behøver ikke at indstille det eksplicit.
- Vi kan indstille som response.setStatus() metode
Koderne falder i følgende 5 kategorier:
- 100-199 – Her angiver klienten, at den skal reagere med en handling
- 200-299 – Det betyder, at anmodningen er vellykket
- 300-399 - De bruges til filer, der er blevet flyttet og inkluderer normalt en placeringsoverskrift, der angiver ny adresse
- 400-499 – Indikerer fejl fra klienten
- 500-599 – Angiver fejl fra serveren
Nogle af de almindelige statuskoder er nedenfor:
- 200 – Indikerer, at alt er i orden
- 301 – Den er flyttet permanent
- 304 – Ikke ændret siden sidste ændring
- 400 – Dårlig anmodning
- 404 Ikke fundet
- 405 – Metoden blev ikke fundet
- 500 - Intern serverfejl
- 503 Service ikke tilgængelig
- 505 – HTTP-version understøttes ikke
HTTP-statuskodemetoder i JSP
Nogle af statuskodemetoderne i JSP er angivet nedenfor:
- Offentlig ugyldig sætStatus(intstatusKode): Den indstiller statuskoden, som vi vil indstille på den JSP-side. Dette vil give os beskeden om statuskoden, som er blevet indstillet
- Offentlig void sendRedirect(String URL): Det genererer 302-svar sammen med placeringsoverskriften, der giver URL-adressen til det nye dokument
- Public void sendError(intcode,Stringmsg): Den sender statuskoden sammen med den korte besked, og den er formateret inde i HTML-dokumentet.
Eksempel:
I dette eksempel sender vi en fejl til JSP-siden eksplicit.
<%@ 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 af koden:
Kodelinje 10: Ved at bruge responsobjektet sender vi fejlen til en side med to parametre.
- Statuskode – Det kan være en af ovenstående. I dette tilfælde har vi beskrevet som 404
- Besked – Det kan være en hvilken som helst specifik meddelelse, som vi ønsker at vise fejlen
Hvis du udfører ovenstående kode, får du følgende output:
Output:
Her får vi fejlkode som 404, som blev sendt fra koden og også viser "Guru Page not found"-meddelelsen set i outputtet.
Resumé
- I denne artikel har vi lært om klientanmodning og serversvar om, hvordan anmodningen opsnappes, og hvordan svarene manipuleres.
- JSP handlinger som bruger konstruktioner i XML-syntaks til at kontrollere opførselen af servlet-motoren.
- Når websiden anmodes om, sender den information til webserveren i HTTP-headeren.
- Når en anmodning behandles, og derefter genereres svaret fra webserveren. Den består af en statuslinje, svaroverskrifter, en tom linje og dokument.
- Når anmodningen er behandlet, genereres svaret. Svarstatuslinjen består af HTTP-version, en statuskode og en tilhørende meddelelse.