Servlets - Client-HTTP-Anforderung

Wenn ein Browser eine Webseite anfordert, sendet er viele Informationen an den Webserver, die nicht direkt gelesen werden können, da diese Informationen als Teil des Headers der HTTP-Anforderung übertragen werden. Weitere Informationen hierzu finden Sie im HTTP-Protokoll .

Im Folgenden finden Sie wichtige Header-Informationen, die von der Browserseite stammen und die Sie in der Webprogrammierung sehr häufig verwenden würden.

Sr.Nr. Header & Beschreibung
1

Accept

Dieser Header gibt die MIME-Typen an, die der Browser oder andere Clients verarbeiten können. Werte vonimage/png oder image/jpeg sind die beiden häufigsten Möglichkeiten.

2

Accept-Charset

Diese Überschrift gibt die Zeichensätze an, mit denen der Browser die Informationen anzeigen kann. Zum Beispiel ISO-8859-1.

3

Accept-Encoding

Dieser Header gibt die Arten von Codierungen an, mit denen der Browser umgehen kann. Werte vongzip oder compress sind die beiden häufigsten Möglichkeiten.

4

Accept-Language

Dieser Header gibt die bevorzugten Sprachen des Clients an, falls das Servlet Ergebnisse in mehr als einer Sprache liefern kann. Zum Beispiel en, en-us, ru usw.

5

Authorization

Dieser Header wird von Clients verwendet, um sich beim Zugriff auf kennwortgeschützte Webseiten zu identifizieren.

6

Connection

Dieser Header gibt an, ob der Client dauerhafte HTTP-Verbindungen verarbeiten kann. Durch dauerhafte Verbindungen kann der Client oder ein anderer Browser mehrere Dateien mit einer einzigen Anforderung abrufen. Ein Wert vonKeep-Alive bedeutet, dass dauerhafte Verbindungen verwendet werden sollten.

7

Content-Length

Dieser Header gilt nur für POST-Anforderungen und gibt die Größe der POST-Daten in Byte an.

8

Cookie

Dieser Header gibt Cookies an Server zurück, die sie zuvor an den Browser gesendet haben.

9

Host

Dieser Header gibt den Host und den Port an, wie in der ursprünglichen URL angegeben.

10

If-Modified-Since

Dieser Header gibt an, dass der Client die Seite nur dann möchte, wenn sie nach dem angegebenen Datum geändert wurde. Der Server sendet einen Code, 304 was bedeutetNot Modified Header, wenn kein neueres Ergebnis verfügbar ist.

11

If-Unmodified-Since

Dieser Header ist die Umkehrung von If-Modified-Since. Es gibt an, dass der Vorgang nur erfolgreich sein soll, wenn das Dokument älter als das angegebene Datum ist.

12

Referer

Dieser Header gibt die URL der verweisenden Webseite an. Wenn Sie sich beispielsweise auf Webseite 1 befinden und auf einen Link zu Webseite 2 klicken, wird die URL von Webseite 1 in den Referrer-Header aufgenommen, wenn der Browser Webseite 2 anfordert.

13

User-Agent

Dieser Header identifiziert den Browser oder einen anderen Client, der die Anforderung stellt, und kann verwendet werden, um unterschiedliche Inhalte an verschiedene Browsertypen zurückzugeben.

Methoden zum Lesen des HTTP-Headers

Es gibt folgende Methoden, mit denen Sie den HTTP-Header in Ihrem Servlet-Programm lesen können. Diese Methoden sind mit dem HttpServletRequest- Objekt verfügbar

Sr.Nr. Methode & Beschreibung
1

Cookie[] getCookies()

Gibt ein Array zurück, das alle Cookie-Objekte enthält, die der Client mit dieser Anforderung gesendet hat.

2

Enumeration getAttributeNames()

Gibt eine Aufzählung zurück, die die Namen der Attribute enthält, die für diese Anforderung verfügbar sind.

3

Enumeration getHeaderNames()

Gibt eine Aufzählung aller in dieser Anforderung enthaltenen Headernamen zurück.

4

Enumeration getParameterNames()

Gibt eine Aufzählung von String-Objekten zurück, die die Namen der in dieser Anforderung enthaltenen Parameter enthalten

5

HttpSession getSession()

Gibt die aktuelle Sitzung zurück, die dieser Anforderung zugeordnet ist, oder erstellt eine Sitzung, wenn die Anforderung keine Sitzung enthält.

6

HttpSession getSession(boolean create)

Gibt die aktuelle HttpSession zurück, die dieser Anforderung zugeordnet ist, oder gibt eine neue Sitzung zurück, wenn keine aktuelle Sitzung vorhanden ist und der Wert von create true ist.

7

Locale getLocale()

Gibt das bevorzugte Gebietsschema zurück, in dem der Client Inhalte akzeptiert, basierend auf dem Header "Accept-Language".

8

Object getAttribute(String name)

Gibt den Wert des benannten Attributs als Objekt zurück oder null, wenn kein Attribut des angegebenen Namens vorhanden ist.

9

ServletInputStream getInputStream()

Ruft den Hauptteil der Anforderung mithilfe eines ServletInputStream als Binärdaten ab.

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 die JSP nicht geschützt war.

