JSP-Client-Anfrage
JSP-Aktionen, die Konstrukte in XML-Syntax verwenden, um das Verhalten der Servlet-Engine zu steuern. Wir werden mehr über verschiedene JSP-Aktionselemente wie Client-Anfrage, Server-Antwort und HTTP-Statuscodes erfahren.
JSP-Client-Anfrage
- Wenn die Webseite angefordert wird, sendet sie im HTTP-Header Informationen an den Webserver.
- Wir können diese Informationen mithilfe des HTTPServletRequest-Objekts verwenden.
- Vom Browser gesendete Informationen werden im Anforderungsheader der HTTP-Anfrage gespeichert.
- Wir verwenden verschiedene Header, um Informationen an das Anforderungsobjekt zu senden.
Header in JSP
Im Folgenden werden verschiedene Header in JSP beschrieben:
Kopfzeile | Beschreibung | Beispiel |
---|---|---|
Akzeptieren | Es gibt MIME-Typen an, die Browser oder andere Clients verarbeiten können | Bild/png oder Bild/jpeg |
Akzeptieren-Zeichensatz | Es verwendet den vom Browser verwendeten Zeichensatz zur Anzeige der Informationen | ISO-8859-1 |
Akzeptieren – Kodierung | Es gibt die Art der vom Browser verarbeiteten Codierung an | Gzip oder komprimieren |
Akzeptieren-Sprache | Es gibt die vom Client angegebene Sprache an | En,en_us |
Genehmigung | Header, der von Clients verwendet wird, wenn sie versuchen, auf passwortgeschützte Webseiten zuzugreifen | |
Verbindungen schaffen | Es gibt an, ob der Client dauerhafte HTTP-Verbindungen verarbeiten kann (der Browser kann mehrere Dateien abrufen). | Bleib am Leben |
Inhaltslänge | Gilt für Postanfragen. Es gibt die Größe der Postdaten in Bytes an | |
Cookie | Gibt Cookies an den Server zurück (diejenigen, die zuvor an den Browser gesendet wurden). | |
Gastgeber | Gibt den Host und Port der Original-URL an | |
Falls seitdem geändert | Es zeigt an, dass nur dann eine Seite erforderlich ist, wenn sie geändert oder modifiziert wurde | |
Sofern seitdem unverändert | Es zeigt an, dass eine Seite nur dann erforderlich ist, wenn sie nicht geändert oder modifiziert wurde | |
Referrer | Gibt die URL der verweisenden URL-Seite an | |
User-agent | Identifiziert den Browser oder Client, der eine Anfrage stellt |
HTTP-Header-Methoden in JSP
Zum Lesen des HTTP-Headers auf der JSP-Seite werden die folgenden Methoden verwendet:
- Cookie[] getCookies() – gibt ein Array zurück, das Cookie-Objekte enthält, die der Client gesendet hat
- Aufzählung getAttributeNames() – Enthält eine Aufzählung der Namen von Attributen für die Anforderung
- Aufzählung getHeaderNames() – Enthält eine Aufzählung der Namen des Headers.
- Aufzählung getParameterNames() – Enthält eine Aufzählung der Parameternamen, die in der Anfrage abgerufen werden.
- HttpSessiongetSession() – Gibt die aktuelle Sitzung zurück, die mit der Anfrage verknüpft ist. Wenn keine Sitzung vorhanden ist, wird eine neue erstellt.
- Gebietsschema getLocale() – gibt das bevorzugte Gebietsschema zurück, in dem der Client Inhalte akzeptiert. Es wurde der Antwort zugewiesen. Standardmäßig ist der Wert das Standardgebietsschema des Servers.
- Objekt getAttribute(String name) – gibt den Wert des benannten Attributs als Objekt zurück.
- ServletInputStreamgetInputStream() – Ruft den Hauptteil der Anfrage als Binärdaten ab.
- String getAuthType() – gibt den Namen des Authentifizierungsschemas zum Schutz des Servlets zurück
- String getCharacterEncoding() – Gibt den Namen der Zeichenkodierung zurück, die im Hauptteil der Anfrage verwendet wird.
- String getContentType() – gibt den MIME-Typ des Hauptteils der Anfrage zurück.
- String getContextPath() – Gibt den Teil des Anforderungs-URI zurück und gibt den Kontextpfad des URI an
- String getHeader(Stringname) – gibt den Anforderungsheader als Zeichenfolge zurück
- String getMethod() – gibt den Namen der HTTP-Methode zurück, z. B. GET, POST
- String getParameter(Stringname) – gibt den Parameter der Anfrage als String zurück.
- String getPathInfo() – gibt die mit der URL verknüpften Pfadinformationen zurück
- String getQueryString() – gibt die Abfragezeichenfolge zurück, die der Anforderungs-URL zugeordnet ist
- String getServletPath() – gibt den Teil der URLs der Anfrage zurück, der die JSP aufruft
- String[] getParameterValues(String-Name) – Gibt das Array von Zeichenfolgenobjekten zurück, die die Werte des Anforderungsparameters enthalten
Ejemplo:
Im folgenden Beispiel verwenden wir verschiedene Methoden unter Verwendung des Anforderungsobjekts
<%@ 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>"); } %>
Erklärung des Codes:
Codezeile 17: Mithilfe des Anforderungsobjekts erhalten wir das Sitzungsobjekt dieser bestimmten Sitzung und den Objektwert dieser Sitzung
Codezeile 19: Mithilfe des Anforderungsobjekts erhalten wir das Gebietsschema dieser bestimmten Sitzung, i.een_US-Gebietsschema für diese JSP.
Codezeile 21: Mithilfe des Anforderungsobjekts erhalten wir Pfadinformationen für diese JSP. In diesem Fall ist es null, da kein Pfad für die angegebene URL vorhanden ist.
Codezeile 23: Mithilfe des Anforderungsobjekts erhalten wir den Kontextpfad, dh den Stammpfad
Codezeile 25: Mithilfe des Anforderungsobjekts erhalten wir den Servernamen.
Codezeile 27: Mithilfe des Anforderungsobjekts erhalten wir den Server-Port.
Codezeile 29-35: Mithilfe des Anforderungsobjekts erhalten wir Header-Namen, die als Aufzählung ausgegeben werden, und daher erhalten wir alle Header-Werte in den Header-Namen.
Dabei erhalten wir alle Headerwerte als Cookie, Host, Verbindung, Sprache akzeptieren, Codierung akzeptieren.
Wenn Sie den obigen Code ausführen, erhalten Sie die folgende Ausgabe:
Ausgang:
Wir erhalten eine Reihe von Werten wie Sitzungsname, Gebietsschemaname, Pfadname, Servername, Portname, Host, Kontextpfad und alle Headerwerte davon JSP.
Antwort des JSP-Servers
- Wenn eine Anfrage verarbeitet wird und dann die Antwort vom Webserver generiert wird. Es besteht aus einer Statuszeile, Antwortheadern, einer Leerzeile und einem Dokument.
- Es ist das Objekt der HTTPServletResponseclass, bei der es sich um ein Antwortobjekt handelt.
- Die Statuszeile ist eine Version von HTML.
Antwortheader in JSP
Antwortheader in JSP werden unten aufgeführt:
Kopfzeile | Beschreibung |
---|---|
Erlauben | Es gibt die Anforderungsmethoden wie GET, POST an, die der Server anfordert |
Cache-Kontrolle | Das Antwortdokument kann zwischengespeichert werden. Es kann öffentlich, privat und ohne Cache sein. Kein Cache gibt an, dass das Dokument nicht zwischengespeichert werden soll |
Verbindungen schaffen | Es gibt an, ob der Browser savedHTTPConnections verwenden soll oder nicht. Der Wert „Close“ bedeutet, dass der Browser in HTTPConnections keine persistenten Verbindungen verwenden sollte und „Keep-Alive“ die Verwendung persistenter Verbindungen bedeutet |
Inhaltliche Disposition | Um den Benutzer zu fragen, ob die Antwort auf der Festplatte gespeichert werden soll oder nicht |
Inhaltskodierung | Seite muss während der Übertragung verschlüsselt werden |
Inhaltslänge | Anzahl der Bytes in der Antwort |
Inhaltstyp | Es gibt den MIME-Typ der Antwort an |
Läuft ab | Gibt an, bis wann der Inhalt als veraltet betrachtet und nicht zwischengespeichert werden soll |
Zuletzt geändert: | Es gibt an, wann das Dokument zuletzt geändert wurde |
Wo | Es sollte in allen Antworten enthalten sein, deren Statuscode 300 als Statuscode hat |
Inspiration | Es gibt an, wie die aktualisierte Seite gefunden wird. |
Wiederholen Sie den Vorgang danach | Es kann mit der 503-Antwort verwendet werden, um dem Kunden mitzuteilen, wie schnell er die Anfrage wiederholen kann |
Set-Keks | Gibt das mit der Seite verknüpfte Cookie an |
HTTP-Antwort-Header-Methoden in JSP
Im Folgenden sind die Methoden in JSP aufgeführt, die Antwortobjekte verwenden:
- String encodeRedirectURL(String URL) – kodiert die URL in der RedirectURL-Methode.
- String encodeURL(String URL) – kodiert die URL unter Einbeziehung der Sitzungs-ID.
- Boolescher Wert enthältHeader(String-Name) – ob es einen Header in der JSP enthält oder nicht.
- Boolean isCommited() – Antwort wurde festgeschrieben oder nicht.
- Void addCookie(Cookie cookie) – fügt der Antwort ein Cookie hinzu
- Void addDateHeader(String name, String value) – Fügt den Datumsnamen und den Wert des Antwortheaders hinzu
- Void addHeader(String-Name, String-Wert) – Fügt einen Antwortheader mit Namen und Wert hinzu
- Void addIntHeader(String name,int value) – Fügt einen Antwortheader mit Namen und ganzzahligem Wert hinzu
- Leere SpülungBuffer() - erzwingt die Ausgabe des Inhalts im Puffer an den Client.
- Void-Reset() – löscht Daten im Puffer.
- Ungültiges ZurücksetzenBuffer - löscht den Inhaltspuffer in der Antwort, ohne Statuscodes zu löschen.
- Void sendError(intsc,Stringmsg) – sendet eine Fehlerantwort mit dem Statuscode an den Client.
- Void sendRedirect(String location) – sendet eine temporäre Umleitungsantwort an den Client.
- Leeres SetBufferGröße (int-Größe) – legt die Puffergröße des Bodys fest
- Void setCharacterEncoding(String charset) – legt die Zeichenkodierung fest
- Void setContentType(String-Typ) – legt den Inhaltstyp der Antwort fest
- Void setContentLength(intlen) – legt die Inhaltslänge der Antwort fest
- Void setLocale(Locale lcl) – legt den Gebietsschematyp der Antwort fest
- Void setStatus(intsc) – Legt den Statuscode der Antwort fest
Ejemplo:
In diesem Beispiel behandeln wir verschiedene 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.*" %> <!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>
Erklärung des Codes:
Codezeile 13: Mithilfe des Antwortobjekts erhalten wir das Gebietsschemaobjekt dieser JSP-Sitzung
Codezeile 15: Mithilfe des Antwortobjekts wird Flushbuffer verwendet, um den Pufferinhalt in den Client zu zwingen
Codezeile 16: Mit dem Antwortobjekt erhalten wir ein Writer-Objekt, das im Ausgabestream ausgegeben wird
Codezeile18: Mithilfe des Antwortobjekts erhalten wir den Inhaltstyp, dh den MIME-Typ des Antwortobjekts
Codezeile 21: Mithilfe des Antwortobjekts wird alle 5 Sekunden ein automatisches Laden durchgeführt, da 5 als zweiter Parameter festgelegt ist
Wenn Sie den obigen Code ausführen, erhalten Sie die folgende Ausgabe:
Ausgang:
- Hier erhalten wir die Ausgabe, da diese vom Writer-Objekt von getWriter stammt, das uns ein Objekt gibt und wir es im Ausgabestream ausgeben können.
- Wir erhalten das Gebietsschema als en_us und den Inhaltstyp als text/html
- Wir erhalten den Zeichensatz ISO 8859
- Das heutige Datum als aktuelles Datum.
JSP-HTTP-Statuscodes
- Wenn die Anfrage verarbeitet wird, wird die Antwort generiert. Die Antwortstatuszeile besteht aus der HTTP-Version, einem Statuscode und einer zugehörigen Nachricht.
- Die Nachricht ist direkt mit dem Statuscode und der HTTP-Version verknüpft und wird vom Server bestimmt.
- Standardmäßig ist in JSP 200 als Statuscode festgelegt, sodass wir ihn nicht explizit festlegen müssen.
- Wir können die Methode „response.setStatus()“ festlegen
Die Codes fallen in die folgenden 5 Kategorien:
- 100-199 – Hier gibt der Client an, dass er mit einer Aktion reagieren soll
- 200-299 – Dies bedeutet, dass die Anfrage erfolgreich war
- 300–399 – Sie werden für Dateien verwendet, die verschoben wurden, und enthalten in der Regel einen Standort-Header, der die neue Adresse angibt
- 400-499 – Zeigt einen Fehler des Clients an
- 500-599 – Zeigt einen Serverfehler an
Nachfolgend finden Sie einige der häufigsten Statuscodes:
- 200 – Zeigt an, dass alles in Ordnung ist
- 301 – Es ist dauerhaft umgezogen
- 304 – Seit der letzten Änderung nicht geändert
- 400 - Schlechte Anfrage
- 404 - Nicht gefunden
- 405 – Methode nicht gefunden
- 500 - Interner Serverfehler
- 503 Dienst nicht verfügbar
- 505 – HTTP-Version wird nicht unterstützt
HTTP-Statuscode-Methoden in JSP
Einige der Statuscode-Methoden in JSP sind unten aufgeführt:
- Public void setStatus(intstatusCode): Es setzt den Statuscode, den wir auf dieser JSP-Seite setzen möchten. Dadurch erhalten wir die Meldung des gesetzten Statuscodes
- Public void sendRedirect(String URL): Es generiert eine 302-Antwort zusammen mit dem Standortheader, der die URL des neuen Dokuments angibt
- Public void sendError(intcode,Stringmsg): Der Statuscode wird zusammen mit der Kurznachricht gesendet und im HTML-Dokument formatiert.
Ejemplo:
In diesem Beispiel senden wir einen Fehler explizit an die JSP-Seite.
<%@ 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>
Erklärung des Codes:
Codezeile 10: Mithilfe des Antwortobjekts senden wir den Fehler mit zwei Parametern an eine Seite.
- Statuscode – Dies kann einer der oben genannten sein. In diesem Fall haben wir es als 404 beschrieben
- Nachricht – Es kann sich um eine beliebige spezifische Nachricht handeln, mit der wir den Fehler anzeigen möchten
Wenn Sie den obigen Code ausführen, erhalten Sie die folgende Ausgabe:
Ausgang:
Hier erhalten wir den Fehlercode 404, der vom Code gesendet wurde und in der Ausgabe auch die Meldung „Guru-Seite nicht gefunden“ anzeigt.
Zusammenfassung
- In diesem Artikel haben wir etwas über Client-Anfragen und Server-Antworten erfahren, wie die Anfragen abgefangen und die Antworten manipuliert werden.
- JSP-Aktionen die Konstrukte in XML-Syntax verwenden, um das Verhalten der Servlet-Engine zu steuern.
- Wenn die Webseite angefordert wird, sendet sie im HTTP-Header Informationen an den Webserver.
- Wenn eine Anfrage verarbeitet wird und dann die Antwort vom Webserver generiert wird. Es besteht aus einer Statuszeile, Antwortheadern, einer Leerzeile und einem Dokument.
- Wenn die Anfrage verarbeitet wird, wird die Antwort generiert. Die Antwortstatuszeile besteht aus der HTTP-Version, einem Statuscode und einer zugehörigen Nachricht.