【 定義系三種の神器 】
<% と %> |
ASP はなにも指定しなければ、HTMLのみを記述する静的ページとなります <% はスクリプトの始まりを示し、%> はスクリプトの終わりを示します 通常、「HTML に スクリプトが埋め込まれた」と表現されますが、プログラマ は、スクリプト以外は Response.Write されている と考えるべきです
|
使用パターンは、目的別に考えるといくつかあります
1) ノーマル
<%
スクリプト記述
%>
<HTML>
<BODY>
</BODY>
</HTML>
2) つぎはぎ
<% if a = b then %>
HTML タグ
<% else %>
HTML タグ
<% end if %>
3) 埋め込み
<INPUT type=text name=Field value="<%= Request.Form("Field") %>">
4) All Script
<%
function MyFunction
関数処理記述
end function
%>
5) コメント
<% '********************* クライアントに表示されないコメント %>
<INPUT type=submit name=send value="送信">
外部ファイルの取り込み |
C の#include に近い機能です。コードが評価される前に外部ファイルの取り 込みが行なわれます。プリプロセスのようなものになります 上記理由により、インクルードされるファイル名は動的に変更できません。ま た、HTML 内に記述する必要があります。これは、.asp 以外の拡張子を持 つ stm、.shtm、および .shtml といった SSI を目的としたファイルに記述す る為です インクルードされるファイルの拡張子は特に決まっていませんが、.inc が推 奨されています インクルードされるファイルの中にさらにインクルードの記述を行なうネスト は可能ですが、無限ループを起こすようなネストにはエラーで対処されます
|
指定方法1 ( 相対パス )
<!-- #include file ="headers\header1.inc" -->
指定方法2 ( 仮想ディレクトリからの完全な仮想パス )
<!-- #include virtual ="/myapp/footer.inc" -->
インターネット インフォメーション サービス スナップインで [親のパスを有効にする] オプションをオンに している場合は、キーワード file を構文 (..\) と共に使用して、親ディレクトリ (1 つ上のディレクトリ) のファイルをインクルードすることもできます
何れも、/ と \ を使用できます。後述の SCRIPT タグの src 属性での使用も同じです
動的な結果変更 |
指定するファイル名は変更できませんが、処理結果を変更する事は可能です
|
<%
if True then
%><!-- #include file ="typea.inc" --><%
else
%><!-- #include file ="typeb.inc" --><%
end if
%>
処理結果とは、あくまで HTTP 出力の結果であって インクルードされないという事ではありません
使用方法として言うならば、スクリプト内で HTML を埋め込む 処理です
スクリプトのみをインクルードする |
<SCRIPT language="VBScript" runat=SERVER src="func.vbs"></SCRIPT>
|
この方法では、サーバとクライアントでスクリプト処理を共有する事ができます。その場面は限定されています が、標準化の一部として利用する価値はあります
IIS の定義毎にひとつ |
アプリケーションという単位で一つ持つ事ができますが、省略する事ができます 考え方としては、アプリケーションの初期化ファイルといった位置づけで良いと 思います プログラマがこの中身を書く事は稀ですが、何が書かれているかをアプリケーシ ョンの仕様を知る目的で知る義務はあります
|
仕様 |
以下のものが記述できます アプリケーション イベント セッション イベント <OBJECT> 宣言 TypeLibrary 宣言
|
以下はその一例です
<OBJECT RUNAT=Server SCOPE=Application ID=OraSession PROGID="OracleInProcServer.XOraSession"></OBJECT>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Application_OnStart
OraSession.CreateDatabasePool 1,40,200,"SV", "SYSTEM/MANAGER", 0
Application( "HomeUrl" ) = "/"
Application( "DefUrl" ) = "/def"
Application( "IncUrl" ) = "/inc"
Application( "CssUrl" ) = "/css"
Application( "CsvUrl" ) = "/csv"
Application( "ImageUrl" ) = "/image"
Application( "GlobalUrl" ) = "/global"
Application( "SessionUrl" ) = "/session"
Application( "Domain" ) = "mydomin.com"
Application( "DelPath" ) = "D:\session"
End Sub
Sub Session_OnStart
Dim SessionValue(10)
SessionValue(0) = ""
SessionValue(1) = ""
SessionValue(2) = ""
SessionValue(3) = ""
SessionValue(4) = ""
SessionValue(5) = ""
SessionValue(6) = ""
SessionValue(7) = ""
SessionValue(8) = ""
SessionValue(9) = ""
Session( "Value" ) = SessionValue
Session( "OutOption" ) = "FALSE"
End Sub
Sub Session_OnEnd
Dim FileSystem
sPath = Application( "DelPath" ) & "\" & Session.SessionID & "*.*"
Set FileSystem = Server.CreateObject( "Scripting.FileSystemObject" )
On Error Resume Next
FileSystem.DeleteFile sPath
On Error Goto 0
End Sub
</SCRIPT>
Oracle OO4O 用のオブジェクトタグは、Oracle に昔から付いているサンプルですが、アプリーケーション 全体で参照可能なオブジェクトを作成しています
Application_OnStart ではアプリケーションの最初の起動時に Oracle への接続プールを作成し、共通の アプリケーション変数を設定しています
Session_OnStart では、セッション開始時の規定処理を行ない、Session_OnEnd ではセッション終了時の 共通処理を行なっています。
特に、Session_OnEnd では、セッションID に依存するファイルシステムの一時ファイルを削除しています
TypeLibrary 宣言 |
タイプ ライブラリとは、COM コンポーネントでサポートされるオブジェクトと型 に関する情報のあるファイルです
|
以下のコードの結果は、TypeLibrary 宣言 に依存します
<%
Response.Write adUseClient
%>
TypeLibrary 宣言 を行なうと 3 と表示されます
<!--METADATA TYPE="TypeLib" FILE="c:\Program Files\Common Files\System\ADO\msado25.tlb" -->
|