Wenn ein Browser eine Webseite anfordert, sendet er eine Reihe von Informationen an den Webserver, die nicht direkt gelesen werden können, da die Informationen als Teil der HTTP-Header übertragen werden. Weitere Informationen finden Sie im HTTP-Protokoll.
In der folgenden Tabelle sind einige wichtige Inhalte des browserseitigen Informationsheaders aufgeführt. Diese Informationen werden Sie in der zukünftigen Netzwerkprogrammierung häufig sehen:
Information | beschreiben |
---|---|
Akzeptieren | Gibt die MIME-Typen an, die der Browser oder ein anderer Client verarbeiten kann. Sein Wert ist normalerweise image/png oder image/jpeg |
Akzeptieren-Charset | Gibt den Zeichensatz an, der vom Browser verwendet werden soll. Wie ISO-8859-1 |
Akzeptieren-Kodierung | Geben Sie den Kodierungstyp an. Sein Wert ist normalerweise gzip oder compress |
Akzeptieren-Sprache | Geben Sie die bevorzugte Sprache des Clients an. Das Servlet gibt der Rückgabe eines Ergebnissatzes in der aktuellen Sprache Vorrang, wenn das Servlet diese Sprache unterstützt. Wie en, en-us, ru usw. |
Genehmigung | Identifizieren Sie verschiedene Benutzer beim Zugriff auf passwortgeschützte Webseiten |
Verbindung | Gibt an, ob der Client persistente HTTP-Verbindungen verarbeiten kann. Dauerhafte Verbindungen ermöglichen es dem Client oder Browser, mehrere Dateien in einer Anfrage abzurufen. Keep-Alive bedeutet, dauerhafte Verbindungen zu ermöglichen |
Inhaltslänge | Gilt nur für POST-Anfragen und gibt die Anzahl der Bytes der POST-Daten an |
Kekse | Gibt zuvor an den Browser gesendete Cookies an den Server zurück |
Gastgeber | Geben Sie den Hostnamen und die Portnummer in der Original-URL an |
Wenn-geändert-seit | Gibt an, dass der Client diese Webseite nur benötigt, wenn sie am angegebenen Datum geändert wurde. Der Server sendet einen 304-Code an den Client, der angibt, dass keine aktualisierten Ressourcen vorhanden sind. |
Wenn-unverändert-seit | Im Gegensatz zu If-Modified-Since ist der Vorgang nur dann erfolgreich, wenn das Dokument seit dem angegebenen Datum nicht geändert wurde |
Referent | Markiert die URL der referenzierten Seite. Wenn Sie sich beispielsweise auf Seite 1 befinden und dann auf einen Link zu Seite 2 klicken, wird die URL von Seite 1 in den Header der Browser-Anfrage für Seite 2 eingefügt. |
Benutzeragent | Wird verwendet, um von verschiedenen Browsern oder Clients gesendete Anforderungen zu unterscheiden und unterschiedliche Inhalte an verschiedene Browsertypen zurückzugeben |
Das Anforderungsobjekt ist eine Instanz der Klasse javax.servlet.http.HttpServletRequest. Immer wenn ein Client eine Seite anfordert, generiert die JSP-Engine ein neues Objekt, um die Anforderung darzustellen.
Das Anforderungsobjekt bietet eine Reihe von Methoden zum Abrufen von HTTP-Informationsheadern, einschließlich Formulardaten, Cookies, HTTP-Methoden usw.
Als Nächstes stellen wir einige in der JSP-Programmierung häufig verwendete Methoden vor, um HTTP-Informationsheader abzurufen. Weitere Informationen finden Sie in der folgenden Tabelle:
Seriennummer | Methode und Beschreibung |
---|---|
1 | Cookie[] getCookies() gibt ein Array aller Cookies auf dem Client zurück |
2 | Die Enumeration getAttributeNames() gibt eine Sammlung aller Attributnamen des Anforderungsobjekts zurück |
3 | Die Enumeration getHeaderNames() gibt eine Sammlung von Namen aller HTTP-Header zurück |
4 | Die Enumeration getParameterNames() gibt eine Sammlung aller Parameter in der Anfrage zurück |
5 | HttpSession getSession() gibt das der Anfrage entsprechende Sitzungsobjekt zurück. Wenn nicht, erstellen Sie eines. |
6 | HttpSession getSession(boolean create) gibt das der Anfrage entsprechende Sitzungsobjekt zurück. Wenn keins vorhanden ist und der Parameter create wahr ist, wird ein neues Sitzungsobjekt zurückgegeben. |
7 | Locale getLocale() gibt das Locale-Objekt der aktuellen Seite zurück, das als Antwort festgelegt werden kann |
8 | Das Objekt getAttribute(String name) gibt den Attributwert namens name zurück oder null, wenn er nicht vorhanden ist. |
9 | ServletInputStream getInputStream() gibt den angeforderten Eingabestream 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 JSP keine Schutzmaßnahmen festlegt |
11 | String getCharacterEncoding() gibt den Namen des Zeichenkodierungssatzes der Anfrage zurück |
12 | String getContentType() gibt den MIME-Typ des Anforderungstexts zurück oder null, wenn dieser unbekannt ist. |
13 | Der String getContextPath() gibt den im Anforderungs-URI angegebenen Kontextpfad zurück |
14 | String getHeader(String name) gibt den durch name angegebenen Informationsheader zurück |
15 | Der String getMethod() gibt die HTTP-Methode in dieser Anfrage zurück, z. B. GET, POST oder PUT |
16 | String getParameter(String name) gibt den durch name in dieser Anfrage angegebenen Parameter zurück oder null, wenn er nicht vorhanden ist. |
17 | Der String getPathInfo() gibt alle zusätzlichen Pfade zurück, die dieser Anforderungs-URL zugeordnet sind |
18 | Der String getProtocol() gibt den Protokollnamen und die Version zurück, die von dieser Anfrage verwendet werden |
19 | String getQueryString() gibt die in dieser Anforderungs-URL enthaltene Abfragezeichenfolge zurück |
20 | String getRemoteAddr() gibt die IP-Adresse des Clients zurück |
einundzwanzig | String getRemoteHost() gibt den vollständigen Namen des Clients zurück |
zweiundzwanzig | Die Zeichenfolge getRemoteUser() gibt den vom Client durch die Anmeldung authentifizierten Benutzer zurück oder null, wenn der Benutzer nicht authentifiziert ist. |
dreiundzwanzig | String getRequestURI() gibt den URI der Anfrage zurück |
vierundzwanzig | Der String getRequestedSessionId() gibt die durch die Anfrage angegebene Sitzungs-ID zurück |
25 | Der String getServletPath() gibt den angeforderten Servlet-Pfad 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 verschlüsselten Kanal wie HTTPS verwendet |
28 | int getContentLength() gibt die Anzahl der im Anforderungstext enthaltenen Bytes zurück. Wenn diese unbekannt ist, wird -1 zurückgegeben |
29 | int getIntHeader(String name) gibt den Wert des Anforderungsheaders mit dem angegebenen Namen zurück |
30 | int getServerPort() gibt die Server-Portnummer zurück |
In diesem Beispiel verwenden wir die Methode getHeaderNames() der Klasse HttpServletRequest, um die 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, verwenden Sie die Standardmethode, um das Enumeration-Objekt zu durchlaufen. Verwenden Sie dabei die Methode hasMoreElements(), um zu bestimmen, wann gestoppt werden soll, und die Methode nextElement(), um den Namen jedes Parameters abzurufen.
<%@ page import="java.io.*,java.util.*" %><html><head><title>HTTP-Header-Anforderungsbeispiel</title></head><body><center><h2 >HTTP-Header-Anforderungsbeispiel</h2><table align="center"><tr bgcolor="#949494"><th>Header-Name</th><th>Header-Wert(e)</th></tr ><% Aufzählung 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></center></body></html>
Wenn Sie auf main.jsp zugreifen, erhalten Sie die folgenden Ergebnisse:
Headername | Header-Wert(e) |
---|---|
akzeptieren | */* |
Accept-Sprache | de-uns |
Benutzeragent | Mozilla/4.0 (kompatibel; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; MS-RTC LM 8) |
Akzeptieren-Kodierung | gzip, entleeren |
Gastgeber | localhost:8080 |
Verbindung | Keep-Alive |
Cache-Kontrolle | Kein Cache |
Sie können andere Methoden der HttpServletRequest-Klasse im obigen Code ausprobieren.