JSP Client Request, Server Response & HTTP-statuscodes

Inhoudsopgave:

Anonim

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

In deze tutorial leer je-

  • JSP-clientverzoek
  • Reactie van JSP-server
  • JSP HTTP-statuscodes

JSP-clientverzoek

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

Hieronder worden verschillende kopteksten beschreven:

Koptekst Omschrijving Voorbeeld
Aanvaarden Het specificeert MIME-typen die de browser of andere clients kunnen verwerken Afbeelding / png of afbeelding / jpeg.webp
Accept-charset 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 afgehandeld Gzip of comprimeer
Accepteer-taal Het specificeert de door de klant gespecificeerde taal En, en_us
Autorisatie Koptekst die door clients wordt gebruikt bij het openen van met een wachtwoord beveiligde webpagina's
Verbinding Het geeft aan of de client blijvende HTTP-verbindingen aankan (browser kan meerdere bestanden ophalen) In leven houden
Inhoud lengte Van toepassing op het plaatsen van verzoeken. Het geeft de grootte van postgegevens van bytes weer
Koekje Retourneert cookies naar de server (die eerder naar de browser zijn gestuurd)
Gastheer Specificeert de host en poort van de originele URL
Indien gewijzigd sinds Het geeft aan dat het alleen een pagina nodig heeft als deze is gewijzigd of aangepast
Indien ongewijzigd sinds Het geeft aan dat het alleen een pagina nodig heeft als deze niet is gewijzigd of aangepast
Verwijzer Geeft de URL van de verwijzende URL-pagina aan
User-agent Identificeert de browser of client die een verzoek doet

De volgende methoden worden 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 opsomming van namen van attributen voor aanvraag
  3. Opsomming getHeaderNames () - bevat opsomming van namen van koptekst.
  4. Opsomming getParameterNames () - bevat een opsomming van het ophalen van parameternamen in het verzoek.
  5. HttpSessiongetSession () - retourneert de huidige sessie die aan het verzoek is gekoppeld of als er geen sessie is, wordt er een nieuwe gemaakt.
  6. Locale getLocale () - retourneert de voorkeurslandinstelling waarin de client inhoud accepteert. Het is toegewezen aan het antwoord. Standaard is de waarde de standaardlandinstelling van de server.
  7. Object getAttribute (tekenreeksnaam) - retourneert de waarde van het benoemde kenmerk als een object.
  8. ServletInputStreamgetInputStream () - haalt body van verzoek op als binaire gegevens.
  9. String getAuthType () - retourneert de naam van het authenticatieschema om de servlet te beschermen
  10. String getCharacterEncoding () - retourneert de naam van de tekencodering die in de hoofdtekst van het verzoek wordt gebruikt.
  11. String getContentType () - retourneert het MIME-type body van het verzoek.
  12. String getContextPath () - retourneert het deel van de verzoek-URI dat het contextpad van de URI aangeeft
  13. String getHeader (Stringnaam) - retourneert de verzoekheader als een string
  14. String getMethod () - retourneert de naam van de HTTP-methode zoals GET, POST
  15. String getParameter (String name) - retourneert de parameter van het verzoek als een string.
  16. String getPathInfo () - retourneert de padinformatie die aan de URL is gekoppeld
  17. String getQueryString () - retourneert de querytekenreeks die is gekoppeld aan de verzoek-URL
  18. String getServletPath () - retourneert het deel van de URL's van het verzoek dat de JSP aanroept
  19. String [] getParameterValues ​​(Stringnaam) - retourneert de reeks stringobjecten met de waarden die de verzoekparameter heeft

Voorbeeld:

In het onderstaande voorbeeld gebruiken we verschillende methoden met een verzoekobject

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%><% @ page import = "java.io. * java.util. *"%> Client Request Guru JSP 

Clientverzoek Guru JSP

