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