Application/Sessionオブジェクトの使い方

 

ASPApplicationオブジェクトとSessionオブジェクトには、コレクション、プロパティ、メソッド、エベントがサポーとされています。ここでは、これらのコレクション、プロパティ、メソッド、イベントについて説明します。

 

  Applicationオブジェクト

Applicationオブジェクトには、変数名を指定して文字列、数値、日付、配列、オブジェクトなどの情報を保存することができます。

 

Application(“Name”) = “Kasai

Application(“Today”) = Date

Application(“Age”) = 25

Application(“Male”) = True

Application(“Array”) = Array(“one”,”two”,”three”)

Application(“ObjDict”) = Server.CreateObject(“Scripting.Dictionary”)

 

 

Application(variable) = value

 

variableには、Application変数名を指定します。valueには、文字列、数値、日付、配列、オブジェクト、Boolean(True/False)型のデータを指定することができます。Application変数は、グローバル変数ですからすべてのセッションから参照することができます。(セッションは、ユーザーが最初にWebサイトを訪問したときに作成されます。)また、Application変数はWebサーバーがシャットダウンされるまで有効です。Application変数を更新するときは、他のユーザーと競合しないようにLock/UnLockメソッドを使用して排他制御する必要があります。

 

Application.Lock

Application(“LastUpdated”) = Now()

Application.UnLock

 

Applicationオブジェクトには、表に示すようなコレクション、メソッド、イベントがサポートされています。

 

表 Applicationオブジェクトのコレクション/メソッド/イベント

コレクション

Contents

Applicationオブジェクトに作成したすべてのApplication変数が参照できます。

StaticObjects

HTML<object>タグで作成したすべてのオブジェクトが参照できます。

メソッド

Contents.Remove

ContentsコレクションからApplication変数を削除します。

Contents.RemoveAll()

ContentsコレクションからすべてのApplication変数を削除します。

Lock

他のユーザーをロックします。Application変数を更新するとき他のユーザーと競合しないように排他制御するときに使用します。

Unlock

ロックを解除します。ユーザーの排他制御を解除するときに使用します。

イベント

Application_OnStart

Webサイトの最初のSessionが作成されたときに発生します。このイベントは、Global.asaファイルで使用します。(詳細は5-7章参照)

Application_OnEnd

Webサーバーがシャットダウンされるときに発生します。このイベントは、Global.asaファイルで使用します。(詳細は5-7章参照)

 

 

 

図 Applicationオブジェクトのサンプル

 

Access + Webのダウンロードにサンプルが収録されています。ダウンロードの目次を表示させたら、「Application変数の設定と表示」をクリックしてください。Internet Explorerの左側のフレームにはASPのソースが表示されます。右側のフレームには、IISIEに送信したHTMLが表示されます。

 

図のASPの行5-15では、Application変数に各種情報を保存しています。行5では、他のユーザーと競合しないようにロックしています。行15では、ロックを解除しています。行10-13では、ADOで使用するConnectionStringApplication変数に保存しています。

 

application("ConnectionString") = _

  "Provider=Microsoft.Jet.OLEDB.4.0;" & _

  "Data Source=" & _

  server.MapPath("accweb/accweb.mdb")

 

Server.MapPath()メソッドは、引数で指定したファイルの物理アドレスを返します。

 

Server.MapPath(“accweb/accweb.mdb”)

èD:\Inetpub\wwwroot\accweb\samples\asp\accweb\accweb.mdb

 

21-23では、ApplicationオブジェクトのContents.Countプロパティを利用してApplication変数の個数をブラウザに送信しています。

 

response.write "There are " &

  application.Contents.Count & _

  " Application variables:<p>”

è There are 6 Application variables:

 

24-36for each…nextループでは、ApplicationオブジェクトのContentsコレクションからApplication変数を取り出して変数名と値をブラウザに送信しています。for eachstrNameには、Application変数の変数名が格納されます。

 

response.write  "<b>" & strName & ":</b> [" & _

  application.Contents(strName) & "]<br>"

èVisitors: [0]

èActiveUsers: [0]

èAppName: [システム名]

èAppVersion: [V1.00]

・・・

 

25では、IsArry()関数を使用してApplication変数が配列型かどうか調べています。行26-31for…nextループでは、配列変数の変数名と要素値をブラウザに送信しています。Application変数から要素値を取得するには、要素番号(インデックス)を指定して取得します。

 

Application(“variablename”)(index)

 

Response.Writeメソッドでは、Application変数名と配列変数の要素値をブラウザに送信しています。

 

