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:

  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 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:

  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.