Inhalt 3. Grundlagen 5. Java Servlet API

4.   Header

4.1   Request Header

Unmittelbar auf einen GET oder POST Request werden vor den Formulardaten Header geschickt, die der Browser setzt. Die Methode getHeaderNames von HttpServletRequest liefert eine Enumeration der Namen aller empfangenen Header. Auf die Daten kann das Servlet direkt mit Hilfe von getHeader zugreifen. Für die Abfrage der gebräuchlichsten Header stehen eigene Methoden bereit.

Eine Familie von Headern teilt dem Server mit, welche Typen, Zeichensätze und Sprachen vom Client unterstützt werden. Zwei Header enthalten Länge und Typ der übertragenen Daten. Browser müssen Host und Port der ursprünglichen Internetadresse angeben, damit diese Informationen bei der Weiterleitung nicht verloren gehen. Header werden außerdem zum Senden von Cookies, der bedingten Anforderung von Webseiten und zur Autorisation eingesetzt. Ebenso kann der Client auf das Caching des Proxyservers Einfluss nehmen.

4.2   Response Header

Response Header werden von Servlets mit der Methode setHeader von HttpServletResponse gesetzt, die als Parameter den Namen des Headers und seinen Wert als Zeichenkette erwartet. So empfängt der Client Cookies, Änderungsdatum der Seite und Größe einer Datei oder ein Zeitintervall, nach dessen Ablauf der Browser das Dokument neu laden soll.

Analog zu Requests stehen für häufig verwendete Response Header eigene Methoden zur Verfügung. Werte, die ein Datum oder eine Ganzzahl repräsentieren, können mit setDateHeader beziehungsweise setIntHeader spezifiziert werden, die Umwandlung in eine Zeichenkette geschieht intern.

Moderne Browser, die ein komprimiertes Dokument mit entsprechendem Content-Encoding Header empfangen, entpacken die Daten automatisch und behandeln sie wie den ursprünglichen Inhalt. Um dem Server mitzuteilen, dass sie diese Fähigkeit besitzen, setzen sie beim Request den Accept-Encoding Header. Auf diese Weise werden Zeit und Kosten gespart, weil Komprimierung und Expansion im Vergleich zur Datenübertragung relativ effizient durchführbar sind.

Das Protokoll erlaubt auch die Angabe mehrerer gleichnamiger Header, die verschiedene Inhaltstypen oder Cookies spezifizieren. Weil man beispielsweise in geerbten Prozeduren gesetzte Header nicht entfernen kann, muss bei Bedarf ein zusätzlicher Header mit derselben Bezeichnung hinzugefügt werden. Die Prüfung, ob ein Header bereits existiert, erfolgt mit Hilfe der Methode containsHeader.

5. Java Servlet API