Access + Webのホームへ戻る

Serverオブジェクトの使い方

 

ASPServerオブジェクトには、表に示すようなプロパティと各種メソッドがサポートされています。ここでは、Severオブジェクトの代表的なメソッドについて説明します。

 

表 Serverオブジェクトのプロパティ/メソッド

プロパティ

ScriptTimeout

ASPスクリプトのタイムアウト時間を設定/参照できます。時間は秒の単位で設定します。デフォルトは90秒です。

例:

Server.ScriptTimeout=100

メソッド

CreateObject(progid)

オブジェクト(コンポーネント、アプリケーション・スクリプトオブジェクト)のインスタンスを生成します。

Execute(url)

urlで指定したページに制御を移動します。現在の環境をurlで指定したページに継承します。urlで指定したページの処理が終了したらExecuteメソッド発行元に制御が戻り、次のステートメントから再実行されます。

GetLastError()

最後に発生したASPErrorオブジェクトを返します。ASPErrorオブジェクトには、ファイル名、行番号、エラーコードなどが格納されています。

HTMLEncode(string)

HTMLで特別の意味を持つ文字をHTML Entity(“&” + ? + “;”で構成) に変換します。

例:

< è &lt;, > è &gt;, & è &amp, ” è &quot

MapPath(url)

urlのフルパス名を物理アドレスで返します。

例:

MapPath(“Access/MyDB.mdb”)

èD:\Access\MyDB.mdb

Transfer(url)

urlで指定したページに制御を移動します。現在の環境をurlで指定したページに継承します。urlで指定したページの処理が終了してもTransferメソッド発行元には戻りません。

URLEncode(string)

URLとして使用できない特殊文字(“?”,”&”,”space”・・・)”%” + “16進コードに変換します。

例:

? è %3F, & è %26, space è +

 

 

  Server.CreateObjectメソッド

 

ServerオブジェクトのCreateObjectメソッドは、引数で指定したオブジェクトのインスタンスを生成します。CreateObjectメソッドを発行すると、ASPはそのオブジェクトのインスタンスを生成するためにメモリを割り当てます。CreateObjectで生成されたインスタンスは、不要になった時点で明示的に解放する必要があります。

 

オブジェクトを使用後、メモリを解放する必要があります。

 

Set objMyObject = Server.CreateObject(“・・・”)     インスタンス生成

・・・

Set objMyObject = Nothing            インスタンス解放

 

Server.CreateObject(progID)

 

progIDには、コンポーネント、アプリケーションオブジェクト、スクリプトオブジェクトなどを指定します。

 

Set ad = Server.CreateObject(“MSWC.AdRorator”)                ‘ Ad Rotator

Set cl = Server.CreateObject(“MSWC.NextLink”)      ‘ Content Linker

Set bc = Server.CreateObject(“MSWC.BrowserType”)  ‘ Browser Capability

 

 

図 Server.CreateObjectメソッドのサンプル

 

Access + Webのダウンロードにサンプルが収録されています。ダウンロードの目次を表示させたら、「CreateObjectメソッド」をクリックしてください。Internet Explorerの左側のフレームには、ASPのソースが表示されます。右側のフレームには、IISIEに送信したHTMLが表示されます。

 

図のASPの行8-9では、Server.CreateObjectメソッドでScripting.FileSystemObjectのインスタンスを生成しています。行10-14if…else…end ifでは、FileSystemObjectFileExistsメソッドを使用してファイル”c:\autoexec.bat”が存在するか調べています。行15では、Server.CreateObjectで生成されたインスタンスを解放しています。

 

  Server.Executeメソッド

 

ServerオブジェクトのExecuteメソッドは、引数で指定されたurlASPファイルのパスを指定する)に制御を移動します。Executeメソッドは、発行元の環境をurlで指定したページに継承します。urlで指定したページの処理が終了したらExecuteメソッド発行元に制御が戻ります。(VBScriptの関数/サブプロシージャを呼び出すのと類似しています。)Executeメソッドは、IIS5.0でサポートされた機能ですからIIS4.0では使用できません。

 

Response.Write(“Before Execute<br>”)

Server.Execute(“ServerExecute2.asp”)

Response.Write(“After Execute<br>”)

 

ServerExecute2.asp:

Response.Write(“ServerExecute2.asp<br>”)

 

実行結果:

èBefore Execute

èServerExecute2.asp

èAfter Execute

 

Server.Execute(url)

 

urlには、ASPファイルのパス名を指定します。ASPファイルがサブフォルダに存在するときはフォルダも指定します。パス名は、Executeメソッド発行元のファイルをベースに相対パスで指定します。

 

Server.Execute(“ServerExecute1.asp”)

Server.Execute(“asp2/ServerExecute2.asp”)

 

Server.Executeメソッドのサンプル

 

Access + Webのダウンロードにサンプルが収録されています。ダウンロードの目次を表示させたら、「Executeメソッド」をクリックしてください。Internet Explorerの左側のフレームには、ASPのソースが表示されます。右側のフレームには、IISIEに送信したHTMLが表示されます。

 