​HttpSession-gurusession = request.getSession ();out.print (" ");Locale gurulocale = request.getLocale ();out.print (" ");Tekenreekspad = request.getPathInfo ();out.print (" ");String lpath = request.get ();out.print (" ");String servernaam = request.getServerName ();out.print (" ");int poortnaam = request.getServerPort ();out.print (" ");Opsomming hnames = request.getHeaderNames ();while (hnames.hasMoreElements ()) {String paramName = (String) hnames.nextElement ();out.print (" ");String paramValue = request.getHeader (paramName);out.println (" ");​​

Uitleg van de code:

Coderegel 17: met een request-object krijgen we het sessie-object van die specifieke sessie en we krijgen de objectwaarde van die sessie

Coderegel 19: Met een request-object krijgen we de locale van die specifieke sessie i.een_US locale voor die JSP.

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

Coderegel 23: Door het request-object te gebruiken, 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 de serverpoort.

Coderegel 29-35: door request-object te gebruiken, krijgen we koptekstnamen die als opsomming verschijnen, en daarom krijgen we alle koptekstwaarden in de koptekstnamen.

Hierin krijgen we alle koptekstwaarden als een cookie, host, verbinding, taal accepteren, codering accepteren.

Als je de bovenstaande code uitvoert, krijg je de volgende output:

Uitgang :

We krijgen de reeks waarden zoals sessienaam, locale naam, padnaam, servernaam, poortnaam, host, contextpad en alle headerwaarden van die JSP.

Reactie van JSP-server

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

Reactiekoppen worden hieronder vermeld:

goeroe header goeroe header Waarde (n)
Sessienaam is " + gurusession + "
Locale naam is " + gurulocale + "
Padnaam is " + pad + "
Contextpad is " + lipath + "
Servernaam is " + servernaam + "
Serverpoort is " + poortnaam + "
" + paramName + "" + paramValue + "
Koptekst Omschrijving
Toestaan Het specificeert de verzoekmethoden zoals GET, POST die de server aanvraagt
Cache-controle Het antwoorddocument kan in de cache worden opgeslagen. Het kan openbaar, privé en geen cache zijn. Geen cache geeft aan dat het document niet in de cache mag worden bewaard
Verbinding Het geeft aan of de browser opgeslagenHTTPConnections moet gebruiken of niet. De close-waarde geeft aan dat de browser geen persistent mag gebruiken in HTTPConnections en "keep-alive" betekent dat persistente verbindingen worden gebruikt
Content-dispositie Om de gebruiker te vragen of hij het antwoord op schijf wil opslaan of niet
Content-codering De pagina moet tijdens de verzending worden gecodeerd
Inhoud lengte Aantal bytes in het antwoord
Inhoudstype Het specificeert het MIME-type antwoord
Vervalt Geeft aan 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
Plaats Het moet worden opgenomen bij alle antwoorden met statuscode 300 als statuscode
Vernieuwen Het specificeert hoe de bijgewerkte pagina kan worden gevonden.
Opnieuw proberen Het kan worden gebruikt met 503-respons om de klant te vertellen hoe snel het verzoek kan herhalen
Set-cookie Specificeert de cookie die aan de pagina is gekoppeld

Hieronder volgen de methoden die het responsobject gebruiken:

  1. String encodeRedirectURL (String URL) - codeert de URL in de redirectURL-methode.
  2. String encodeURL (String URL) - codeert de URL door sessie-ID op te nemen.
  3. Boolean bevatHeader (tekenreeksnaam) - het bevat een koptekst in de JSP of niet.
  4. Boolean isCommited () - reactie is vastgelegd of niet.
  5. Void addCookie (Cookie-cookie) - voegt een cookie toe aan het antwoord
  6. Void addDateHeader (Stringnaam, Stringwaarde) - voegt de datumnaam en waarde van de antwoordheader 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 integerwaarde
  9. Void flushBuffer () - dwingt inhoud in de buffer naar de uitvoer naar de client.
  10. Ongeldige reset () - wist gegevens in de buffer.
  11. Void resetBuffer - wist de inhoudsbuffer in het antwoord zonder de statuscodes te wissen.
  12. Void sendError (intsc, Stringmsg) - stuurt een foutreactie naar de client met behulp van statuscode.
  13. Void sendRedirect (String-locatie) - stuurt een tijdelijke omleidingsreactie naar de client.
  14. Void setBufferSize (int size) - stelt de buffergrootte van de body in
  15. Void setCharacterEncoding (String charset) - stelt de tekencodering in
  16. Void setContentType (String type) - stelt het inhoudstype van het antwoord in
  17. Void setContentLength (intlen) - stelt de inhoudslengte van het antwoord in
  18. Void setLocale (Locale lcl) - stelt het locale type van het antwoord in
  19. Void setStatus (intsc) - stelt de statuscode van het antwoord in

Voorbeeld:

In dit voorbeeld behandelen we verschillende methoden 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. *"%> Guru Action Response 

Reactie van goeroe

​Landinstelling lcl = response.getLocale ();out.println ("Locale is: + lcl + "\ n");respons.flushBuffer ();PrintWriter-uitvoer = response.getWriter ();output.println ("Dit is van het schrijver-object");String type = response.getContentType ();out.println ("Het inhoudstype: + type + "\ n");// Stel de tijd voor vernieuwen en automatisch laden in op 5 secondenresponse.setIntHeader ("Vernieuwen", 5);// Krijg de huidige tijdDatum dt = nieuwe datum ();out.println ("De datum van vandaag is: + dt.toString () + "\ n");​

Uitleg van de code:

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

Coderegel 15: Met behulp van responsobject wordt flushbuffer gebruikt om de bufferinhoud naar de client te forceren

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

Code Line18: Met behulp van responsobject krijgen we inhoudstype, dwz MIME-type responsobject

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

Als je de bovenstaande code uitvoert, krijg je de volgende output:

Uitgang:

  • Hier krijgen we de uitvoer omdat deze afkomstig is van het schrijverobject 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 tekst / html
  • We krijgen 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 een HTTP-versie, een statuscode en een bijbehorend bericht.
  • Het bericht is direct gekoppeld aan de statuscode en HTTP-versie en wordt bepaald door de server.
  • Standaard is 200 ingesteld als een statuscode in JSP, dus we hoeven dit niet expliciet in te stellen.
  • We kunnen instellen als response.setStatus () - methode

De codes vallen in de volgende 5 categorieën:

  • 100-199 - Hier geeft de cliënt aan dat hij met enige actie moet reageren
  • 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 een nieuw adres aangeeft
  • 400-499 - Geeft een fout door de klant aan
  • 500-599 - Geeft een fout door de server aan

Enkele veel voorkomende statuscodes zijn hieronder:

  • 200 - Geeft aan dat alles in orde is
  • 301 - Het is permanent verhuisd
  • 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

Enkele van de methoden worden hieronder vermeld:

  1. Public void setStatus (intstatusCode)

    Het stelt de statuscode in die we willen instellen op die JSP-pagina Dit geeft ons het bericht van de statuscode die is ingesteld

  2. Public void sendRedirect (tekenreeks-URL)

    Het genereert 302-respons 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 het is opgemaakt in een HTML-document.

Voorbeeld:

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

<% @ page language = "java" contentType = "text / html; charset = ISO-8859-1" pageEncoding = "ISO-8859-1"%> Guru-statuscode <% response.sendError (404, "Guru-pagina niet gevonden"); ​

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 je de bovenstaande code uitvoert, krijg je de volgende output:

Uitgang:

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

Overzicht:

  • In dit artikel hebben we geleerd over clientverzoeken en serverreacties over hoe het verzoek wordt onderschept en hoe de reacties worden gemanipuleerd.
  • We hebben ook geleerd over HTTP-statuscodes om foutcodes of succescodes voor een bepaald bestand weer te geven.