11

String getCharacterEncoding()

Gibt den Namen der Zeichencodierung zurück, die im Hauptteil dieser Anforderung verwendet wird.

12

String getContentType()

Gibt den MIME-Typ des Hauptteils der Anforderung zurück oder null, wenn der Typ nicht bekannt ist.

13

String getContextPath()

Gibt den Teil des Anforderungs-URI zurück, der den Kontext der Anforderung angibt.

14

String getHeader(String name)

Gibt den Wert des angegebenen Anforderungsheaders als String zurück.

15

String getMethod()

Gibt den Namen der HTTP-Methode zurück, mit der diese Anforderung gestellt wurde, z. B. GET, POST oder PUT.

16

String getParameter(String name)

Gibt den Wert eines Anforderungsparameters als Zeichenfolge zurück oder null, wenn der Parameter nicht vorhanden ist.

17

String getPathInfo()

Gibt alle zusätzlichen Pfadinformationen zurück, die der URL zugeordnet sind, die der Client bei dieser Anforderung gesendet hat

18

String getProtocol()

Gibt den Namen und die Version des Protokolls der Anforderung zurück.

19

String getQueryString()

Gibt die Abfragezeichenfolge zurück, die in der Anforderungs-URL nach dem Pfad enthalten ist.

20

String getRemoteAddr()

Gibt die IP-Adresse (Internet Protocol) des Clients zurück, der die Anforderung gesendet hat.

21

String getRemoteHost()

Gibt den vollständig qualifizierten Namen des Clients zurück, der die Anforderung gesendet hat.

22

String getRemoteUser()

Gibt die Anmeldung des Benutzers zurück, der diese Anforderung stellt, wenn der Benutzer authentifiziert wurde, oder null, wenn der Benutzer nicht authentifiziert wurde.

23

String getRequestURI()

Gibt den Teil der URL dieser Anforderung vom Protokollnamen bis zur Abfragezeichenfolge in der ersten Zeile der HTTP-Anforderung zurück.

24

String getRequestedSessionId()

Gibt die vom Client angegebene Sitzungs-ID zurück.

25

String getServletPath()

Gibt den Teil der URL dieser Anforderung zurück, der die JSP aufruft.

26

String[] getParameterValues(String name)

Gibt ein Array von String-Objekten zurück, die alle Werte des angegebenen Anforderungsparameters enthalten, oder null, wenn der Parameter nicht vorhanden ist.

27

boolean isSecure()

Gibt einen Booleschen Wert zurück, der angibt, ob diese Anforderung über einen sicheren Kanal wie HTTPS gestellt wurde.

28

int getContentLength()

Gibt die Länge des Anforderungshauptteils in Byte zurück, die vom Eingabestream zur Verfügung gestellt wird, oder -1, wenn die Länge nicht bekannt ist.

29

int getIntHeader(String name)

Gibt den Wert des angegebenen Anforderungsheaders als int zurück.

30

int getServerPort()

Gibt die Portnummer zurück, an der diese Anforderung empfangen wurde.

Beispiel für eine HTTP-Header-Anforderung

Es folgt das verwendete Beispiel getHeaderNames()Methode von HttpServletRequest zum Lesen der HTTP-Header-Informationen. Diese Methode gibt eine Aufzählung zurück, die die Headerinformationen enthält, die der aktuellen HTTP-Anforderung zugeordnet sind.

Sobald wir eine Aufzählung haben, können wir die Aufzählung auf standardmäßige Weise durchlaufen , indem wir die hasMoreElements () -Methode verwenden, um zu bestimmen, wann gestoppt werden soll, und die nextElement () -Methode verwenden, um jeden Parameternamen abzurufen

// Import required java libraries
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
 
// Extend HttpServlet class
public class DisplayHeader extends HttpServlet {
 
   // Method to handle GET method request.
   public void doGet(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {
      
      // Set response content type
      response.setContentType("text/html");
 
      PrintWriter out = response.getWriter();
      String title = "HTTP Header Request Example";
      String docType =
         "<!doctype html public \"-//w3c//dtd html 4.0 " + "transitional//en\">\n";

      out.println(docType +
         "<html>\n" +
         "<head><title>" + title + "</title></head>\n"+
         "<body bgcolor = \"#f0f0f0\">\n" +
         "<h1 align = \"center\">" + title + "</h1>\n" +
         "<table width = \"100%\" border = \"1\" align = \"center\">\n" +
         "<tr bgcolor = \"#949494\">\n" +
         "<th>Header Name</th><th>Header Value(s)</th>\n"+
         "</tr>\n"
      );
 
      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");
      }
      out.println("</table>\n</body></html>");
   }
   
   // Method to handle POST method request.
   public void doPost(HttpServletRequest request, HttpServletResponse response)
      throws ServletException, IOException {

      doGet(request, response);
   }
}

Wenn Sie nun das obige Servlet aufrufen, wird das folgende Ergebnis generiert:

HTTP Header Request Example

Header Name Header Value(s)
accept */*
accept-language en-us
user-agent Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; InfoPath.2; MS-RTC LM 8)
accept-encoding gzip, deflate
host localhost:8080
connection Keep-Alive
cache-control no-cache