- PR -

セッションオブジェクトの保存先

1
投稿者投稿内容
etu118
会議室デビュー日: 2004/12/16
投稿数: 4
お住まい・勤務地: 大阪
投稿日時: 2004-12-16 19:41
サーブレットで、セッションに対して何かのパラメータを指定する場合
通常、こんな具合に記述すると思います。

// セッションを開始します
HttpSession session = request.getSession(true);
// セッションに情報を設定します
session.setAttribute("MESSAGE" , "セッション管理");

たとえば、10人の人が当ページにアクセスした際
10コ分のスレッド(インスタンス)のそれぞれの
セッションオブジェクトがMESSAGE="セッション管理"
になると思いますが

このMESSAGE="セッション管理"という値を保持してる
クラスというのは、何のクラスになるのでしょうか?

私の知識で間違いなければ
HttpSessionは、クラスではなく、インタフェースですので
一般のクラス同様に値を保持することができないと認識してます。
となりますと、このMESSAGE="セッション管理"というのは
何のクラスが保持しているのかが、わかりません。

初歩的な質問で大変申し訳ございませんが
ご存じの方が、いらっしゃいましたら
どうか、ご教授くださいますよう、お願い申し上げます。
na2fusi
会議室デビュー日: 2003/06/08
投稿数: 16
投稿日時: 2004-12-16 20:00
何故そんなことをしたいのか分かりませんが・・・

session.getClass().getName();

とすればこのsessionのクラス名が分かります。
getClass()はjava.lang.Objectのメソッドなので
sessionに限らずどのクラスでも使えます。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-12-16 20:09
HttpSession という型で変数を宣言していますが、実際にはそれを実装(= implements HttpSession)したクラスが処理を受け持ちます。
この実際のクラスはコンテナによって異なります。
getClass().getName() によって取得できるクラス名は Tomcat や WebLogic などで違うのが確認できるでしょう。
それぞれのコンテナ毎に工夫を凝らして実装できるように仕様ではインターフェースだけを規定しているわけですが通常ユーザはそれを意識する必要はありません。
1

スキルアップ/キャリアアップ(JOB@IT)