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:

  1. Cookie[] getCookies() – gibt ein Array zurück, das Cookie-Objekte enthält, die der Client gesendet hat
  2. Aufzählung getAttributeNames() – Enthält eine Aufzählung der Namen von Attributen für die Anforderung
  3. Aufzählung getHeaderNames() – Enthält eine Aufzählung der Namen des Headers.
  4. Aufzählung getParameterNames() – Enthält eine Aufzählung der Parameternamen, die in der Anfrage abgerufen werden.
  5. HttpSessiongetSession() – Gibt die aktuelle Sitzung zurück, die mit der Anfrage verknüpft ist. Wenn keine Sitzung vorhanden ist, wird eine neue erstellt.
  6. 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.
  7. Objekt getAttribute(String name) – gibt den Wert des benannten Attributs als Objekt zurück.
  8. ServletInputStreamgetInputStream() – Ruft den Hauptteil der Anfrage als Binärdaten ab.
  9. String getAuthType() – gibt den Namen des Authentifizierungsschemas zum Schutz des Servlets zurück
  10. String getCharacterEncoding() – Gibt den Namen der Zeichenkodierung zurück, die im Hauptteil der Anfrage verwendet wird.
  11. String getContentType() – gibt den MIME-Typ des Hauptteils der Anfrage zurück.
  12. String getContextPath() – Gibt den Teil des Anforderungs-URI zurück und gibt den Kontextpfad des URI an
  13. String getHeader(Stringname) – gibt den Anforderungsheader als Zeichenfolge zurück
  14. String getMethod() – gibt den Namen der HTTP-Methode zurück, z. B. GET, POST
  15. String getParameter(Stringname) – gibt den Parameter der Anfrage als String zurück.
  16. String getPathInfo() – gibt die mit der URL verknüpften Pfadinformationen zurück
  17. String getQueryString() – gibt die Abfragezeichenfolge zurück, die der Anforderungs-URL zugeordnet ist
  18. String getServletPath() – gibt den Teil der URLs der Anfrage zurück, der die JSP aufruft
  19. 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:

JSP-Client-Anfrage

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:

  1. String encodeRedirectURL(String URL) – kodiert die URL in der RedirectURL-Methode.
  2. String encodeURL(String URL) – kodiert die URL unter Einbeziehung der Sitzungs-ID.
  3. Boolescher Wert enthältHeader(String-Name) – ob es einen Header in der JSP enthält oder nicht.
  4. Boolean isCommited() – Antwort wurde festgeschrieben oder nicht.
  5. Void addCookie(Cookie cookie) – fügt der Antwort ein Cookie hinzu
  6. Void addDateHeader(String name, String value) – Fügt den Datumsnamen und den Wert des Antwortheaders hinzu
  7. Void addHeader(String-Name, String-Wert) – Fügt einen Antwortheader mit Namen und Wert hinzu
  8. Void addIntHeader(String name,int value) – Fügt einen Antwortheader mit Namen und ganzzahligem Wert hinzu
  9. Leere SpülungBuffer() - erzwingt die Ausgabe des Inhalts im Puffer an den Client.
  10. Void-Reset() – löscht Daten im Puffer.
  11. Ungültiges ZurücksetzenBuffer - löscht den Inhaltspuffer in der Antwort, ohne Statuscodes zu löschen.
  12. Void sendError(intsc,Stringmsg) – sendet eine Fehlerantwort mit dem Statuscode an den Client.
  13. Void sendRedirect(String location) – sendet eine temporäre Umleitungsantwort an den Client.
  14. Leeres SetBufferGröße (int-Größe) – legt die Puffergröße des Bodys fest
  15. Void setCharacterEncoding(String charset) – legt die Zeichenkodierung fest
  16. Void setContentType(String-Typ) – legt den Inhaltstyp der Antwort fest
  17. Void setContentLength(intlen) – legt die Inhaltslänge der Antwort fest
  18. Void setLocale(Locale lcl) – legt den Gebietsschematyp der Antwort fest
  19. 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:

Antwort des JSP-Servers

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:

  1. 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
  2. Public void sendRedirect(String URL): Es generiert eine 302-Antwort zusammen mit dem Standortheader, der die URL des neuen Dokuments angibt
  3. 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.

  1. Statuscode – Dies kann einer der oben genannten sein. In diesem Fall haben wir es als 404 beschrieben
  2. 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:

JSP-HTTP-Statuscodes

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.