JSP-clientverzoek
โก Slimme samenvatting
De JSP-clientaanvraag en de serverrespons maken gebruik van JSP-actie-elementen om de servlet-engine aan te sturen. De browser verzendt informatie via HTTP-headers, de server retourneert een statusregel en headers, en HTTP-statuscodes rapporteren de uitkomst van elke aanvraag.

JSP-acties gebruiken constructies in de XML-syntaxis om het gedrag van de servlet-engine te besturen. We zullen dieper ingaan op verschillende elementen van JSP-acties, zoals clientverzoeken, serverreacties 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 het origineel. 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 | Duidt op URL verwijzend 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 de headers.
- Opsomming getParameterNames() โ bevat een opsomming van het ophalen van parameternamen in de aanvraag.
- HttpSession getSession() โ 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.
- ServletInputStream getInputStream() โ Haalt de inhoud van het verzoek op als binaire data.
- 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 is gekoppeld aan de URL
- Tekenreeks getQueryString() โ retourneert de queryreeks die aan het verzoek is gekoppeld. URL
- Tekenreeks getServletPath() โ retourneert het deel van URLs van het verzoek dat 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:
Code Regel 17: Met behulp van een verzoekobject halen we het sessieobject van die specifieke sessie op, en we krijgen de objectwaarde van die sessie
Code Regel 19: Met behulp van het request-object verkrijgen we de landinstelling van die specifieke sessie, oftewel de landinstelling en_US voor die JSP.
Code Regel 21: Met behulp van het request-object verkrijgen we padinformatie voor die JSP. In dit geval is die null, omdat er geen pad is voor die JSP. URL genoemd.
Code Regel 23: Met behulp van het verzoekobject krijgen we het contextpad, dat wil zeggen het rootpad
Code Regel 25: Met behulp van een verzoekobject krijgen we de servernaam.
Code Regel 27: Met behulp van een verzoekobject krijgen we een serverpoort.
Code Lijn 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:
Output:
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 een object van de klasse HTTPServletResponse, wat een responsobject is.
- 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 |
| Lokatie | 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:
- String encodeRedirectURL(Snaar URL) - codeert de URL in omleidingURL methode.
- StringcoderingURL(Snaar URL) - codeert de URL door de sessie-ID toe te voegen.
- Booleaanse waarde bevatHeader(Stringnaam) โ het bevat een header in de JSP of niet.
- Booleaanse waarde isCommited() โ reactie al dan niet is gepleegd.
- Void 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(int sc,String msg) โ 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
- Void setContentLength(int len) โ stelt de inhoudslengte van het antwoord in
- Leeg setLocale(Locale lcl) โ stelt het landinstellingstype van het antwoord in
- Void setStatus(int sc) โ stelt de statuscode van het antwoord in
Voorbeeld:
In dit voorbeeld behandelen we verschillende methoden: getLocale, flushbuffer en get.Writer, getContentType, 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:
Code Regel 13: Met behulp van het responsobject krijgen we het locale-object van deze JSP-sessie
Code Regel 15: Met behulp van een responsobject wordt flushbuffer gebruikt om de bufferinhoud in de client te forceren
Code Regel 16: Met behulp van het responsobject krijgen we een schrijverobject dat uitvoer krijgt in de uitvoerstroom
Code Regel 18: Door het responsobject te gebruiken, krijgen we het inhoudstype, dat wil zeggen het MIME-type van het responsobject
Code Regel 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 die afkomstig is van het writer-object van get.Writer, wat ons een object oplevert dat we vervolgens in de uitvoerstroom kunnen weergeven.
- 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-status Codes
- 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-status Code Methoden in JSP
Hieronder vindt u enkele statuscodemethoden in JSP:
- Public void setStatus(int statusCode): Het stelt de statuscode in die we willen instellen in die JSP-pagina. Dit geeft ons het bericht van de statuscode die is ingesteld
- Public void sendRedirect(String URL): Het genereert een 302-respons samen met de locatieheader, wat resulteert in URL van het nieuwe document
- Public void sendError(int code, String msg): 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:
Code Regel 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 foutcode 404, die door de code is verzonden en ook wordt weergegeven:Guru In de uitvoer verschijnt de melding "Pagina niet gevonden".