図のASPの行6-7では、Response.Writeでブラウザに開始メッセージ「・・・Before Server.Execute」を送信しています。行8では、Server.ExecuteメソッドでServerExecute1.aspファイルを呼び出しています。ServerExecute1.aspでは、Response.WriteでブラウザにServerVariables(“URL”)を送信しています。IEの右側のフレームの2行目に表示されているのがServerVariablesurlです。

 

èServerExecute1.asp: url=/accweb/samples/asp/ServerExecute.asp

 

このurlは、Executeメソッド発行元のurlです。このようにExecuteメソッドは、発行元のASPファイルの環境をそのまま継承します。ServerExecute1.aspファイルの処理が終了すると、Executeメソッド発行元に制御が戻って行9が実行されます。行9では、Server.ExecuteメソッドでServerExecute2.aspファイルを呼び出しています。ServerExecute2.aspも同様にResponse.WriteでブラウザにServerVariables(“URL”)を送信しています。IEの右側のフレームの3行目に表示されているのがurlです。

 

èServerExecute2.asp: url=/accweb/samples/asp/ServerExecute.asp

 

ServerExecute1.aspと同様、Executeメソッド発行元のurlが表示されています。ServerExecute2.aspの処理が終了すると、Executeメソッド発行元に戻り行10-11が実行されます。行10-11では、Response.Writeでブラウザに終了メッセージ「・・・After Server.Execute」を送信しています。

 

ServerExecute.aspファイルの内容:

response.write("<b>ServerExecute.asp:</b>" & " Before Server.Execute<br>")

server.execute("ServerExecute1.asp") 

server.execute("ServerExecute2.asp")

response.write("<b>ServerExecute.asp:</b>" & " After Server.Execute<br>")

 

ServerExecute1.aspファイルの内容:

response.write("<b>ServerExecute1.asp:</b> url=" _

  & request.serverVariables("url") & "<br>")

 

ServerExecute2.aspファイルの内容:

response.write("<b>ServerExecute2.asp:</b> url=" _

  & request.serverVariables("url") & "<br>")

 

実行結果:

èServerExecute.asp: Before Server.Execute

èServerExecute1.asp: url=/accweb/samples/asp/ServerExecute.asp

èServerExecute2.asp: url=/accweb/samples/asp/ServerExecute.asp

èServerExecute.asp: After Server.Execute

 

 

 

  Server.HTMLEncodeメソッド

 

ServerオブジェクトのHTMLEncodeメソッドは、”<”, ”>”, ”&”などHTMLの特殊文字をHTML Entity(例:&lt;, &gt;. &amp;など)に変換します。HTMLEncodeメソッドは、HTMLタグを通常のデータとしてブラウザに表示させるときに使用すると便利です。

 

Response.Write(Server.HTMLEncode(“<b>Bold</b>”))

è<b>Bold</b>

 

 

Server.HTMLEncode(string)

 

stringには、Encode(HTML Entityに変換)する文字列を指定します。Encodeされたデータを表示させるには、そのデータをさらにEncodeします。<i>Italic</i>HTMLEncodeすると&lt;i&gt;Italic&lt;/i&gt;に変換(“<”è”&lt;”, “>”è”&gt;”)されてブラウザには、”<i>Italic</i>”のように通常のデータとして表示されます。(HTMLタグとして認識されません。)このデータをさらにHTMLEncodeすると、&amp;lt;i&amp;gt;Italic&amp;lt;/i&amp;gt;のように変換(“&”è”&amp;”)されてHTML Entityが表示されます。

 

Response.Write(Server.HTMLEncode("<i>Italic</i>"))

è <i>Italic</i>

Response.Write(Server.HTMLEncode(Server.HTMLEncode("<i>Italic</i>")))

è &lt;i&gt;Italic&lt;/i&gt;

 

 

図 Server.HTMLEncodeメソッドのサンプル

 

Access + Webのダウンロードにサンプルが収録されています。ダウンロードの目次を表示させたら、「HTMLEncodeメソッド」をクリックしてください。Internet Explorerの左側のフレームにASPのソース、右側のフレームにはIISIEに送信したHTMLが表示されます。

 

図のASPの行8では、HTMLEncodeメソッドで”<html><body>Hello World!</body></html>”HTMLEncodeして変数strEncodedHTMLに保存しています。strEncodedHTMLには、”<”, “>”HTML Entity”&lt;””&gt;”)に変換されて以下のようなデータが格納されます。

 

è&lt;html&gt;&lt;body&gt;Hello World!・・・

 

