2009-12-11 22 views
7

私はちょうどWebアプリケーションの最終試験を終えました。むしろ簡単な(12ページもの長すぎます)試験を打ち消すことは、javax.http.HttpSessionのようなセッションの実装をコード化するよう質問する質問でした。HttpSessionはどのように実装されていますか?

私はそれが私を困惑させた。私は、HashMapを使ってむしろBSの実装を作り出し、サーバ上のシリアル化されたHashMapにランダムなクッキー文字列マッピングでいくらか狂気を見せましたが、私はそれが間違っていると確信しています...そして、完了しました。

特に、広範囲にPHPを使用していたが、利便性の背後にある魔法を学ぶことがなかった理由のため、セッションの基本的な実装についてもっと知りたいと思っています。 J2EEとPHPは確かですが、その他の言語やフレームワークも素晴らしいです。ありがとう!

答えて

8

私の理解から - あなたは近いです。

私の理解から、本質的にMD5「ID」であるクッキーは、クライアント側に保存され、クッキーまたは修正GETを介して配信されます。

サーバ側では、セッションIDが一致する「セッション」データが一時ファイルに保存されます(Linuxの場合、デフォルトでは/ tmpに設定されています)。私が信じるセッションディレクトリは、PHP.iniファイルで設定することができます。

+1

+1、非常に簡潔な要約。 PHPでは、セッションデータ用にデータベースやその他のソースを使用したい場合に備えて、独自のセッション制御ハンドラを実装することもできます。本質的に、セッションは、それと対話する(保存、更新、削除)いくつかのメソッドを持つユニークなデータセットであり、データは小さな識別可能なトークン、つまりユーザーに結び付けられます。クッキーまたはGETパラメータ – zombat

+1

おそらく、クッキーの名前はそれぞれJSESSIONIDとPHPSESSIONIDです。また、必ずしもクッキーである必要はありません。それらは、; jsessionid = または; phpsessionid = のようなURLの一部にすることができます。 –

+0

セッションのHTTP側を理解する良い方法は、HTTPヘッダーのようなものです:https://addons.mozilla.org/en-US/firefox/addon/3829 –

1

インターフェイスであるため、TomcatのようなオープンソースのWebコンテナで実装しているクラスを見て、自分で確認することができます。

関連する問題