Serverオブジェクトの使い方
ASPのServerオブジェクトには、表に示すようなプロパティと各種メソッドがサポートされています。ここでは、Severオブジェクトの代表的なメソッドについて説明します。
表 Serverオブジェクトのプロパティ/メソッド
|
プロパティ |
ScriptTimeout |
ASPスクリプトのタイムアウト時間を設定/参照できます。時間は秒の単位で設定します。デフォルトは90秒です。 例: Server.ScriptTimeout=100 |
|
メソッド |
CreateObject(progid) |
オブジェクト(コンポーネント、アプリケーション・スクリプトオブジェクト)のインスタンスを生成します。 |
|
Execute(url) |
urlで指定したページに制御を移動します。現在の環境をurlで指定したページに継承します。urlで指定したページの処理が終了したらExecuteメソッド発行元に制御が戻り、次のステートメントから再実行されます。 |
|
|
GetLastError() |
最後に発生したASPErrorオブジェクトを返します。ASPErrorオブジェクトには、ファイル名、行番号、エラーコードなどが格納されています。 |
|
|
HTMLEncode(string) |
HTMLで特別の意味を持つ文字をHTML Entity(“&” + ? + “;”で構成) に変換します。 例: < è <, > è >, & è &, ” è " |
|
|
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のソースが表示されます。右側のフレームには、IISがIEに送信したHTMLが表示されます。
図のASPの行8-9では、Server.CreateObjectメソッドで”Scripting.FileSystemObject”のインスタンスを生成しています。行10-14のif…else…end ifでは、FileSystemObjectのFileExistsメソッドを使用してファイル”c:\autoexec.bat”が存在するか調べています。行15では、Server.CreateObjectで生成されたインスタンスを解放しています。
● Server.Executeメソッド
ServerオブジェクトのExecuteメソッドは、引数で指定されたurl(ASPファイルのパスを指定する)に制御を移動します。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のソースが表示されます。右側のフレームには、IISがIEに送信したHTMLが表示されます。
図のASPの行6-7では、Response.Writeでブラウザに開始メッセージ「・・・Before Server.Execute」を送信しています。行8では、Server.ExecuteメソッドでServerExecute1.aspファイルを呼び出しています。ServerExecute1.aspでは、Response.WriteでブラウザにServerVariables(“URL”)を送信しています。IEの右側のフレームの2行目に表示されているのがServerVariablesのurlです。
è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(例:<, >. &など)に変換します。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すると” <i>Italic</i>”に変換(“<”è”<”, “>”è”>”)されてブラウザには、”<i>Italic</i>”のように通常のデータとして表示されます。(HTMLタグとして認識されません。)このデータをさらにHTMLEncodeすると、”&lt;i&gt;Italic&lt;/i&gt;”のように変換(“&”è”&”)されてHTML Entityが表示されます。
Response.Write(Server.HTMLEncode("<i>Italic</i>"))
è <i>Italic</i>
Response.Write(Server.HTMLEncode(Server.HTMLEncode("<i>Italic</i>")))
è <i>Italic</i>
|
|
図 Server.HTMLEncodeメソッドのサンプル
Access + Webのダウンロードにサンプルが収録されています。ダウンロードの目次を表示させたら、「HTMLEncodeメソッド」をクリックしてください。Internet Explorerの左側のフレームにASPのソース、右側のフレームにはIISがIEに送信したHTMLが表示されます。
図のASPの行8では、HTMLEncodeメソッドで”<html><body>Hello World!</body></html>”のHTMLをEncodeして変数strEncodedHTMLに保存しています。strEncodedHTMLには、”<”, “>”がHTML Entity(”<”、”>”)に変換されて以下のようなデータが格納されます。
è<html><body>Hello World!・・・
行9では、EncodeされたデータをさらにEncodeして変数strHTMLSourceに保存しています。strHTMLSourceには、”&”がHTML Entity("&”)に変換されて以下のようなデータが格納されます。
è&lt;html&gt;&lt;body&gt;Hello World!・・・
行10-13では、メモリ変数strEncodedHTMLとstrHTMLSourceの内容を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: <html><body>Hello World!
</body></html>
● 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のソースが表示されます。右側のフレームには、IISがIEに送信したHTMLが表示されます。
上図のASPの行6-10では、MapPathメソッドでASPファイルServerMapPath.aspの物理アドレスを取得してResponse.Writeでブラウザに送信しています。ServerMapPath.aspは、下図のサブフォルダ(/samples/asp)に格納されています。IISの仮想ディレクトリ(accweb)の物理アドレスは、D:\Inetpub\wwwroot\accwebになっています。この場合、行9のServer.MapPath(“ServerMapPath.asp”)メソッドを実行すると以下の物理アドレスが返ってきます。
Server.MapPath(“ServerMapPath.asp”)
èD:\Inetpub\wwwroot\accweb\samples\asp\ServerMapPath.asp
|
|
図 本書CD-ROMの仮想ディレクトリ構成
● Server.Transferメソッド
ServerオブジェクトのTransferメソッドは、引数で指定されたurl(ASPファイルのパスを指定する)に制御を移動します。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のソースが表示されます。右側のフレームには、IISがIEに送信したHTMLが表示されます。
図のASPの行6-7では、Response.Writeでブラウザに開始メッセージ「・・・Before Server.Transfer