2009-12-11 12 views
7

Ich habe gerade eine Abschlussprüfung für Webanwendungen abgeschlossen. Eine eher einfache (wenn auch langwierige - 12 Seiten) Prüfung abzubrechen war eine Frage, die uns aufforderte, eine Implementierung von Sitzungen zu programmieren, ähnlich wie bei javax.http.HttpSession.Wie ist HttpSession implementiert?

Ich hasse es zuzugeben, es stocherte mich. Ich habe eine BS-Implementation mit einer HashMap gemacht und etwas Verrücktheit mit einer zufälligen Cookie-Folge gemacht, die auf eine serialisierte HashMap auf dem Server verweist, aber ich bin mir ziemlich sicher, dass es falsch ist ... und jetzt möchte ich wissen, wie es wirklich ist erledigt.

Besonders als jemand, der PHP ausgiebig verwendet hat, aber aus welchem ​​Grund auch immer nie die Magie hinter der Bequemlichkeit gelernt hat, bin ich sehr daran interessiert, mehr über die zugrunde liegenden Implementierungen von Sitzungen zu erfahren. J2EE und PHP sind sicher, aber auch andere Sprachen/Frameworks sind großartig. Vielen Dank!

Antwort

8

Von meinem Verständnis - Sie sind in der Nähe.

Aus meiner Sicht wird ein Cookie mit einer MD5 "ID" auf der Client-Seite gespeichert und per Cookie oder modifiziertem GET geliefert.

Auf der Serverseite werden die "Session" -Daten mit passender Sitzungs-ID in einer temporären Datei gespeichert (unter Linux ist sie standardmäßig auf/tmp gesetzt). Das Session-Verzeichnis, glaube ich, kann in der PHP.ini-Datei gesetzt werden.

+1

+1, sehr kurze Zusammenfassung. In PHP können Sie auch sehr einfach eigene Session Control Handler implementieren, falls Sie eine Datenbank oder eine andere Quelle für Ihre Sitzungsdaten verwenden möchten. Im Wesentlichen ist eine Sitzung nur eine einzigartige Menge von Daten mit einigen Methoden, um mit ihr zu interagieren (speichern, aktualisieren, löschen), und die Daten sind mit einem Benutzer über ein kleines identifizierbares Token verbunden, d. ein Cookie oder ein GET-Parameter. – zombat

+1

Es ist wahrscheinlich wert, dass die Namen der Cookies JSESSIONID bzw. PHPSESSIONID genannt werden. Sie müssen auch nicht unbedingt Cookies sein. Sie können Teil der URL sein wie: jsessionid = oder phsphesessionid = . –

+0

Eine gute Möglichkeit, die HTTP-Seite von Sitzungen zu verstehen, ist etwas wie HTTP-Header: https://addons.mozilla.org/en-US/firefox/addon/3829 –

1

Da es sich um eine Schnittstelle handelt, können Sie sich die Klasse (n) ansehen, die es in einem Open-Source-Webcontainer wie Tomcat implementiert, und sehen Sie selbst.