【 ポイント集 】

1. 規定の言語
2. オブジェクト作成
3. Server.MapPath
4. Response.End
5. Response.Redirect
6. Request.ServerVariables
7. Application.Lock と Application.Unlock
8. Server.HTMLEncode と Server.URLEncode
9. スクリプトのタイムアウト
10. Server.Execute
11. Server.Transfer

  • 規定の言語は VBSCript ですが、<% @LANGUAGE = scriptengine %> によって変更されます

  • スクリプトタグを用いた場合は、language 属性に依存します

  • インターネットサービスマネージャ -> 仮想ディレクトリ -> 構成 -> アプリケーションのオプション
    で変更できます


  • Server.CreateObject を必ず使用します

  • サーバーが現在の ASP ページの処理を完了した時点で自動的に破棄されます

  • 作成されたオブジェクトをセッション変数に格納してオブジェクトのスコープをセッションにする
    事ができます
  • <% Set Session("Cn") = Server.CreateObject("ADODB.Connection")%>
    
  • 同様の定義を glbal.asa で OBJECT タグを用いて行なう事も可能です


  • 指定された相対パスや仮想パスを、サーバー上の対応する物理ディレクトリにマップします

  • 例えば、カレントにある MDB ファイルを ADO で接続する為には OS 側のファイルシステム
    で表現されたパスが必要になります。その場合は、Server.MapPath("target.mdb") という
    記述で解決します


  • スクリプトの実行を中止します。既に処理された内容は出力されます


  • Response.Redirect "URL" によって、HTTP ヘッダに Location ヘッダを設定します。これによって
    ページは、GET メソッドによって "URL" で示したページへ移動する事になります

  • この場合、Response.Redirect 以降に記述された処理は無意味となります

  • インターネットサービスマネージャ -> 仮想ディレクトリ -> 構成 -> アプリケーションのオプション
    で、バッファ処理が有効になっている場合は良いですが、無効になっている場合は、
    HTTP ヘッダ関係のメソッドの前に出力処理を行なう事はできません


  • WWWサーバの環境変数を取得する為に使用します

  • REQUEST_METHOD や SCRIPT_NAME といったプログラミングに必要な情報を取得します


  • アプリケーション内のスクリプト処理間での簡単なロック処理を可能にします

  • 階層のあるロック処理をした場合、ページの処理が終了してもロックが解除されないので注意。
    つまり、ページ内でロックは1回だけ行なう事でその問題は回避されます

  • 通常は、スクリプトが終了すると解放されます


  • Web 処理に必要なエンコードを提供します

  • Server.HTMLEncode は、< > に代表される特殊文字を、表示可能な &lt; &gt; といった文字列
    に変更する事を目的とします

  • Server.URLEncode は、URL に記述される 漢字やスペース等を %XX といった形式に変更します


  • <%
    Response.Write Server.HTMLEncode( "<>" )
    Response.Write Server.URLEncode( "漢字 漢字" )
    %>
    
  • 以下は HTML 出力の結果です
  • &lt;&gt;%8A%BF%8E%9A+%8A%BF%8E%9A
    

  • 時間のかかるスクリプト処理は、Web では好ましくありません。その為、ある一定時間を超えると
    スクリプトは実行をやめるように設計されています

  • インターネットサービスマネージャ -> 仮想ディレクトリ -> 構成 -> アプリケーションのオプション
    で、変更する事ができます。この値がデフォルトとなります

  • Server.ScriptTimeout プロパティを設定する事によっても変更できますが、上記設定より
    小さくする事はできません

  • 別の asp ファイルを呼び出して、その結果を取り込みます

  • マニュアルには、サーバー側インクルードに代わるものであると書かれていますが、きちんと
    標準化した上で使用しないと、管理が煩雑になるおそれがあります。それは、呼び出すファイ
    ル名を動的に変更できるからです

  • 呼び出されるファイルの中のファンクションを使用する事はできません

  • 対象ファイルは、同一アプリケーションパス内に存在する必要があります

  • asp1.asp
  • <%
     
    strTarget = "asp2.asp"
    Server.Execute( strTarget )
     
    on error resume next
    Out2
    if Err.Number <> 0 then
    	Response.Write Err.Description & "<BR>"
    end if
    Err.Clear
    Out2Include
    if Err.Number <> 0 then
    	Response.Write Err.Description & "<BR>"
    end if
    on error goto 0
     
    %>
    
  • asp2.asp
  • <HTML>
    <!-- #include file ="func.inc" -->
    <%
    function Out2()
     
    	Response.Write "ここは、asp2 です<br>"
     
    end function
     
    Out2
    Out2Include
     
    %>
    <HTML>
    
  • func.inc
  • <%
    function Out2Include
    	
    	Response.Write "ここは asp2 からインクルードされています<br>"
     
    end function
    %>
    
  • 実行結果
  • ここは、asp2 です
    ここは asp2 からインクルードされています
    型が一致しません。
    型が一致しません。
    

  • Server.Execute よりさらに飛び道具なので注意が必要です。JSP のページ移動とにています
    が、はるかにメソッドの利用者の認識が必要となります

  • 呼ばれる側は、組み込みオブジェクトの状態の情報全てが引き継がれます。別のアプリケーション
    パス内のASP を呼び出し可能なので注意深い利用が必要となります

  • asp1.asp
  • <%
    Dim strValue
     
    strValue = "変数は引き継がれません"
     
    if Request.ServerVariables( "REQUEST_METHOD" ) = "POST" then
    	Server.Transfer( Request.Form("Target") )
    	Response.Write "この部分は実行されません"
    end if
     
     
    %>
    <HTML>
    <BODY>
    <FORM method="post">
    <INPUT type="text" name="Target" value="asp2.asp" readonly>
    <INPUT type="submit" value="送信">
    </FORM>
    </BODY>
    </HTML>
    
  • asp2.asp
  • <HTML>
    <!-- #include file ="func.inc" -->
    <%
    function Out2()
     
       Response.Write "呼び出し側の指定したファイルは" & Request.Form("Target") & "です<br>"
     
    end function
     
    Out2
    Out2Include
     
    Response.Write strValue
     
    %>
    <HTML>
    
  • func.inc
  • <%
    function Out2Include
    	
       Response.Write "呼び出し側の指定したファイルは" & Request.Form("Target") & "です<br>"
     
    end function
    %>
    
  • 実行結果
  • 呼び出し側の指定したファイルはasp2.aspです
    呼び出し側の指定したファイルはasp2.aspです