Sonntag, 12. Dezember 2010

Nachtrag HTTP Cookies und Session

In der letzten Vorlesung haben wir gelernt wie man im zustandlosen HTTP Protokoll einen Zustand auf dem Client (Webbrowser, z.B. Firefox) oder Server (z.B. Jetty oder Tomcat) speichern kann.

HTTP Cookie
Dazu haben wir HTTP Cookies betrachtet und wie man diese mit der Servlet API setzen und lesen kann. Das Cookie besteht aus einem Key und einem Value was jeweils Strings sein müssen. Ein Cookie wird als HTTP Header Attribut im Request und Repsonse übertragen. Der HTTP Server kann über ein HTTP Header im Response den Client auffordern, ein neues Cookie zu speichern. Dazu wird das Header Attribut Set-Cookie verwendet. Anschließend schickt der HTTP Client bei jedem HTTP Request an diesen Server (Domain) das Cookie. Es wird dazu im Request der Header Cookie vom Client gesetzt.

Beispiel Cookie lesen und schreiben
1.) Der HTTP Server fordert den Client auf das Cookie mit dem Namen sellerHistory zuspeichern.

2.) Bei jedem weiteren HTTP Request an diesen Server wird das Cookie vom Client gesetzt.

3.) Soll das Cookie einen neuen Wert bekommen, kann der Server im Response erneut den Client auffordern das Cookie mit dem Namen sellerHistory zu schreiben.

Anschließend schickt nun der HTTP Client immer den neuen Wert zum Server.

Beispiel Cookie lesen und schreiben mit der Java Servlet API
Hier der Java Quelltext zum setzen und lesen des Cookies vom Ablauf oben.

HTTP Session
Mit Cookies lassen sich Daten auf dem Client speichern. In vielen Anwendungsfällen möchte man aber die Daten nicht auf einem unbekannten HTTP Client (Browser) speichern. Dann muss der Zustand auf dem HTTP Server gespeichert werden. Dazu haben wir in der letzten Vorlesung das Konzept der HTTP Session kennengelernt. Damit ein Client einer Session auf dem Server zugeordnet werden kann, wird ein Session Cookie geschrieben. Ein Session Cookie ist ein Cookie mit einer ID. Über dieses Session Cookie (bzw. über die ID des Cookies) wird ein HTTP Client einer Sitzung zugeordnet die auf dem Server gespeichert wurde.

In der HTTP Session können über die Java Servlet API Key-Value Paare gespeichert werden. Da die Daten nicht auf den Client geschrieben werden, kann man beliebige Objekte die als serialsierbar markiert sind im Value speichern. Als Key muss ein String angegeben werden.

Beispiel
Wenn die History der von einem Client, angelegten Verkäufer nun nicht mehr auf dem Client gespeichert werden soll sondern auf dem Server, sieht der Java Quelltext wie folgt aus.

Keine Kommentare:

Kommentar veröffentlichen