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:

  1. Cookie[] getCookies() โ€“ returnerer et array, der indeholder cookie-objekter, som klienten har sendt
  2. Enumeration getAttributeNames() โ€“ indeholder opremsning af navne pรฅ attributter til anmodning
  3. Enumeration getHeaderNames() โ€“ indeholder opremsning af navne pรฅ overskrift.
  4. Enumeration getParameterNames() โ€“ indeholder opregning af at fรฅ parameternavne i anmodningen.
  5. HttpSessiongetSession() โ€“ returnerer den aktuelle session, der er knyttet til anmodningen, eller hvis den ikke har en session, vil den oprette en ny.
  6. 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.
  7. Objekt getAttribute(strengnavn) โ€“ returnerer vรฆrdien af โ€‹โ€‹navngivet attribut som et objekt.
  8. ServletInputStreamgetInputStream() โ€“ henter kroppen af โ€‹โ€‹anmodningen som binรฆre data.
  9. String getAuthType() โ€“ returnerer navnet pรฅ godkendelsesskemaet for at beskytte servlet
  10. String getCharacterEncoding() โ€“ returnerer navnet pรฅ den tegnkodning, der bruges i anmodningens brรธdtekst.
  11. String getContentType() โ€“ returnerer MIME-typen af โ€‹โ€‹brรธdteksten for anmodningen.
  12. Streng getContextPath() โ€“ returnerer den del af anmodnings-URI, der angiver kontekststien til URI
  13. Streng getHeader(strengnavn) โ€“ returnerer anmodningshovedet som en streng
  14. String getMethod() โ€“ returnerer navnet pรฅ HTTP-metoden som GET, POST
  15. String getParameter(String name) โ€“ returnerer parameteren for anmodningen som en streng.
  16. String getPathInfo() โ€“ returnerer de stioplysninger, der er knyttet til URL'en
  17. String getQueryString() โ€“ returnerer den forespรธrgselsstreng, der er knyttet til anmodningens URL
  18. String getServletPath() โ€“ returnerer den del af URL'erne for anmodningen, der kalder JSP'en
  19. 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:

JSP-klientanmodning

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:

  1. String encodeRedirectURL(String URL) โ€“ koder URL'en i redirectURL-metoden.
  2. String encodeURL(String URL) โ€“ koder URL'en ved at inkludere sessions-id.
  3. Boolean containsHeader(strengnavn) โ€“ den indeholder en header i JSP'en eller ej.
  4. Boolean isCommited() โ€“ svar er blevet begรฅet eller ej.
  5. Void addCookie(Cookie-cookie) โ€“ fรธjer cookie til svaret
  6. Void addDateHeader (strengnavn, strengvรฆrdi) โ€“ tilfรธjer svaroverskriftsdatonavn og -vรฆrdi
  7. Void addHeader (strengnavn, strengvรฆrdi) โ€“ tilfรธjer svarheader med navn og vรฆrdi
  8. Void addIntHeader(String name,int value) โ€“ tilfรธjer svarheader med navn og heltalsvรฆrdi
  9. Ugyldig skylningBuffer() - tvinger indhold i bufferen til output til klienten.
  10. Void reset() โ€“ rydder data i bufferen.
  11. Ugyldig nulstillingBuffer - rydder indholdsbufferen i svaret uden at rydde statuskoder.
  12. Void sendError(intsc,Stringmsg) โ€“ sender et fejlsvar til klienten ved hjรฆlp af statuskode.
  13. Void sendRedirect (strengplacering) โ€“ sender et midlertidigt omdirigeringssvar til klienten.
  14. Tomt sรฆtBufferStรธrrelse (int stรธrrelse) โ€“ indstiller bufferstรธrrelsen pรฅ kroppen
  15. Void setCharacterEncoding(String charset) โ€“ indstiller tegnkodning
  16. Void setContentType(String type) โ€“ indstiller indholdstypen for svaret
  17. Void setContentLength(intlen) โ€“ indstiller svarets indholdslรฆngde
  18. Void setLocale(Locale lcl) โ€“ angiver lokalitetstypen for svaret
  19. 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:

JSP-serversvar

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:

  1. 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
  2. Offentlig void sendRedirect(String URL): Det genererer 302-svar sammen med placeringsoverskriften, der giver URL-adressen til det nye dokument
  3. 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.

  1. Statuskode โ€“ Det kan vรฆre en af โ€‹โ€‹ovenstรฅende. I dette tilfรฆlde har vi beskrevet som 404
  2. 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:

JSP HTTP-statuskoder

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.

Opsummer dette indlรฆg med: