公開されたシリーズでは、アプリケーションオブジェクトとセッションオブジェクトという2つのASPオブジェクトについて説明しました。そのため、アプリケーションオブジェクトとセッションオブジェクトが提供するコレクション、メソッド、プロパティ、およびイベントにアクセスできます。このセクションでは、プログラミングの観点からこれら2つのオブジェクトを研究します。
・ASP DLLがロードされ、ASP Webページへの最初のリクエストが応答されたときに、アプリケーションオブジェクトを作成します。このオブジェクトは、すべての訪問者が開いたすべてのWebページで利用可能な変数とオブジェクトを保存するストレージ場所を提供します。
・訪問者がサイトから初めてASPページを要求した場合、彼のセッションオブジェクトを作成し、デフォルトのタイムアウト期間(またはスクリプトによって決定されるタイムアウト期間)まで有効なままです。オブジェクトは、セッションのアクティビティ中に訪問者が開いたWebページでのみ利用可能な変数とオブジェクトを保存するためのストレージ場所を提供します。
関係
1。ASPアプリケーションオブジェクトメンバーの概要
このセクションでは、アプリケーションオブジェクトのコレクション、方法、およびイベントについて説明します(アプリケーションオブジェクトにはプロパティがありません)。 [プロパティ付き)セッションオブジェクトについては、次のセクションで説明します。次に、これらのオブジェクトで達成されたタスクを調査し続け、各オブジェクトの各メンバーがどのように機能するかをより詳細に説明します。
1。アプリケーションオブジェクトのコレクション
アプリケーションオブジェクトは、グローバルアプリケーションスペースに保存されている変数とオブジェクトにアクセスするために使用できる2つのコレクションを提供します。コレクションと説明は次のとおりです。
テーブルアプリケーションオブジェクトの収集と説明
| 集める | 説明します |
| コンテンツ | <Object>要素を使用して定義されたアプリケーションオブジェクトに保存されているすべての変数(およびその値)のセットはありません。バリアント配列への参照とバリアントタイプオブジェクトインスタンスが含まれています |
| staticobjects | <Object>要素を使用して定義されたアプリケーションオブジェクトに保存されているすべての変数(およびその値)のコレクション |
2。アプリケーションオブジェクトの方法
アプリケーションオブジェクトメソッドにより、グローバルアプリケーションスペースで値を削除し、そのスペース内の変数への同時アクセスを制御できます。方法と指示を次の表に示します。
テーブルアプリケーションオブジェクトの方法と説明
| 方法 | 説明します |
| contents.remove(variable_name) | application.contentコレクションからvariable_nameという名前の変数を削除します |
| contents.removeall() | Application.Contentコレクションからすべての変数を削除します |
| ロック() | 現在のASPページのみがコンテンツにアクセスできるように、アプリケーションオブジェクトをロックします。 2人のユーザーが値を同時に読み取って変更できる方法によって実行される同時操作を保証するために使用されます。 |
| Unlock() | アプリケーションオブジェクトのASP Webページのロックを解除します |
ランタイム中に、application.staticObjectsコレクションから変数を削除できないことに注意してください。
3。アプリケーションオブジェクトのイベント
次の表に示すように、アプリケーションオブジェクトは、開始および終了時にトリガーされる2つのイベントを提供します。
テーブルアプリケーションオブジェクトのイベントと説明
| イベント | 説明します |
| スタート | ASPが起動したとき、ユーザーがWebページの実行を要求する前、ユーザーがセッションオブジェクトを作成する前にトリガーされます。変数の初期化、オブジェクトの作成、または他のコードの実行に使用する |
| OnEnd | ASPアプリケーションが終了するとトリガーされます。最後のユーザーセッションが終了した後に発生し、そのセッションのOnEndイベントのすべてのコードが実行されました。最後に、アプリケーションに存在するすべての変数がキャンセルされます |
ASPのセッションオブジェクトメンバーの概要
このセクションでは、セッションオブジェクトのすべてのメンバーの概要を説明します。
1。セッションオブジェクトのコレクション
セッションオブジェクトは、ユーザーのローカルセッションスペースに保存されている変数とオブジェクトにアクセスするために使用できる2つのセットを提供します。これらのコレクションと説明を次の表に示します。
テーブルセッションオブジェクトの設定と説明
| 集める | 説明します |
| コンテンツ | この特定のセッションオブジェクトに保存されているすべての変数とその値のコレクション、およびこれらの変数と値は、<オブジェクト>要素を使用して定義されていません。バリアント配列への参照とバリアントタイプオブジェクトインスタンスが含まれています |
| staticobjects | このセッションオブジェクトに保存されているすべての変数のコレクションは、<オブジェクト>要素を使用して定義されています |
2。セッションオブジェクトの特性
セッションオブジェクトは4つのプロパティを提供します。これらのプロパティと説明は、次の表に示されています。
表3-7セッションオブジェクトのプロパティと説明
| 財産 | 説明します |
| コードページ | 読み取り/書き込み。整数。ブラウザにページコンテンツを表示するためのコードページを定義します。コードページは文字セットの数値であり、異なる言語や場所で異なるコードページを使用できます。たとえば、ANSIコードページ1252は、アメリカの英語およびほとんどのヨーロッパ言語で使用されています。コードページ932は、日本のキャラクターに使用されます |
| lcid | 読み取り/書き込み。整数。ブラウザに送信されたページエリアID(LCID)を定義します。 LCIDは、たとえば、2057年の現在の地域を定義する通貨シンボルを独自に識別する国際標準の略語です。 LCIDは、オプションのLCIDパラメーターがある限り、形式およびその他のステートメントで使用することもできます。 LCIDは、ASP処理命令<%&Hellip;%>に設定することもでき、セッションのLCID属性の設定よりも優先されます。この章では、後でASP処理の指示のリストを説明します |
| sessionid | 読み取り専用。長い形。セッションの作成時にサーバーによって生成されるこのセッションのセッション識別子を返します。親アプリケーションオブジェクトの寿命の間にのみ一意なので、新しいアプリケーションが開始されたときに再利用できます |
| タイムアウト | 読み取り/書き込み。整数。このセッションの数分でタイムアウト期間を定義します。ユーザーがタイムアウト期間中にWebページを更新またはリクエストしない場合、セッションは終了します。各Webページで必要に応じて変更できます。デフォルト値は10分です。今回は、使用が高いサイトで短くなるはずです |
3。セッションオブジェクトの方法
セッションオブジェクトにより、ユーザーレベルのセッションスペースから指定された値を削除し、必要に応じてセッションを終了できます。 Seesionオブジェクトの方法と説明を次の表に示します。
テーブルセッションオブジェクトの方法と説明
| 方法 | 説明します |
| contents.remove(variable_name) | session.contentコレクションからvariable_nameという名前の変数を削除します |
| contents.removeall() | SESSION.CONTENTコレクションからすべての変数を削除します |
| 放棄する() | Webページの実行が完了すると、現在のユーザーセッションが終了し、現在のセッションオブジェクトが文書化されていません。ただし、メソッドが呼び出された後でも、ページ内の現在のセッションの変数にアクセスできます。ユーザーが次のページをリクエストすると、新しいセッションが開始され、新しいセッションオブジェクトが作成されます(存在する場合) ランタイム中にセッションから削除できないことに注意してください。 |
4。セッションオブジェクトのイベント
セッションオブジェクトは、表3-9に示すように、スタートアップと終了時にトリガーされる2つのイベントを提供します。
表3-9セッションオブジェクトのイベントと説明
| イベント | 説明します |
| スタート | ユーザーがリクエストしたWebページが実行される前に、ASPユーザーセッションが開始されたときにトリガーされました。変数の初期化、オブジェクトの作成、または他のコードの実行に使用されます。 |
| OnEnd | ASPユーザーセッションが終了したときにトリガーされます。アプリケーションへのユーザーの最後のページリクエストから、事前に決められたセッションタイムアウト期間を超えた場合、イベントがトリガーされます。セッションが終了したら、そのセッションのすべての変数をキャンセルします。このイベントは、放棄方法を使用してコード内のASPユーザーセッションを終了するときにもトリガーされます |
アプリケーションとセッションを使用したイベント
ASPのアプリケーションおよびセッションオブジェクトは、他のASPビルトインオブジェクトにはない機能を反映しています。ただし、前のオブジェクトメンバーテーブルに見られるように、これらはASPセッションとアプリケーションの作業に関連するイベントです。
1。アプリケーションとセッションのためのイベントハンドラー
アプリケーションまたはセッションが開始または終了するたびに、ASPはイベントをトリガーします。これらのイベントは、アプリケーションのルートディレクトリにあるGlobal.ASAと呼ばれる特別なファイルに通常のスクリプトコードを記述することで検出および回答できます(デフォルトのWebサイトは /inetpub /wwwrootディレクトリ、または実際のアプリケーション)。このファイルには、アプリケーションまたはユーザーセッション内で使用するコンポーネントインスタンスを作成するために使用されるHTMLの1つ以上の<オブジェクト>要素を含めることができます。
次のコードは、global.asaファイルの例です。 <オブジェクト>要素と、セットキーワードで始まるコードの行のみに焦点を当てます。
| <! - ASPCounterコンポーネントのインスタンスを宣言します アプリケーションレベルのスコープで// - > <オブジェクトID = AspCounter runat = server scope = application progid = mswc.counters> </オブジェクト> <! - aspcontentlimkコンポーネントのインスタンスを宣言します セッションレベルのスコープで//-> <オブジェクトID = ASPCONTENTLINK RUNAT =サーバースコープ=セッション progid = mswc.nextlink> </オブジェクト> <スクリプト言語= vbscript runat = server> sub application_onstart() 'アプリケーションレベルのスコープでADOレコードセットのインスタンスを作成する Application(adoconnection)= server.createObject(adodb.Connection)を設定します Dim Vararray(3) 'バリアント配列を作成して記入します vararray(0)=これはaです vararray(1)=バリアント配列 vararray(2)=に保存されています Vararray(3)=アプリケーションオブジェクト Application(variant_array)= vararray'storeアプリケーションで application(start_time)= cstr(now) '日付/時刻を文字列として保存します Application(Visit_Count)= 0 'カウンター変数をゼロに設定します End Sub sub application_onend() Application(AdoConnection)= Nothingを設定します End Sub sub sesson_onstart() 'セッションレベルのスコープで吸着剤コンポーネントのインスタンスを作成する セットセッション(aspadrotator)= server.createobject(mswc.adrotator) Dim Vararray(3) 'バリアントアリーを作成して記入します vararray(0)=これはaです vararray(1)=バリアント配列 vararray(2)=に保存されています Vararray(3)=セッションオブジェクト セッション(variant_array)= vararray 'セッションに保存します session(start_time)= cstr(now) '日付/時刻を文字列として保存します 'session_onstartでリクエストと応答のコンテンツにアクセスできます 'セッションを開始したページのイベントハンドラー。 'ASPページのコンテキストがこのように利用可能である場所。 「例として、ユーザーのIPアドレスを取得できます。 session(your_ip_address)= request.servervariables(remote_addr) Application.Lock intvisits = application(visit_count)+1 Application(visit_count)= intvisits Application.UnLock End Sub Sub Session_Onend() セットセッション(aspadrotator)=何もありません End Sub </スクリプト> |
このblobal.asaファイルはこの章の例で使用されているため、ファイルをWebサイトのルートディレクトリに配置するか、仮想アプリケーションとして構成されたディレクトリに配置する必要があります。 。
値を読み取り、保存します
上記の例に注意して、リクエストと応答オブジェクトのコレクションを使用するのと同じように、アプリケーションとセッションの変数の読み取り方法に注意してください。これらの変数の値を設定します。
| アプリケーション(variable_name)= variable_value アプリケーション(variable_name)= variable_array_variable_name set application(variable_name)= object_reference |
これらの変数の値を取得します。
| variable_value = application(variable_name) variant_array_variable = application(variable_name) set object_reference = application(variable_name) |
もちろん、セッションオブジェクトについても同じアプローチをとることができます。
ASP Webページからアクセスした場合、同じ処理が必要な場合、アプリケーションオブジェクトをロックおよびロック解除する方法を確認できます。これは、アプリケーションイベント内のコードを使用してアプリケーションオブジェクトの値にアクセスする場合は必要ありません。これは、どのアプリケーションにもアプリケーションオブジェクトのインスタンスが1つだけであり、そのイベントハンドラーのコードがアクティブなユーザーセッションがない場合にのみ実行されるためです。
また、基本的なユーザーセッションカウンターがどのように実装されているかを確認することもできます。以下は、アプリケーションレベルの変数Visit_Countです。これは、新しいセッションが開始されると自動的に増加します。 一般に、単に値をアプリケーションまたはセッションオブジェクトに単純に保存することは制限されていません。たとえば、Web開発者のWebサイトには、http://webdev.wrox.co.ukのASAファイルがありますrequest.servervariablesコレクションから取得されます。これにより、訪問者の数を数え、訪問者に関する基本的な情報を収集するための基本的な方法が提供されます。