この記事では、主にASP組み込みのオブジェクトアプリケーションとそれを参照できる友人に関する関連情報を紹介します。
前の記事では、著者がASPビルトインオブジェクトの応答を使用する方法を詳細に紹介します。
データの送信、受信、および処理に使用されるオブジェクトに加えて、ASPのアクティブサーバーアプリケーションと個々のユーザー情報を表す非常に実用的なオブジェクトもいくつかあります。
最初にアプリケーションオブジェクトを見てみましょう。同じ仮想ディレクトリとそのサブディレクトリ内のすべての.ASPファイルがASPアプリケーションを構成します。アプリケーションオブジェクトを使用する代わりに、特定のアプリケーションのすべてのユーザー間で情報を共有し、サーバー操作中にデータを永続的に保存できます。さらに、アプリケーションオブジェクトには、アプリケーションレベルのデータとイベントへのアクセスを制御する方法もあり、アプリケーションが起動して停止したときにプロセスをトリガーするために使用できます。
アプリケーションオブジェクトについて一緒に学びましょう。
1。属性
アプリケーションオブジェクトには組み込みプロパティはありませんが、次の構文を使用してユーザー定義のプロパティを設定できます。これはコレクションとも呼ばれます。
アプリケーション(プロパティ/コレクション名)=値
次のスクリプトを使用して、アプリケーションオブジェクトのプロパティを宣言および作成できます。
- <%
- アプリケーション(myvar)= hello
- setApplication(myobj)= server.createObject(myComponent)
- %>
アプリケーションオブジェクトのプロパティを割り当てると、アプリケーションが停止するようにWebサーバーサービスがシャットダウンされるまで持続します。アプリケーションオブジェクトに保存されている値は、アプリケーションのすべてのユーザーが読み取ることができるため、アプリケーションオブジェクトのプロパティは、アプリケーションのユーザー間で情報を渡すのに特に適しています。
2。メソッド
アプリケーションオブジェクトには2つのメソッドがあり、どちらもアプリケーションに保存されているデータを作成する複数のユーザーを処理するために使用されます
1.ロック方法は、他の顧客がアプリケーションオブジェクトのプロパティを変更することを禁止しています。
ロック方法により、他の顧客がアプリケーションオブジェクトに保存されている変数を変更して、1人の顧客のみがアプリケーション変数を同時に変更およびアクセスできるようにすることを防ぎます。ユーザーがロック解除メソッドを明示的に呼び出さない場合、.ASPファイルが終了またはタイムアウトした後、サーバーはアプリケーションオブジェクトのロックを解除します。
アプリケーションを使用してページアクセスの数を記録する次のプログラムを見てみましょう。
<%
dim numvisitsnumvisits = 0
Application.LockApplication(numvisits)= application(numvisits) + 1
Application.UnLock
%>
このページへようこそ、あなたはこのページの<%= application(numvisits)%>訪問者です!
上記のスクリプトを.aspファイルに保存し、ページにカウンターを簡単に追加します。
2.ロックメソッドに反して、ロック解除方法により、他の顧客はアプリケーションオブジェクトのプロパティを変更できます。
上記の例では、上記の例では、ロック解除メソッドがオブジェクトのロックを解除して、次のクライアントがNumVisitsの値を増やすことができるようにします。
iiiイベント
1。Application_Onstart
Application_Onstartイベントは、新しいセッションの最初の作成(つまり、Session_Onstartイベント)の前に発生します。 Application_Onstartイベントは、Webサーバーが起動し、アプリケーションに含まれるファイルへのリクエストを許可するとトリガーされます。 Application_Onstartイベントの処理は、Global.ASAファイルに記述する必要があります。
Application_Onstartイベントの構文は次のとおりです。
- <scriptlanguage = scriptlanguagerunat = server>
- subapplication_onstart ...
- Endingub
- </script>
2。Application_Onend
Application_Onendイベントは、Application_Onendイベントの処理もglobal.asaファイルに記述する必要があります。
アプリケーションオブジェクトを使用するときに注意しなければならないものを見てみましょう。
ASPビルトインオブジェクトは、アプリケーションオブジェクトに保存できません。たとえば、以下の各行はエラーを返します。
- <%
- setApplication(var1)=セッション
- setApplication(var2)=リクエスト
- setApplication(var3)=応答
- setApplication(var4)= server
- setApplication(var5)=アプリケーション
- setApplication(var6)= objectContext
- %>
配列をアプリケーションオブジェクトに保存する場合、配列に格納されている要素を直接変更しないでください。たとえば、次のスクリプトは実行できません。
<%application(storedarray)(3)= new値%>
これは、アプリケーションオブジェクトがコレクションとして実装されているためです。 Array Element StoredArray(3)新しい割り当ては取得されませんでした。この値はアプリケーションオブジェクトコレクションに含まれ、この場所に以前に保存されていた情報を上書きします。配列をアプリケーションオブジェクトに保存するときに、配列内のオブジェクトを取得または変更する前に、配列のコピーを取得することをお勧めします。アレイで操作する場合は、すべての配列をアプリケーションオブジェクトに保存して、変更した変更が保存されるようにする必要があります。次のスクリプトはこれを示しています。
--- ASP8a.asp ---
- <%
- dimmyArray()
- RedimmyArray(5)
- MyArray(0)=こんにちは
- myArray(1)= sometherstring
- Application.Lock
- Application(StoredArray)= MyArray
- Application.UnLock
- Response.redirectasp8b.asp
- %>
--- ASP8b.asp ---
- <%
- localArray = application(storedArray)
- LocalArray(1)=そこ
- Response.WriteLocalArray(0)&localArray(1)
- Application.Lock
- Application(StoredArray)= LocalArray
- Application.UnLock
- %>
アプリケーションオブジェクトと同様の機能を持つ別の非常に実用的なASPビルトインオブジェクトはセッションです。セッションオブジェクトを使用して、特定のユーザーセッションに必要な情報を保存できます。ユーザーがアプリケーションのページ間でジャンプすると、セッションオブジェクトに保存されている変数はクリアされず、ユーザーがアプリケーションのページにアクセスするときにこれらの変数が常に存在します。ユーザーがアプリケーションからWebページをリクエストすると、ユーザーがセッションを持っていない場合、Webサーバーは自動的にセッションオブジェクトを作成します。セッションの有効期限が切れたり、放棄されたりすると、サーバーはセッションを終了します。
サーバー上のセッションオブジェクトは、クライアントプログラムに一意のCookieを送信することで管理できます。ユーザーがASPアプリケーションのページを初めてリクエストしたとき、ASPはHTTPヘッダー情報をチェックして、メッセージにASPSESTIONIDという名前のCookieがあるかどうかを確認します。セッションの価値は、新しいAspsessionID Cookieの値としてクライアントに送信します。セッションオブジェクトの最も一般的な機能は、ユーザーの好みを保存することです。たとえば、ユーザーがグラフィックを表示したくないことを示した場合、情報をセッションオブジェクトに保存できます。さらに、顧客を識別するプログラムでよく使用されます。セッションステータスはCookieをサポートするブラウザでのみ保持されていることに注意してください。顧客がCookieオプションをオフにした場合、セッションは機能しません。
1。属性
1。SessionId
SessionIDプロパティは、ユーザーのセッションIDを返します。セッションを作成するとき、サーバーは各セッションに対して個別のIDを生成します。セッション識別子は、細長いデータ型として返されます。多くの場合、SessionIDはWebページの登録統計に使用できます。
2。タイムアウト
タイムアウトプロパティは、アプリケーションのセッションオブジェクトのタイムアウト時間制限を数分で指定します。このタイムアウト期間内にユーザーがWebページを更新またはリクエストしない場合、セッションは終了します。
2。メソッド
セッションオブジェクトには1つのメソッドのみがあります。これは、セッションオブジェクトに保存されているすべてのオブジェクトを削除し、これらのオブジェクトのソースをリリースします。放棄メソッドを明示的に呼び出さない場合、セッションがタイムアウトしたらサーバーはこれらのオブジェクトを削除します。サーバーが現在のページの処理が完了したとき、次の例がセッション状態をリリースします。
<%session.abandon%>
iiiイベント
セッションオブジェクトには、セッションオブジェクトの開始とリリースが実行されるときに使用できる2つのイベントがあります。
1. SESSION_ONSTARTイベントは、サーバーが新しいセッションを作成するときに発生します。サーバーは、要求されたページを実行する前にスクリプトを処理します。 Session_Onstartイベントは、ページにアクセスする前に設定されているため、セッション変数を設定するのに最適な時期です。
セッションオブジェクトは、session_onstartイベントにリダイレクトまたはエンドメソッド呼び出しが含まれている場合に残りますが、サーバーはGlobal.asaファイルの処理を停止し、セッション_onstartイベントをトリガーするファイル内のスクリプトをトリガーします。
特定のWebページを開くときにユーザーが常にセッションを開始するようにするには、session_onstartイベントでリダイレクトメソッドを呼び出すことができます。ユーザーがアプリケーションを入力すると、サーバーはユーザーのセッションを作成し、Session_Onstartイベントスクリプトを処理します。このイベントにスクリプトを含めるには、ユーザーが開いたページが起動ページであるかどうかを確認できます。そうでない場合は、response.redirectメソッドを呼び出すようにユーザーに指示してWebページを開始します。手順は次のとおりです。
- <scriptrunat = serverlanguage = vbscript>
- subsession_onstart
- startpage =/myapp/starthere.asp
- currentPage = request.servervariables(script_name)
- ifstrcomp(currentPage、startPage、1)その後
- Response.redirect(startPage)
- endif
- Endingub
- </script>
上記のプログラムは、Cookieをサポートするブラウザでのみ実行できます。 CookieをサポートしないブラウザはSessionID Cookieを返すことができないため、ユーザーがWebページをリクエストするたびにサーバーは新しいセッションを作成します。このように、リクエストサーバーごとに、Session_Onstartスクリプトが処理され、ユーザーがスタートアップページにリダイレクトされます。
2。Session_Onendイベントは、セッション中に発生またはタイムアウトされます。
セッションオブジェクトの使用について注意してください。前の記事を参照してください。
セッションは、次の3つの方法で開始できます。
1.新しいユーザーは、アプリケーション内の.ASPファイルを識別するURLへのアクセスを要求し、アプリケーションのGlobal.ASAファイルにはsession_onstartプロセスが含まれます。
2.ユーザーは、セッションオブジェクトに値を保存します。
3.ユーザーはアプリケーションの.ASPファイルを要求し、アプリケーションのGlobal.ASAファイルは<Object>タグを使用して、セッションスコープを持つオブジェクトのインスタンスを作成します。
ユーザーが指定された時間内にアプリケーション内のページを要求または更新しない場合、セッションは自動的に終了します。この期間のデフォルト値は20分です。インターネットサービスマネージャーのアプリケーションオプションプロパティページにセッションタイムアウトプロパティを設定することにより、アプリケーションのデフォルトのタイムアウト制限設定を変更できます。この値は、Webアプリケーションの要件とサーバーのメモリスペースに従って設定する必要があります。たとえば、Webアプリケーションを閲覧したいユーザーが各ページに数分間滞在したい場合は、セッションのデフォルトのタイムアウト値を短くする必要があります。過度に長いセッションのタイムアウト値は、あまりにも多くのオープンセッションを引き起こし、サーバーのメモリリソースを使い果たします。特定のセッションの場合、デフォルトのタイムアウト値よりも小さいタイムアウト値を設定する場合は、セッションオブジェクトのタイムアウトプロパティを設定できます。たとえば、次のスクリプトでは、タイムアウト値を5分に設定します。
<%session.timeout = 5%>
もちろん、デフォルトの設定よりも大きなタイムアウト値を設定することもできます。また、セッションオブジェクトの放棄方法を介してセッションを明示的に終了することもできます。たとえば、テーブル内の終了ボタンを提供し、次のコマンドを含む.aspファイルのURLにボタンのアクションパラメーターを設定します。
<%session.abandon%>
今日、私たちは、特にWebベースのBBSまたはチャットでASPをよく使用する2つの組み込みオブジェクトを学びました。 。
上記は、この記事についてです。