9では、EncodeされたデータをさらにEncodeして変数strHTMLSourceに保存しています。strHTMLSourceには、”&”HTML Entity("&amp;”)に変換されて以下のようなデータが格納されます。

 

è&amp;lt;html&amp;gt;&amp;lt;body&amp;gt;Hello World!・・・

 

10-13では、メモリ変数strEncodedHTMLstrHTMLSourceの内容をResponse.Writeメソッドでブラウザに送信しています。

 

Response.Write("<b>Encoded HTML:</b> " & strEncodeHTML & "<br>")

èEncoded HTML: <html><body>Hello World!</body></html>

 

Response.Write("<b>Encoded HTML Source:</b> " & strHTMLSource & "<br>")

èEncoded HTML Source: &lt;html&gt;&lt;body&gt;Hello World!

&lt;/body&gt;&lt;/html&gt;

 

 

  Server.MapPathメソッド

 

ServerオブジェクトのMapPathメソッドは、引数で指定したurlのフルパス名を物理アドレスで返します。たとえば、Webサイトの仮想ディレクトリ(accweb)のサブサブフォルダ(webdb)に格納されているデータベースMyDB.mdbの物理アドレスを取得するには以下のように記述します。(Server.MapPathメソッド発行元のASPファイルが、accwebのルートに格納されている前提でurlを記述しています。)

 

仮想ディレクトリ(accweb): D:\Inetpub\wwwroot\accweb

Server.MapPath(“webdb/MyDB.mdb”)

èD:\Inetpub\wwwroot\accweb\webdb\MyDB.mdb

 

MapPathメソッドを使用すると、仮想ディレクトリを指定してデータベースを接続することができます。

 

strConnection = "Provider=Microsoft.Jet.OLEDB.4.0;" _

  & "Data Source=" & server.MapPath("webdb/MyDB.mdb")

set cnn = server.CreateObject("adodb.connection")

cnn.open strConnection

 

Server.MapPath(url)

 

urlには、ファイルの相対パスを指定します。参照元のASPファイルがIISの仮想ディレクトリ(accweb)のルートに格納されていて、MyDB.mdbがサブフォルダ(webdb)に格納されているときは以下のように記述します。

 

Server.MapPath(“webdb/MyDB.mdb”)

èD:\Inetpub\wwwroot\accweb\webdb\MyDB.mdb

 

参照元のASPファイルがサブフォルダ(webdb)に格納されているときはサブフォルダを指定する必要ありません。

 

Server.MapPath(“MyDB.mdb”)

èD:\Inetpub\wwwroot\accweb\webdb\MyDB.mdb

 

図 Server.MapPathメソッドのサンプル

 

Access + Webのダウンロードにサンプルが収録されています。ダウンロードの目次を表示させたら、「MapPathメソッド」をクリックしてください。Internet Explorerの左側のフレームには、ASPのソースが表示されます。右側のフレームには、IISIEに送信したHTMLが表示されます。

 

上図のASPの行6-10では、MapPathメソッドでASPファイルServerMapPath.aspの物理アドレスを取得してResponse.Writeでブラウザに送信しています。ServerMapPath.aspは、下図のサブフォルダ(/samples/asp)に格納されています。IISの仮想ディレクトリ(accweb)の物理アドレスは、D:\Inetpub\wwwroot\accwebになっています。この場合、行9Server.MapPath(“ServerMapPath.asp”)メソッドを実行すると以下の物理アドレスが返ってきます。

 

Server.MapPath(“ServerMapPath.asp”)

èD:\Inetpub\wwwroot\accweb\samples\asp\ServerMapPath.asp

 

 

図 本書CD-ROMの仮想ディレクトリ構成

 

 

  Server.Transferメソッド

 

ServerオブジェクトのTransferメソッドは、引数で指定されたurlASPファイルのパスを指定する)に制御を移動します。Transferメソッドは、発行元の環境をそのままurlで指定したページに継承します。urlで指定したページの処理が終了してもExecuteメソッドのように発行元には制御が戻りません。Transferメソッドは、IIS5.0でサポートされた機能ですからIIS4.0では使用できません。

 

Response.Write(“Before Transfer<br>”)

Server.Transfer(“ServerTransfer2.asp”)

Response.Write(“After Transfer<br>”)

 

ServerTransfer.asp:

Response.Write(“ServerTransfer2.asp<br>”)

 

実行結果:

èBefore Transfer

èServerTransfer2.asp

 

 

Server.Transfer(url)

 

urlには、ASPファイルのパス名を指定します。ASPファイルがサブフォルダに存在するときはフォルダも指定します。パス名は、Transferメソッド発行元のファイルをベースに相対パスで指定します。

 

Server.Transfer(“ServerTransfer1.asp”)

Server.Transfer(“asp2/ServerTransfer2.asp”)

 

 

図 Server.Transferメソッドのサンプル

 

Access + Webのダウンロードにサンプルが収録されています。ダウンロードの目次を表示させたら、「Transferメソッド」をクリックしてください。Internet Explorerの左側のフレームには、ASPのソースが表示されます。右側のフレームには、IISIEに送信したHTMLが表示されます。

 

図のASPの行6-7では、Response.Writeでブラウザに開始メッセージ「・・・Before Server.Transfer