JSP Client HTTP-verzoek en serverreactie met voorbeeld

JSP-acties die constructies in XML-syntaxis gebruiken om het gedrag van de servlet-engine te controleren. We zullen meer in detail leren over verschillende JSP-actie-elementen, zoals clientverzoek, serverreactie en HTTP-statuscodes.

JSP-clientverzoek

  • Wanneer de webpagina wordt opgevraagd, verzendt deze informatie naar de webserver in de HTTP-header.
  • We kunnen deze informatie gebruiken met behulp van het HTTPServletRequest-object.
  • Informatie verzonden door de browser wordt opgeslagen in de verzoekheader van het HTTP-verzoek.
  • We gebruiken verschillende headers om informatie naar het verzoekobject te verzenden.

Kopteksten in JSP

Verschillende headers in JSP worden hieronder beschreven:

Voorvoegsel Omschrijving Voorbeeld
ACCEPTEREN Het specificeert MIME-typen die browsers of andere clients aankunnen Afbeelding/png of afbeelding/jpeg
Accept-tekenset Het gebruikt de tekenset die door de browser wordt gebruikt om de informatie weer te geven ISO-8859-1
Accepteren-codering Het specificeert het type codering dat door de browser wordt verwerkt Gzipen of comprimeren
Accept-taal Het specificeert de door de klant gespecificeerde taal En,en_us
autorisatie Header gebruikt door clients bij het proberen toegang te krijgen tot met een wachtwoord beveiligde webpagina's
Aansluiting Het geeft aan of de client persistente HTTP-verbindingen aankan (browser kan meerdere bestanden ophalen) In leven houden
Inhoud lengte Van toepassing op postverzoeken. Het geeft de grootte van berichtgegevens van bytes
Cookiebleid Stuurt cookie terug naar de server (de cookies die eerder naar de browser zijn verzonden)
gastheer Specificeert de host en poort van de originele URL
Indien sindsdien gewijzigd Het geeft aan dat er alleen een pagina nodig is als deze is gewijzigd of aangepast
Indien sindsdien ongewijzigd Het geeft aan dat er alleen een pagina nodig is als deze niet is gewijzigd of aangepast
Verwijzer Geeft de URL aan van de verwijzende URL-pagina
Gebruikersagent Identificeert browser of client die een verzoek indient

HTTP-headermethoden in JSP

Following Er worden methoden gebruikt om de HTTP-header op de JSP-pagina te lezen:

  1. Cookie[] getCookies() – retourneert een array met cookie-objecten die de client heeft verzonden
  2. Opsomming getAttributeNames() – bevat een opsomming van namen van attributen voor aanvraag
  3. Opsomming getHeaderNames() – bevat een opsomming van de namen van header .
  4. Opsomming getParameterNames() – bevat een opsomming van het ophalen van parameternamen in de aanvraag.
  5. HttpSessiongetSession() – retourneert de huidige sessie die aan het verzoek is gekoppeld, of als er geen sessie is, wordt er een nieuwe gemaakt.
  6. Landinstelling getLocale() – retourneert de voorkeurslandinstelling waarin de client inhoud accepteert. Deze is toegewezen aan het antwoord. Standaard is de waarde de standaardlandinstelling van de server.
  7. Object getAttribute(tekenreeksnaam) – retourneert de waarde van het benoemde attribuut als een object.
  8. ServletInputStreamgetInputStream() – haalt de body van het verzoek op als binaire gegevens.
  9. Tekenreeks getAuthType() – retourneert de naam van het authenticatieschema om de servlet te beschermen
  10. Tekenreeks getCharacterEncoding() – retourneert de naam van de tekencodering die in de hoofdtekst van het verzoek wordt gebruikt.
  11. Tekenreeks getContentType() – retourneert het MIME-type van de hoofdtekst van het verzoek.
  12. Tekenreeks getContextPath() – retourneert het deel van de aanvraag-URI dat het contextpad van de URI aangeeft
  13. String getHeader(Stringnaam) – retourneert de verzoekheader als een tekenreeks
  14. Tekenreeks getMethod() – retourneert de naam van de HTTP-methode zoals GET, POST
  15. String getParameter(Stringnaam) – retourneert de parameter van het verzoek als een tekenreeks.
  16. Tekenreeks getPathInfo() – retourneert de padinformatie die aan de URL is gekoppeld
  17. Tekenreeks getQueryString() – retourneert de queryreeks die is gekoppeld aan de aanvraag-URL
  18. Tekenreeks getServletPath() – retourneert het deel van de URL's van het verzoek dat de JSP aanroept
  19. String[] getParameterValues(Stringnaam) – retourneert de array met tekenreeksobjecten die de waarden bevatten die de aanvraagparameter heeft

Voorbeeld:

In het onderstaande voorbeeld gebruiken we verschillende methoden met behulp van een verzoekobject

<%@ 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>");
	}

%>

Uitleg van de code:

Coderegel 17: Met behulp van een verzoekobject halen we het sessieobject van die specifieke sessie op, en we krijgen de objectwaarde van die sessie

