JSP Client-Anfrage
Wenn ein Browser eine Webseite anfordert, sendet er eine Reihe von Informationen an den Webserver, die nicht direkt gelesen werden können, weil diese Informationen als Teil der HTTP-Header übertragen werden. Weitere Informationen finden Sie im HTTP-Protokoll.
Die folgende Tabelle listet einige wichtige Inhalte der browser-seitigen Header auf, die in der zukünftigen Netzwerkprogrammierung häufig zu sehen sein werden:
| Information | Beschreibung |
|---|---|
| Accept | Gibt die MIME-Typen an, die der Browser oder andere Clients verarbeiten können. Sein Wert ist normalerweiseimage/pngoderimage/jpeg |
| Accept-Charset | Gibt den vom Browser zu verwendenden Zeichensatz an. Zum Beispiel ISO-8859-1 |
| Accept-Encoding | Gibt den Kodierungstyp an. Sein Wert ist normalerweisegzipoderdeflate |
| Accept-Language | Gibt die bevorzugte Sprache des Clients an. Das Servlet wird vorrangig Ergebnismengen zurückgeben, die in der aktuellen Sprache zusammengestellt sind, wenn das Servlet diese Sprache unterstützt. Zum Beispiel en, en-us, ru usw. |
| Authorization | Identifiziert verschiedene Benutzer beim Zugriff auf passwortgeschützte Webseiten |
| Verbindung | Gibt an, ob der Client HTTP-persistente Verbindungen verarbeiten kann. Persistente Verbindungen ermöglichen es dem Client oder Browser, mehrere Dateien in einer Anfrage abzurufen.Keep-AliveGibt an, dass die persistente Verbindung aktiviert ist |
| Content-Length | Gilt nur für POST-Anfragen und gibt die Anzahl der Bytes der POST-Daten an |
| Cookie | Gibt zuvor an den Browser gesendete Cookies an den Server zurück |
| Host | Gibt den Hostnamen und die Portnummer in der ursprünglichen URL an |
| If-Modified-Since | Gibt an, dass der Client diese Webseite nur benötigt, wenn sie nach dem angegebenen Datum geändert wurde. Der Server sendet einen 304-Code an den Client, was anzeigt, dass keine neueren Ressourcen vorhanden sind. |
| If-Unmodified-Since | Das Gegenteil von If-Modified-Since. Die Operation ist nur dann erfolgreich, wenn das Dokument nach dem angegebenen Datum nicht geändert wurde. |
| Referer | Kennzeichnet die URL der verweisenden Seite. Wenn Sie sich beispielsweise auf Seite 1 befinden und auf einen Link zu Seite 2 klicken, wird die URL von Seite 1 in die Header der Browser-Anfrage für Seite 2 aufgenommen. |
| User-Agent | Wird verwendet, um Anfragen verschiedener Browser oder Clients zu unterscheiden und verschiedenen Browsertypen unterschiedliche Inhalte zurückzugeben. |
HttpServletRequest-Klasse
Das Anfrageobjekt ist eine Instanz der Klasse javax.servlet.http.HttpServletRequest. Jedes Mal, wenn ein Client eine Seite anfordert, erstellt die JSP-Engine ein neues Objekt, um diese Anfrage zu repräsentieren.
Das Anfrageobjekt bietet eine Reihe von Methoden zum Abrufen von HTTP-Headern, einschließlich Formulardaten, Cookies, HTTP-Methoden und so weiter.
Im Folgenden werden einige Methoden vorgestellt, die in der JSP-Programmierung häufig zum Abrufen von HTTP-Headern verwendet werden. Einzelheiten finden Sie in der folgenden Tabelle:
| Nein. | Methode& Beschreibung |
|---|---|
| 1 | Cookie[] getCookies()Gibt ein Array aller Cookies vom Client zurück |
| 2 | Enumeration getAttributeNames()Gibt eine Sammlung aller Attributnamen des Anfrageobjekts zurück |
| 3 | Enumeration getHeaderNames()Gibt eine Sammlung der Namen aller HTTP-Header zurück |
| 4 | Enumeration getParameterNames()Gibt eine Sammlung aller Parameter in der Anfrage zurück |
| 5 | HttpSession getSession()Gibt das zur Anfrage gehörende Session-Objekt zurück oder erstellt eines, falls es nicht existiert |
| 6 | HttpSession getSession(boolean create)Gibt das zur Anfrage gehörende Session-Objekt zurück. Wenn keines vorhanden ist und der Parameter create true ist, wird ein neues Session-Objekt zurückgegeben. |
| 7 | Locale getLocale()Gibt das Locale-Objekt für die aktuelle Seite zurück, das in der Antwort festgelegt werden kann |
| 8 | Object getAttribute(String name)Gibt den Attributwert mit dem angegebenen Namen zurück oder null, wenn er nicht existiert. |
| 9 | ServletInputStream getInputStream()Gibt den Eingabestream der Anfrage zurück |
| 10 | String getAuthType()Gibt den Namen des Authentifizierungsschemas zurück, das zum Schutz des Servlets verwendet wird, z. B. "BASIC" oder "SSL", oder null, wenn für die JSP keine Schutzmaßnahmen festgelegt sind. |
| 11 | String getCharacterEncoding()Gibt den Namen der Zeichenkodierung der Anfrage zurück |
| 12 | String getContentType()Gibt den MIME-Typ des Anfragetexts zurück oder null, wenn er unbekannt ist |
| 13 | String getContextPath()Gibt den im Anfrage-URI angegebenen Kontextpfad zurück |
| 14 | String getHeader(String name)Gibt den durch name angegebenen Header zurück |
| 15 | String getMethod()Gibt die HTTP-Methode dieser Anfrage zurück, z. B. GET, POST oder PUT |
| 16 | String getParameter(String name)Gibt den Parameter mit dem angegebenen Namen in dieser Anfrage zurück oder null, wenn er nicht existiert |
| 17 | String getPathInfo()Gibt alle zusätzlichen Pfadinformationen zurück, die mit dieser Anfrage-URL verknüpft sind |
| 18 | String getProtocol()Gibt den Protokollnamen und die Version zurück, die von dieser Anfrage verwendet werden |
| 19 | String getQueryString()Gibt die in dieser Anfrage-URL enthaltene Abfragezeichenfolge zurück |
| 20 | String getRemoteAddr()Gibt die IP-Adresse des Clients zurück |
| 21 | String getRemoteHost()Gibt den vollqualifizierten Namen des Clients zurück |
| 22 | String getRemoteUser()Gibt den Benutzer zurück, der per Login auf dem Client authentifiziert wurde, oder null, wenn der Benutzer nicht authentifiziert wurde |
| 23 | String getRequestURI()Gibt die URI der Anfrage zurück |
| 24 | String getRequestedSessionId()Gibt die von der Anfrage angegebene Sitzungs-ID zurück |
| 25 | String getServletPath()Gibt den Servlet-Pfad des angeforderten Servlets zurück |
| 26 | String[] getParameterValues(String name)Gibt alle Werte des Parameters mit dem angegebenen Namen zurück oder null, wenn er nicht existiert |
| 27 | boolean isSecure()Gibt zurück, ob die Anfrage einen sicheren Kanal wie HTTPS verwendet hat |
| 28 | int getContentLength()Gibt die Anzahl der im Anfragekörper enthaltenen Bytes zurück oder -1, wenn unbekannt |
| 29 | int getIntHeader(String name)Gibt den Wert des Anfrage-Headers mit dem angegebenen Namen zurück |
| 30 | int getServerPort()Gibt die Portnummer des Servers zurück |
HTTP Header Example
In diesem Beispiel verwenden wir die Methode getHeaderNames() der Klasse HttpServletRequest, um HTTP-Header zu lesen. Diese Methode gibt die Header-Informationen der aktuellen HTTP-Anfrage in Form einer Enumeration zurück.
Nachdem Sie das Enumeration-Objekt erhalten haben, durchlaufen Sie das Enumeration-Objekt auf die Standardweise, verwenden Sie die Methode hasMoreElements(), um festzustellen, wann Sie stoppen sollten, und verwenden Sie die Methode nextElement(), um den Namen jedes Parameters zu erhalten.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="java.io.*,java.util.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Example(example.com)</title>
</head>
<body>
<h2>HTTP 头部请求实例</h2>
<table width="100%" border="1" align="center">
<tr bgcolor="#949494">
<th>Header Name</th><th>Header Value(s)</th>
</tr>
<%
Enumeration headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
String paramName = (String)headerNames.nextElement();
out.print("<tr><td>" + paramName + "</td>\n");
String paramValue = request.getHeader(paramName);
out.println("<td> " + paramValue + "</td></tr>\n");
}
%>
</table>
</body>
</html>
Der Besuch von main.jsp erzeugt das folgende Ergebnis:

Sie können andere Methoden der Klasse HttpServletRequest im obigen Code ausprobieren.
Weitere Erweiterungen