ASP ベーシックポイント

  目次







  規定の言語



  
規定の言語は VBSCript ですが、<% @LANGUAGE = scriptengine %> によって変更されます
( 指定する場合は通常ソースコードの先頭に置きます )
  

1) スクリプトタグを用いた場合は、language 属性に依存します
2) インターネットサービスマネージャ -> 仮想ディレクトリ -> 構成 -> アプリケーションのオプションで変更できます
3) メタベースプロパティは AspScriptLanguage です



  オブジェクト作成

1) Server.CreateObject を必ず使用します
2) サーバーが現在の ASP ページの処理を完了した時点で自動的に破棄されます
3) 作成されたオブジェクトをセッション変数に格納してオブジェクトのスコープをセッションにする事ができます

  
<% Set Session("Cn") = Server.CreateObject("ADODB.Connection")%>
  

同様の定義を glbal.asa で OBJECT タグを用いて行なう 事も可能です



  Server.MapPath

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

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




  Response.End

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




  Response.Redirect ( HTTP ヘッダ出力 )

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

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

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




  Request.ServerVariables

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

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




  Application.Lock と Application.Unlock

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

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

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




  Server.HTMLEncode と Server.URLEncode

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

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

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

  
<%
Response.Write Server.HTMLEncode( "<>" )
Response.Write Server.URLEncode( "漢字 漢字" )
%>
  

  
&lt;&gt;%8A%BF%8E%9A+%8A%BF%8E%9A
  



  スクリプトのタイムアウト

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

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

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




  Server.Execute

別の 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.Transfer

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です
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