Coderegel 19: Met behulp van een verzoekobject krijgen we de landinstelling van die specifieke sessie i.een_US landinstelling voor die JSP.

Coderegel 21: Met behulp van een verzoekobject krijgen we padinformatie voor die JSP. In dit geval is het nul omdat er geen pad voor de genoemde URL wordt vermeld.

Coderegel 23: Met behulp van het verzoekobject krijgen we het contextpad, dat wil zeggen het rootpad

Coderegel 25: Met behulp van een verzoekobject krijgen we de servernaam.

Coderegel 27: Met behulp van een verzoekobject krijgen we een serverpoort.

Coderegel 29-35: Met behulp van het verzoekobject krijgen we headernamen die als opsomming verschijnen, en daarom krijgen we alle headerwaarden in de headernamen.

Hierin krijgen we alle headerwaarden als a Cookiebleid, host, verbinding, taal accepteren, codering accepteren.

Wanneer u de bovenstaande code uitvoert, krijgt u het volgendewing output:

JSP-clientverzoek

uitgang:

We krijgen de reeks waarden zoals sessienaam, localenaam, padnaam, servernaam, poortnaam, host, contextpad en alle headerwaarden daarvan JSP.

JSP-serverreactie

  • Wanneer een verzoek wordt verwerkt en vervolgens het antwoord wordt gegenereerd vanaf de webserver. Het bestaat uit een statusregel, antwoordkoppen, een lege regel en een document.
  • Het is het object van HTTPServletResponseclass, een responsobject.
  • De statusregel is een versie van HTML.

Antwoordheaders in JSP

Antwoordheaders in JSP worden hieronder vermeld:

Voorvoegsel Omschrijving
Allow Het specificeert de verzoekmethoden zoals GET, POST waar de server om vraagt
Cache-controle Het antwoorddocument kan in de cache worden opgeslagen. Het kan openbaar, privé en zonder cache zijn. Geen cache geeft aan dat het document niet in de cache mag worden opgeslagen
Aansluiting Het geeft aan of de browser opgeslagenHTTPConnections moet gebruiken of niet. De waarde Sluiten geeft aan dat de browser geen persistente verbindingen mag gebruiken in HTTPConnections en 'keep-alive' betekent het gebruik van persistente verbindingen
Inhoud-dispositie Om de gebruiker te vragen of hij het antwoord op schijf wil opslaan of niet
Inhoud-codering Pagina moet worden gecodeerd tijdens transmission
Inhoud lengte Aantal bytes in het antwoord
Inhoudstype Het specificeert het MIME-type antwoord
Verloopt Specificeert tot wanneer de inhoud als verouderd moet worden beschouwd en niet in de cache mag worden opgeslagen
Laatst gewijzigd Het geeft aan wanneer het document voor het laatst is gewijzigd
Locatie Het moet worden opgenomen bij alle antwoorden die de statuscode 300 als statuscode hebben
verversen Het geeft aan hoe u de bijgewerkte pagina kunt vinden.
Opnieuw proberen na Het kan worden gebruikt met een 503-antwoord om de klant te vertellen hoe snel het verzoek kan worden herhaald
Cookie instellen Specificeert de cookie die aan de pagina is gekoppeld

HTTP-antwoordheadermethoden in JSP

Following zijn de methoden in JSP die antwoordobject gebruiken:

  1. Tekenreeks coderenRedirectURL(String-URL) – codeert de URL in de redirectURL-methode.
  2. Tekenreeks encodeURL(String-URL) – codeert de URL door de sessie-ID op te nemen.
  3. Booleaanse waarde bevatHeader(Stringnaam) – het bevat een header in de JSP of niet.
  4. Booleaanse waarde isCommited() – reactie al dan niet is gepleegd.
  5. Annuleer addCookie(Cookie cookie) – voegt een cookie toe aan het antwoord
  6. Void addDateHeader(Stringnaam, Stringwaarde) – voegt de datumnaam en waarde van de antwoordkop toe
  7. Void addHeader(Stringnaam, Stringwaarde) – voegt antwoordheader toe met naam en waarde
  8. Void addIntHeader(Stringnaam,int-waarde) – voegt antwoordheader toe met naam en gehele waarde
  9. Leegte doorspoelenBuffer​ dwingt inhoud in de buffer naar de output naar de klant.
  10. Ongeldige reset() – wist gegevens in de buffer.
  11. Ongeldige resetBuffer - wist de inhoud buffer in het antwoord zonder de statuscodes te wissen.
  12. Void sendError(intsc,Stringmsg) – stuurt een foutreactie naar de client met behulp van de statuscode.
  13. Annuleer sendRedirect (String-locatie) – verzendt een tijdelijk omleidingsantwoord naar de client.
  14. Leegte ingesteldBufferGrootte (int-grootte) – sets buffer grootte van het lichaam
  15. Void setCharacterEncoding(String-tekenset) – stelt tekencodering in
  16. Void setContentType(String-type) – stelt het inhoudstype van het antwoord in
  17. Leegte setContentLength(intlen) – stelt de inhoudslengte van het antwoord in
  18. Leeg setLocale(Locale lcl) – stelt het landinstellingstype van het antwoord in
  19. Ongeldige setStatus(intsc) – stelt de statuscode van het antwoord in