response.write "<b>" & strName & _

  "(" & intI & "):</b> [" & _

  application(strName)(intI) & "]<br>"

èArray(0): [a]

èArray(1): [b]

èArray(2): [c]

 


  Sessionオブジェクト

 

Sessionオブジェクトには、変数名を指定して文字列、数値、日付、配列、オブジェクトなどの情報を保存することができます。

 

Session(“Name”) = “Kasai

Session(“Time”) = Time

Session(“Age”) = 25

Session(“Male”) = False

Session(“Array”) = Array(1,2,3)

Session(“ObjDict”) = Server.CreateObject(“Scripting.Dictionary”)

 

 

Session(variable) = value

 

variableには、Session変数名を指定します。valueには、文字列、数値、日付、配列、オブジェクト、Boolean(True/False)型のデータを指定することができます。

Session変数は、Session固有の領域に作成されますので他のSessionから参照することはできません。また、Session変数を更新するとき、他のユーザーと競合することはありませんので排他制御も不要です。

 

Sessionオブジェクトには、表に示すようなコレクション、プロパティ、メソッド、イベントがサポートされています。

 

表 Sessionオブジェクトのコレクション/プロパティ/メソッド/イベント

コレクション

Contents

Sessionオブジェクトに作成したすべてのSession変数が参照できます。

StaticObjects

HTML<object>タグで作成したすべてのオブジェクトが参照できます。

プロパティ

CodePage

ASPページの内容を表示するときに使用するCodePageを設定/参照することができます。参考までに、日本語(漢字)のCodePage932、英語のCodePage1252です。

LCID

地域のLCID(Locale ID)を設定/参照することができます。参考までに、日本のLCID1041、米国のLCID1033、英国のLCID2057です。

LCIDは、FormatCurrency()関数で金額をフォーマットするときなどに使用します。

例:

Session.LCID=1041   ‘ Japanese

FormatCurrency(100)  è\100

 

Session.LCID=1033   ‘ English - US

FormatCurrency(100)  è$100.00

 

Session.LCID=2057   ‘ English - UK

FormatCurrency(100)  è100.00

SessionID

Sessionに割り当てられたユニークなIDを参照できます。

Timeout

Sessionのタイムアウト時間(分)を設定/参照できます。

メソッド

Abandon

Sessionを強制終了させます。

Contents.Remove

ContentsコレクションからSession変数を削除します。

例:

Session.Contents.Remove(“variablename”)

Contents.RemoveAll()

ContentsコレクションからすべてのSession変数を削除します。

イベント

Session_OnStart

Webサイトを新しいユーザーが訪問したときに発生します。このイベントは、Global.asaファイルで使用します。(詳細は5-7章参照)

 

Session_OnEnd

SessionがタイムアウトまたはSession.Abandonメソッドを発行したときに発生します。Sessionのタイムアウト時間は、Session.Timeoutで再設定できます。このイベントは、Global.asaファイルで使用します。(詳細は5-7章参照)

 

 

図 Sessionオブジェクトのサンプル

 

Access + Webのダウンロードにサンプルが収録されています。ダウンロードの目次を表示させたら、「Session変数の設定と表示」をクリックしてください。Internet Explorerの左側のフレームにはASPのソースが表示されます。右側のフレームには、IISIEに送信したHTMLが表示されます。

 

図のASPの行5-7では、Session変数に各種情報を保存しています。行7では、配列のデータを保存しています。

 

13-15では、SessionオブジェクトのContents.Countプロパティを利用してSession変数の個数をブラウザに送信しています。

 

response.write "There are " & _

  session.Contents.Count & _

  " Session variables<br>"

è There are 6 Session variables

 

 

16-28for each…nextループでは、SessionオブジェクトのContentsコレクションからSession変数を取り出して変数名と値をブラウザに送信しています。for eachstrNameには、Session変数の変数名が格納されます。

 

response.write "<b>" & strName & ":</b> [" & _

  session.Contents(strName) & "]<br>”

èUserID: [9999]

èUserName: [Akio Kasai]

 

17では、IsArray()関数を使用してSession変数が配列型かどうか調べています。行18-23for…nextループでは、配列変数の変数名と要素値をブラウザに送信しています。Session変数から要素値を取得するには、要素番号(インデックス)を指定して取得します。

 

              Session(“variablename”)(index)

 

Response.Writeメソッドでは、Session変数名と配列変数の要素値をブラウザに送信しています。

 

response.write "<b>" & strName & _

  "(" & intI & "):</b> [" & _

  session(strName)(intI) & "]<br>"

èArray(0): [a]

èArray(1): [b]

èArray(2): [c]