Application/Sessionオブジェクトの使い方
ASPのApplicationオブジェクトとSessionオブジェクトには、コレクション、プロパティ、メソッド、エベントがサポーとされています。ここでは、これらのコレクション、プロパティ、メソッド、イベントについて説明します。
● Applicationオブジェクト
Applicationオブジェクトには、変数名を指定して文字列、数値、日付、配列、オブジェクトなどの情報を保存することができます。
Application(“Name”) = “
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のソースが表示されます。右側のフレームには、IISがIEに送信したHTMLが表示されます。
図のASPの行5-15では、Application変数に各種情報を保存しています。行5では、他のユーザーと競合しないようにロックしています。行15では、ロックを解除しています。行10-13では、ADOで使用するConnectionStringをApplication変数に保存しています。
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-36のfor each…nextループでは、ApplicationオブジェクトのContentsコレクションからApplication変数を取り出して変数名と値をブラウザに送信しています。for eachのstrNameには、Application変数の変数名が格納されます。
response.write "<b>" & strName & ":</b> [" & _
application.Contents(strName) & "]<br>"
èVisitors: [0]
èActiveUsers: [0]
èAppName: [システム名]
èAppVersion: [V1.00]
・・・
行25では、IsArry()関数を使用してApplication変数が配列型かどうか調べています。行26-31のfor…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”) = “
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を設定/参照することができます。参考までに、日本語(漢字)のCodePageは932、英語のCodePageは1252です。 |
|
LCID |
地域のLCID(Locale ID)を設定/参照することができます。参考までに、日本のLCIDは1041、米国のLCIDは1033、英国のLCIDは2057です。 LCIDは、FormatCurrency()関数で金額をフォーマットするときなどに使用します。 例: Session.LCID=1041 ‘ Japanese FormatCurrency(100) ‘ è\100 Session.LCID=1033 ‘ English - US FormatCurrency(100) ‘ è$100.00 Session.LCID=2057 ‘ English - 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のソースが表示されます。右側のフレームには、IISがIEに送信した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-28のfor each…nextループでは、SessionオブジェクトのContentsコレクションからSession変数を取り出して変数名と値をブラウザに送信しています。for eachのstrNameには、Session変数の変数名が格納されます。
response.write "<b>" & strName & ":</b> [" & _
session.Contents(strName) & "]<br>”
èUserID: [9999]
èUserName: [Akio Kasai]
行17では、IsArray()関数を使用してSession変数が配列型かどうか調べています。行18-23のfor…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]