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



