JSP-clientverzoek
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 | Beschrijving | 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
De volgende methoden worden gebruikt om de HTTP-header in een JSP-pagina te lezen:
- Cookie[] getCookies() – retourneert een array met cookie-objecten die de client heeft verzonden
- Opsomming getAttributeNames() – bevat een opsomming van namen van attributen voor aanvraag
- Opsomming getHeaderNames() – bevat een opsomming van de namen van header .
- Opsomming getParameterNames() – bevat een opsomming van het ophalen van parameternamen in de aanvraag.
- HttpSessiongetSession() – retourneert de huidige sessie die aan het verzoek is gekoppeld, of als er geen sessie is, wordt er een nieuwe gemaakt.
- Landinstelling getLocale() – retourneert de voorkeurslocale waarin de client content accepteert. Deze is toegewezen aan de respons. Standaard is de waarde de standaardlocale van de server.
- Object getAttribute(tekenreeksnaam) – retourneert de waarde van het benoemde attribuut als een object.
- ServletInputStreamgetInputStream() – haalt de body van het verzoek op als binaire gegevens.
- Tekenreeks getAuthType() – retourneert de naam van het authenticatieschema om de servlet te beschermen
- Tekenreeks getCharacterEncoding() – retourneert de naam van de tekencodering die in de hoofdtekst van het verzoek wordt gebruikt.
- Tekenreeks getContentType() – retourneert het MIME-type van de hoofdtekst van het verzoek.
- Tekenreeks getContextPath() – retourneert het deel van de aanvraag-URI dat het contextpad van de URI aangeeft
- String getHeader(Stringnaam) – retourneert de verzoekheader als een tekenreeks
- Tekenreeks getMethod() – retourneert de naam van de HTTP-methode zoals GET, POST
- String getParameter(Stringnaam) – retourneert de parameter van het verzoek als een tekenreeks.
- Tekenreeks getPathInfo() – retourneert de padinformatie die aan de URL is gekoppeld
- Tekenreeks getQueryString() – retourneert de queryreeks die is gekoppeld aan de aanvraag-URL
- Tekenreeks getServletPath() – retourneert het deel van de URL's van de aanvraag die de JSP aanroept
- 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 de volgende uitvoer:
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 | Beschrijving |
|---|---|
| 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 tijdens de verzending worden gecodeerd |
| 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 |
| Bestemming | 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
Hieronder staan de methoden in JSP die gebruikmaken van een responsobject:
- Tekenreeks coderenRedirectURL(String-URL) – codeert de URL in de redirectURL-methode.
- Tekenreeks encodeURL(String-URL) – codeert de URL door de sessie-ID op te nemen.
- Booleaanse waarde bevatHeader(Stringnaam) – het bevat een header in de JSP of niet.
- Booleaanse waarde isCommited() – reactie al dan niet is gepleegd.
- Annuleer addCookie(Cookie cookie) – voegt een cookie toe aan het antwoord
- Void addDateHeader(Stringnaam, Stringwaarde) – voegt de datumnaam en waarde van de antwoordkop toe
- Void addHeader(Stringnaam, Stringwaarde) – voegt antwoordheader toe met naam en waarde
- Void addIntHeader(Stringnaam,int-waarde) – voegt antwoordheader toe met naam en gehele waarde
- Leegte doorspoelenBuffer dwingt de inhoud van de buffer naar de uitvoer naar de client.
- Ongeldige reset() – wist gegevens in de buffer.
- Ongeldige resetBuffer - wist de inhoudsbuffer in het antwoord zonder statuscodes te wissen.
- Void sendError(intsc,Stringmsg) – stuurt een foutreactie naar de client met behulp van de statuscode.
- Annuleer sendRedirect (String-locatie) – verzendt een tijdelijk omleidingsantwoord naar de client.
- Leegte ingesteldBufferGrootte (int-grootte) – stelt de buffergrootte van het lichaam in
- Void setCharacterEncoding(String-tekenset) – stelt tekencodering in
- Void setContentType(String-type) – stelt het inhoudstype van het antwoord in
- Leegte setContentLength(intlen) – stelt de inhoudslengte van het antwoord in
- Leeg setLocale(Locale lcl) – stelt het landinstellingstype van het antwoord in
- Ongeldige setStatus(intsc) – stelt de statuscode van het antwoord in
Voorbeeld:
In dit voorbeeld behandelen we verschillende methoden: getLocale, flushbuffer, getWriter, get ContentType en 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: Met behulp van een responsobject wordt flushbuffer gebruikt om de bufferinhoud in de client te forceren
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 de volgende uitvoer:
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 vallen in de volgende 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:
- Openbare ongeldige setStatus(intstatusCode): Het stelt de statuscode in die we willen instellen in die JSP-pagina. Dit geeft ons het bericht van de statuscode die is ingesteld
- Publieke ongeldige sendRedirect(String-URL): Het genereert een 302-respons samen met de locatieheader die de URL van het nieuwe document geeft
- 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.
- Statuscode – Dit kan een van de bovenstaande zijn. In dit geval hebben we beschreven als 404
- Bericht – Het kan elk specifiek bericht zijn dat we de fout willen laten zien
Als u de bovenstaande code uitvoert, krijgt u de volgende uitvoer:
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.
Samenvatting
- 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.



