前の記事では、著者は、ASPビルトインオブジェクトアプリケーションとセッションを使用するための2つの非常に実用的な方法を詳細に紹介しました。 OnStartおよびOnEndイベントの両方のスクリプトをGlobal.ASAファイルで宣言する必要があるため、この記事ではGlobal.ASAファイルの使用方法を詳細に紹介します。誰もがこれまでに学んだ知識を習得できるようにするために、この記事には参照のためのASPチャットプログラムも含まれます。
最近、多くの友人が私に、最初の2つの問題でサンプルプログラムを実行するときに、なぜそのような間違いがあるのかと尋ねる手紙を送ってくれました。まず第一に、これらのプログラムは自分で書かれており、工場を出る前に資格検査に合格したことを宣言したいと思います。 :) Cookieは顧客情報を記録するためにプログラムで使用されているため、ブラウザでCookieを受け入れない場合、プログラムは正常に実行されません。さらに、クライアントのCookieで顧客情報を記録するためにプログラムが使用する方法は、ASPファイルの最初の<HTML>タグの前に記述する必要があります。 HTTP HTTPヘッダー情報が顧客に送信されている場合、response.cookieがHTTPヘッダー情報が顧客に送信された後に使用される場合、次のエラーが表示されます。HTTPヘッダーは顧客のブラウザーに書き込まれました。 HTTPヘッダーの変更は、ページコンテンツに書き込む前に必要です。 、一部の友人は、プログラムをクリップしたり、プログラムの事前順序とバックオーダーを中断したり、ASPサンプルプログラムの前にHTMLコードを誤って追加したりして、プログラムの実行にエラーが発生しない場合があります。したがって、一方では、ルーチンを初めて実行したときにプログラムに変更を加えないことをお勧めし、他方ではASPプログラムを理解するときに徐々に改善しようとすることをお勧めします。それ以外の場合は、少なくともブラウザで許容可能なCookieを選択する必要があります。
次に、Global.asaファイルの使用方法を紹介します。
Global.asaファイルとは何ですか?実際、プログラムライターがイベントスクリプトを指定し、セッションとアプリケーションのスコープでオブジェクトを宣言できるオプションファイルです。このファイルの内容は、ユーザーに表示されるのではなく、アプリケーションによってグローバルに使用されるイベント情報とオブジェクトを保存するために使用されます。ファイルの名前はglobal.asaである必要があり、アプリケーションのルートディレクトリに保存する必要があります。各アプリケーションには、1つのGlobal.ASAファイルのみを持つことができます。
global.asaファイルでは、含まれたスクリプトが<script>タグでカプセル化されていない場合、または定義されたオブジェクトにセッションまたはアプリケーションスコープがない場合、サーバーはエラーを返します。 global.asaファイルに任意のスクリプト対応言語で含まれるスクリプトを記述できます。複数のイベントが同じスクリプト言語である場合、それらは<script>タグのセットで整理できます。
Global.ASAファイルで宣言されたプロセスは、Application_Onstart、Application_Onend、Session_Onstart、およびsession_onendイベントに関連する1つ以上のスクリプトからのみ呼び出されます。 ASPベースのアプリケーションのASPページでは利用できません。アプリケーション間で手順を共有したい場合は、それらを別のファイルで宣言し、サーバーサイドインクルージョン(SSI)ステートメントを使用して、手順を呼び出すASPプログラムにファイルを含めることができます。一般に、含有ファイルの拡張子は.incでなければなりません。
これは非常に標準的なグローバルです。ASAファイル:
<スクリプト言語= vbscript runat = server>
'SESSION_ONSTARTは、クライアントが最初にASPアプリケーションで任意のページを実行したときに実行されます
'SESSION_ONENDは、クライアントのセッションがタイムアウトまたはアプリケーションを終了したときに実行されます
'Application_Onstartは、顧客が最初にアプリケーションのホームページにアクセスすると実行されます
'Application_Onendは、サイトのWebサーバーがダウンしているときに実行されます
< /script>
<スクリプト言語= vbscript runat = server>
sub application_onstart
VisitorCountFileName = server.mappath( /ex2) + /visitcount.txt
fileObject = server.createObject(scripting.filesystemObject)を設定します
set out = fileobject.opentextfile(visitorcountfilename、1、false、false)
アプリケーション(訪問者)= out.readline
Application(VisitorCountFileName)= VisitorCountFileName
End Sub
'======================================================= ===========================
sub application_onend
fileoutObject = server.createObject(scripting.filesystemObject)を設定します
set out = fileoutobject.createTextFile(application(visitorcountfileName)、true、false)
out.writeLine(アプリケーション(訪問者))
End Sub
'======================================================= ========================== sub Session_onstart
session.timeout = 5
アプリケーション(訪問者)=アプリケーション(訪問者) + 1
session(id)= session.sessionid
End Sub
< /script>
このGlobal.ASAプログラムでは、ASPのファイルアクセスコンポーネントが関与しており、ファイルシステムにアクセスするためのメソッド、プロパティ、およびコレクションを提供します。これについては、将来のASPコンポーネントで説明します。ここでは、サーバー上に新しいファイルを作成し、ファイルに書き込むのに役立ちます。これは、実際にはASPページアクセスカウンターアプリケーションのグローバルファイルです。顧客が最初にアプリケーションのホームページにアクセスするとき、Application_Onstartはサーバーで指定された仮想ディレクトリのVisitCount.txtのテキストファイルを定義し、アプリケーションレベルの変数内のファイルのパスとコンテンツ。クライアントがASPアプリケーションの任意のページにアクセスすると、プロセスセッション_ONSTART定義は、アプリケーションレベルの変数訪問者の値を自動的に追加します。このようにして、顧客がページにアクセスするたびに、可変訪問者はクリックスルーレートをカウントする機能に自動的に追加されます。変数の訪問者の値はシステムメモリに保存されるため、サーバーがシャットダウンまたは再起動されると、変数に保存されているデータは自動的に失われます。サーバーは、テキストファイルでシャットダウンまたは再起動します。これにより、サーバーが再度開始されると、application_onstartプロセスがvisitcount.txtファイルから以前の統計を読み取ることができます。
この期間の後、誰もが、よりシンプルなASPアプリケーションを書くことを学んだ組み込みのASPオブジェクトを使用することができたと思いますいくつかのシンプルだが実用的なASPアプリケーションを開発します。非常にシンプルなASP Webチャットルームのプログラムをお知らせください。たぶん、友人はいくつかの雑誌でASPチャットプログラムを書く方法を見てきたかもしれませんが、著者はここで1つの.ASPファイルのみを使用してよりシンプルなプログラムを書きました。次のコードをメモ帳にクリップし、chat.aspとして保存してください。
<%@言語= vbscript%>
<%
Response.Buffer = true '出力キャッシュを設定して、異なるページを表示します。
エラーの再開時に次の 'プログラムエラーパーツを無視します
if request.servervariables(request_method)= get end
'クライアントがWebページをどのようにリクエストするかを決定します
'------------------------------------------------------------- -------------------------------------------------------------- ---------------------------------
'顧客ログインインターフェイス
'------------------------------------------------------------- -------------------------------------------------------------- ---------------------------------
%>
<form method = post action = chat.asp> <p>
<入力タイプ=テキスト名=ニックサイズ= 20値=ニックスタイル= background-color:rgb(192,192,192)> <br>
<入力タイプ=チャットルームを入力= B1スタイル= RGB(255,255,0);
<p> <入力タイプ=非表示name = log size = 20 value = 1> <br> </p>
< /form>
<%
Response.End 'プログラムのプロセスを終了します
それ以外
Response.Clear 'キャッシュ内のコンテンツをクリアします
薄暗い話
if request.form(nick)<> then
'顧客がチャットインターフェイスにあるかどうかを判断します
session(nick)= request.form(nick)
ifを終了します
'-------------------------------------
顧客チャットインターフェイス
'-------------------------------------
%>
<form method = post action = chat.asp name = form1> <p> <%= session(nick)%> speak:<input type = text name = talk size = 50> <br>
<入力型=送信値=送信name = b1>
<入力タイプ=リセット値=キャンセルname = b2> </p>
< /form>
<a href =/asttest/shusheng/chat.asp> reave <//a> <br> <br>
<%
request.form(log)<> 1の場合
if trim(request.form(talk))= then
'ユーザーが何も入力していないかどうかを判断します
Talk = Session(Nick)&Silenceは金です。
それ以外
talk = trim(request.form(talk))
'キャラクターの後にスペースを削除します
ifを終了します
Application.Lock
アプリケーション(show)= <table border = '0' cellpadding = '0' cellpacing = '' width = '85% '> <tr> <td width =' 100% 'bgcolor ='#c0c0c0 '> < /td > < /tr> <tr> <td width = '100%'> <font color = '#0000ff'>&session(nick)&time&from&request.servervariables(remote_addr)&said:< /font>&< /td> < /tr> <tr> <td width = '100%' bgcolor = '#c0c0c0'> < /td> < /tr> < /table> <br>&application(show)
Application.UnLock
Response.Writeアプリケーション(show)
ifを終了します
ifを終了します
%>
このチャットルームプログラムの段階的な分析を実施しましょう。
まず、チャットルームのすべての顧客は、アプリケーションレベルの変数を使用してオブジェクトアプリケーションを使用することは避けられません - すべてのクライアントが読み取ることができるように、レベル。学んだリクエストオブジェクトを使用して、クライアントが会話を入力して変数トークに保存し、次のように、トークの価値をアプリケーションレベルの変数ショーに保存できます。
<%application(show)= talk&application(show)%>
次に考慮すべきことは、異なる顧客がチャットアプリケーションで同時に運営しているときにどのように対処するかです。この問題は、実際にはデータベースの2人のユーザーが同時に同じレコードを書いている場合と同じです。別のユーザー。そのため、2人のユーザーが同時にASPチャットルームアプリケーションに提出しようとすると、特定の測定値が別のユーザーの提出物に上書きされますセッションに出席していた人がそれを見た前に姿を消した。この種の問題を回避するには、アプリケーションオブジェクトのロックプロパティを使用して、アプリケーションオブジェクトのプロパティを編集または追加するために現在のユーザーのみを制限する必要があります。それまで明示的にロック解除されていますが、アプリケーションオブジェクトのプロパティは、他のユーザーが現時点でアプリケーションオブジェクトの編集を要求する場合にのみ編集できます。以下に示すように:
Application.Lock
アプリケーション(show)= talk&application(show)
Application.UnLock
プログラム全体の中核部分を理解したので、顧客情報を保存する方法を検討します。つまり、セッションで顧客のニックを保存します。のように:
session(nick)= request.form(nick)
最後に、考慮する必要があるのは、顧客ログインインターフェイス、顧客チャットインターフェイスなど、1つの.ASPファイルでのみさまざまなイベントを処理する方法です。クライアントが.ASPファイルを初めてリクエストしたときから、単純なHTTP GETメソッドを使用しますが、クライアントがページ上のフォームフィールドにデータを追加し、フォームをそれ自体に送信すると、.ASPファイルは再度リクエストされますが、これは、データがHTTP投稿に渡されます。ファイルの要求方法は、2つの方法で決定できます。まず、Request.Formコレクションにメンバーが含まれているかどうかをテストします。 2つ目は、request.servervariables(request_method)変数を使用することです。 FormがHTTP GETを介して要求された場合、この変数の戻り値は、フォームが送信された場合に取得して投稿します。後者の方法はファイルのリクエスト方法を決定する際により直接的であるため、次のコードを使用して判断を下します。
if request.servervariables(request_method)= get end
ASPキャッシュを設定しているため、プログラムがページリクエストメソッドが取得されると判断した場合、プログラムは応答を実行して、それ以外の場合は、後続のすべての操作を終了します。プログラムの実行。このようにして、同じ.ASPファイルを使用して、さまざまな状況に応じて異なるインターフェイスを顧客に表示できます。
さて、私はあなたにこのプログラムを自分で読んでくださいチャットで話さないでください、あなたは他の顧客の言うことを見ません。誰もがインターネットでの魅力を知っています。このチャットプログラムのレベルを徐々に改善して、誰もがオペラの隠されたバージョンを渡すことができるようにします。注:このチャットプログラムを使用すると、http://202.96.210.33/asp/chat.aspなどのIPアドレスにチャットアプリケーションを作成できます。あなたのコンピューターを通してそれはあなたがそれを信じないならば、