サーバーサイドインクルード | |
サーバーサイドインクルードを使用すると、前処理ディレクティブと同じように、ファイルの最終変更日などのさまざまな値、または完全なファイルをスクリプトに組み込むことができます。IIS でサポートされるサーバーサイドインクルードディレクティブは次のとおりです。
すべてのディレクティブが HTML で許可されます。ただし、HTML および ASP ページの両方で許可されるのは、#include ディレクティブのみです。ここでは、#include ディレクティブのみについて説明します。 |
サーバーサイドインクルード : コメントおよびトラブルシューティング | |
ファイルの組み込みは、再利用可能なコードを記述するための優れた方法です。この方法は、ほとんどすべてのスクリプトのコードで、データベースへの接続を確立する、必要がなくなったときに接続を閉じる、などの目的で頻繁に使用されます。サーバーサイドインクルードファイルは特定のファイル拡張子で終わる必要はありませんが、Microsoft では、プロジェクトで ASP スクリプトとインクルードファイルの簡単に管理できるセットを維持する方法として、 |
#include | |||||||
<!-- #include PathType = "strFileName" --> | |||||||
<!-- #include PathType = "strFileName" --> #include サーバーサイドインクルードを使用すると、指定したファイルのコンテンツを HTML コンテンツまたは ASP スクリプトに挿入できます。#includeサーバーサイドインクルードのステートメントは HTML コメントで囲む必要があります。このようにしないと、サーバーサイドインクルードのテキストはそのまま表示されます。 |
|||||||
パラメータ | |||||||
IIS 5.0 では、ファイルを組み込むための 2 番目の方法が導入されました。次のフォーマットで <SCRIPT> タグを SRC 属性と組み合わせて使用できます。 <SCRIPT LANGUAGE = "VBScript" RUNAT=SERVER SRC="strFileName"> </SCRIPT> 前のコードでは、strFileName パラメータは INCLUDE ディレクティブで使用されるものと同じであり、絶対パスまたは相対パスとすることができます。 |
|||||||
例 1 | |||||||
次のスクリプトには、単純な "先頭に戻る" のコード行、水平線、およびグラフィックのみが含まれています。 <!--ReturnTop.INC --> <CENTER> <HR> Click <A HREF = #top>here</A> to go back to the top of the page.<BR> <IMG SRC = "/Images/CorpLogo.GIF"></CENTER><BR> このファイルを、ページの先頭に戻る必要がある任意の部分に組み込むことができます。 <HTML> <HEAD><TITLE>Include Example</TITLE></HEAD> <BODY> <% [CODE TO RETRIEVE GLOSSARY TERMS FROM SQL SERVER DATABASE] ' Filter the recordset to include only the A's. adoRecGlossary.Filter = "UPPER(SUBSTRING(GlossTerm, 1)) = 'A'" ' Iterate through the items in the filtered recordset. Do While Not adoRecGlossary.EOF %> Term: <%=adoRecGlossary("GlossTerm")%><BR> Definition: <%=adoRecGlossary("GlossDef")%><BR> <% adoRecGlossary.MoveNext Loop ' Next include the link to top file: %> <!-- #include virtual = "/Includes/ReturnTop.INC" --> <% ' Repeat for the next letter... %> </BODY> </HTML> |
|||||||
例 2 | |||||||
次のスクリプトには、SRC メソッドと組み合わせた <SCRIPT> タグを使用してファイルに組み込まれる ASP コードが含まれています。 ' ReturnTop2.INC Response.Write "<CENTER>" Response.Write "<HR>" Response.Write "Click <A HREF = #top>here</A> to go back to the top of the page.<BR>" Response.Write "<IMG SRC = "/Images/CorpLogo.GIF"></CENTER><BR>" このファイルを、ページの先頭に戻る必要がある任意の部分に組み込むことができます。 <HTML> <HEAD> <TITLE>Include Example 2</TITLE> </HEAD> This page will now include a file...<BR> <SCRIPT LANGUAGE="VBScript" RUNAT="SERVER" SRC="ReturnTop2.INC"> </SCRIPT> . . . |
|||||||
メモ | |||||||
INCLUDE ディレクティブを使用すると、HTML または ASP コード、あるいはその 2 つの組み合わせが含まれたファイルを組み込むことができます。前述の例のように SCRIPT タグを使用して組み込むファイルには、ASP コードのみが含まれている必要があります。 例では、インクルードファイルを使用して、必要となる冗長な作業の量を減らす方法を示していますが、これらの例は非常に単純です。別の例として、データベースの DSN、ユーザー名、およびパスワードを含むインクルードファイルがあるとします。このインクルードファイルは、サイト全体で使用できます。これにより、ユーザー名とパスワードの変更が非常に簡単になります。つまり、インクルードファイル内で変更するだけで済みます。 #includeサーバーサイドインクルードを使用して ASP のコンテンツを組み込む場合は、いずれのスクリプトでも <%...%> のペアを使用する必要があります。それ以外の場合、ファイルのコンテンツは通常の HTML コードとして扱われます。 このサーバーサイドインクルードの 1 つの使用方法として、データベースアクセス情報など、頻繁に使用するスクリプトの部分をローカライズする方法があります。この方法を使用すると、ユーザー名とパスワードをすばやく効率的に変更できます。#include サーバーサイドインクルードをこの方法で使用する場合は、組み込むファイルが適切に保護されていることを確認します。 別のファイルに組み込まれるファイル内にファイルを組み込むことができます。指定したファイルのコンテンツを同じスクリプトに複数回組み込むこともできます。この 1 つの例が、単純なエラー処理スクリプトにあります。たとえば、次のファイルを考えます。 <% If Err.Number <> 0 Then %> <HTML> <HEAD><TITLE>Error Notice</TITLE></HEAD> <BODY> There has been an error in your script (<%=Request. ServerVariables("SCRIPT_NAME")%>.<BR> Please contact customer service at 1-800-555-HELP and tell them that you've experienced an error in (<%=Request. ServerVariables("SCRIPT_NAME")%> and that the parameters sent to the script were the following:<BR> (<%=Request.ServerVariables("QUERY_STRING")%>.<BR><BR> We apologize for the inconvenience. </BODY> </HTML> <% End If %> このファイル (この例では <%Response.Buffer = True%> <HTML> <HEAD><TITLE>Database Info Page</TITLE></HEAD> <BODY> <% Set adoCon = Server.CreateObject("ADODB.Connection") AdoCon.Open "MyDatabase" %> <!-- #include virtual = "/Accessory/ERROR.INC" --> <% Set adoRec = adoCon.Execute ("SELECT * FROM TopSales") %> <!-- #include virtual = "/Accessory/ERROR.INC" --> <% %> </BODY> このスクリプトでは、データベース接続を開いたときか、レコードセットを作成するときにエラーが発生した場合、標準のエラー通知およびヘルプの電話番号が含まれた、 ファイルを組み込むときは、組み込まれたファイルに現在のファイルが含まれないようにします。現在のファイルが含まれていると、Web サーバーでサービスを停止するエラーが発生し、Web サービスを停止して再開始しなければならなくなります。 また、サーバーサイドインクルードが任意のスクリプトコードよりも前に処理されるようにすることが重要です。このため、組み込むファイルを動的に指定することはできません。たとえば、次のスクリプトではランタイムエラーになります。 <% Dim strFileName strFileName = "/Apps/CustomConstants.INC" %> <!-- #include file="<%=strFileName%>"--> 最後に、サーバーサイドインクルードはスクリプト区切り文字 (<%...%>)、<SCRIPT></SCRIPT> タグ、および <OBJECT></OBJECT> タグの外側に配置する必要があります。たとえば、次のコードではランタイムエラーが発生します。このコードには閉じる %> 区切り文字がありません。 <% Dim strLastName strLastName = "Weissinger" <!-- #include file="/Apps/CustomConstants.INC"--> 次のコードでもエラーが発生します。 <SCRIPT LANGUAGE="VBScript"> Sub btnHello_Click( ) Dim strLastName strLastName = "Weissinger" <!-- #include file="/Apps/CustomConstants.INC"--> End Sub </SCRIPT> これは、HTML と ASP ファイルの両方で使用できる唯一のサーバーサイドインクルードです。ファイルで #include サーバーサイドインクルードを使用する場合、そのファイルの拡張子は、サーバーサイドインクルードを解釈するダイナミックリンクライブラリ |
|||||||