|
||||
|
|
12章 Session オブジェクト
|
|
|
Sessionオブジェクトの概要
先ずセッションとは、Webサーバ(アプリケーション)と Webクライアント(ブラウザ)の接続している状態のことをいいます。そして今回ご紹介する Sessionオブジェクトとは、Webアプリケーションが各クライアントに対して個別に用意できるオブジェクトになります。 前章でご紹介して Applicationオブジェクトが [ Webアプリケーション内で全クライアントが 共有して使用できるオブジェクト ] であったのに対して、Sessionオブジェクトとは [ 各クライアントが Applicationとのセッションが確立されている間保持しつづけることが出来るオブジェクト ] と言えます。
このSessionオブジェクトの値はサーバ側に保持されます。イメージ的にはロッカーに格納されているような感じです。サーバには複数のクライアントからアクセスがありますので、どのクライアントがどの番号のロッカーを使用しているのか区別をしなくてはいけません。そしてここで区別をするカギとなるのがクライアントに Cookieとして書き込まれています。 そのため Sessionオブジェクトを使用するには Cookieに対応しているブラウザで、Cookieを利用できる状態であることが条件となります。 コレクション
Contents
Session.Contents( 変数名 ) = "代入値"
Session.Contentsコレクションはセッションが確立している間、同一アプリケーション内であれば、どのASPからも参照する事の出来るスコープを持つ項目の集まりになります。こちらもApplicationオブジェクト同様、代入/参照などの時は Contents を省略して Session("要素名") と記述する事もできます。 [ Sample1 ]
'# 値の代入 Session.Contents("sample1") = "Hello World" Session("sample1") = "Hello World" 上のサンプル2行は全く同じ動作をします。2行目に記述したサンプルは "Contents" を省略しているのが分かると思います。 [ Sample2 ]
'# 値の参照 Response.Write(Session.Contents("sample1")) Response.Write(Session("sample1")) 結果は次のようになります。参照時にも "Contents" を省略しましたが結果は同じになります。
Hello World Hello World メソッド
Abandon
Session.Abandon
Abandonメソッドはセッション情報を全てを明示的に破棄します。Abandonメソッドが呼び出されない時はセッションがタイムアウトになった時点でセッション情報が破棄されます。 [ Sample ]
Session.Abandon 'セッション情報をいったん全て破棄します。 Contents.Remove
Application.Contents.Remove ( 変数名|インデックス )
Contents.Removeメソッドは Sessionオブジェクトから一つの変数を削除するときに使用します。全ての変数を一括して削除する場合には後述するContents.RemoveAllメソッドを使用します。 [ Sample ]
Session("sample1") = "Hello World" Response.Write(Session("sample1")) '@ Session.Contents.Remove("sample1") Response.Write(Session("sample1")) 'A 上記スクリプトを実行すると、@の時点のWriteメソッドでは"Hello World"と出力されますが、Removeメソッドにて要素が削除されたAの時点では何も出力されません。 Contents.RemoveAll
Session.Contents.RemoveAll()
Contents.Removeメソッドは Sessionオブジェクトから全ての変数を削除するときに使用します。一つの変数のみ削除したい場合にはContents.Removeメソッドを使用します。 [ Sample ]
Session("sample1") = "Hello World" Session("sample2") = "Hello World" Session.Contents.RemoveAll Response.Write(Session("sample1")) Response.Write(Session("sample2")) データの出力前にContents.RemoveAllメソッドを実行しています。そのためその下で Writeメソッドを実行していますが、ここでは何も出力はされません。 プロパティ
LCID
Session.LCID ( = ロケール識別子 )
ロケール識別子は、各国を数字で表す番号になります。 [ Sample ]
'#スクリプトロケール番号を表示します Response.Write(Session.LCID) SessionID
Session.SessionID
SessionIDプロパティはクライアントがサーバにアクセスした時に自動的に生成されるプロパティで、セッションごとにユニークな長整数型の識別子になります。アプリケーションの起動中にこのIDが重複する事はありません。しかしIISの再起動を行なった場合に以前使用したSessionIDが割り振られることは考えられます。 [ Sample ]
Response.Write(Session.SessionID)
上記スクリプトを実行すると現在のセッション識別子が表示されます。別のクライアントからこのページにアクセスするとインクリメントされ、異なった値が表示されます。 Timeout
Session.Timeout ( = 分 )
Timeoutプロパティはセッションのタイムアウトの時間を分単位で取得/設定します。 このプロパティの標準は 20で、20分間サーバに対して更新や要求を行なわれなければセッションオブジェクトが破棄されます。Timeoutプロパティに数値を設定した場合、その時間を変更する事が出来ます。また、明示的にセッションオブジェクトの破棄を行ないたい場合は Abandonメソッドを実行します。 [ Sample ]
'# セッションタイムアウトを 5分に設定 Session.Timeout=5 |
||||||||||||||||||||||||||||