Inhalt | 3. Grundlagen | 5. Java Servlet API |
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.
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
.