Voorbeeld:

In dit voorbeeld behandelen we verschillende methoden getLocale,flushbuffer, getWriter, haal ContentType op, 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>

Uitleg van de code:

Coderegel 13: Met behulp van het responsobject krijgen we het locale-object van deze JSP-sessie

Coderegel 15: Gebruik een antwoordobject en spoel doorbuffer wordt gebruikt om de buffer inhoud naar de klant

Coderegel 16: Met behulp van het responsobject krijgen we een schrijverobject dat uitvoer krijgt in de uitvoerstroom

Coderegel 18: Door het responsobject te gebruiken, krijgen we het inhoudstype, dat wil zeggen het MIME-type van het responsobject

Coderegel 21: Met behulp van het responsobject wordt het gebruikt om elke 5 seconden automatisch te laden, aangezien 5 is ingesteld als de tweede parameter

Wanneer u de bovenstaande code uitvoert, krijgt u het volgendewing output:

JSP-serverreactie

Output:

  • Hier krijgen we de uitvoer zoals deze afkomstig is van het writer-object van getWriter, wat ons een object geeft en we kunnen uitvoeren in de uitvoerstroom.
  • We krijgen de locale als en_us en het inhoudstype als text/html
  • We krijgen een tekenset als ISO 8859
  • De datum van vandaag als de huidige datum.

JSP HTTP-statuscodes

  • Wanneer het verzoek is verwerkt, wordt het antwoord gegenereerd. De antwoordstatusregel bestaat uit de HTTP-versie, een statuscode en een bijbehorend bericht.
  • Het bericht is rechtstreeks gekoppeld aan de statuscode en HTTP-versie en wordt bepaald door de server.
  • Standaard is 200 ingesteld als statuscode in JSP, dus we hoeven dit niet expliciet in te stellen.
  • We kunnen de methode response.setStatus() instellen

De codes volgen hieronderwing 5 categorieën:

  • 100-199 – Hier geeft de cliënt aan dat hij moet reageren met enige actie
  • 200-299 – Het geeft aan dat het verzoek succesvol is
  • 300-399 – Ze worden gebruikt voor bestanden die zijn verplaatst en bevatten meestal een locatiekop die het nieuwe adres aangeeft
  • 400-499 – Geeft een fout van de client aan
  • 500-599 – Geeft een fout van de server aan

Enkele veel voorkomende statuscodes vindt u hieronder:

  • 200 – Geeft aan dat alles in orde is
  • 301 – Het is permanent verplaatst
  • 304 – Niet gewijzigd sinds de laatste wijziging
  • 400 - Slecht verzoek
  • 404 Niet Gevonden
  • 405 – Methode niet gevonden
  • 500 Interne server fout
  • 503 Service niet beschikbaar
  • 505 – HTTP-versie niet ondersteund

HTTP-statuscodemethoden in JSP

Hieronder vindt u enkele statuscodemethoden in JSP:

  1. Openbare ongeldige setStatus(intstatusCode): Het stelt de statuscode in die we op die JSP-pagina willen instellen. Dit geeft ons het bericht van de statuscode die is ingesteld
  2. Publieke ongeldige sendRedirect(String-URL): Het genereert een 302-antwoord samen met de locatiekop die de URL van het nieuwe document geeft
  3. Public void sendError(intcode,Stringmsg): Het verzendt de statuscode samen met het korte bericht en wordt opgemaakt in een HTML-document.

Voorbeeld:

In dit voorbeeld sturen we expliciet een fout naar de JSP-pagina.

<%@ 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>

Uitleg van de code:

Coderegel 10: Met behulp van het responsobject sturen we de fout naar een pagina met twee parameters.

  1. Statuscode – Dit kan een van de bovenstaande zijn. In dit geval hebben we beschreven als 404
  2. Bericht – Het kan elk specifiek bericht zijn dat we de fout willen laten zien

Als u de bovenstaande code uitvoert, krijgt u het volgendewing output:

JSP HTTP-statuscodes

Output:

Hier krijgen we de foutcode 404, die werd verzonden vanuit de code en die ook het bericht "Guru Pagina niet gevonden" weergeeft in de uitvoer.

Samengevat

  • In dit artikel hebben we geleerd over clientverzoeken en serverreacties, over hoe het verzoek wordt onderschept en hoe de antwoorden worden gemanipuleerd.
  • JSP-acties die constructies in de XML-syntaxis gebruiken om het gedrag van de servlet-engine te controleren.
  • Wanneer de webpagina wordt opgevraagd, verzendt deze informatie naar de webserver in de HTTP-header.
  • Wanneer een verzoek wordt verwerkt en vervolgens het antwoord wordt gegenereerd vanaf de webserver. Het bestaat uit een statusregel, antwoordkoppen, een lege regel en een document.
  • Wanneer het verzoek is verwerkt, wordt het antwoord gegenereerd. De antwoordstatusregel bestaat uit de HTTP-versie, een statuscode en een bijbehorend bericht.