眾所周知,asp技術是我們在以internet/intranet為平台的web程式的主要技術,在asp應用程式中我們一般使用vbscripts和javascripts兩種腳本語言。但是腳本語言是一種非編譯的語言,其所開發的web程式存在先天的安全性、執行效率擴張性方面的問題,因此我們一般在開發web系統時用高級語言編寫asp執行體,然後用腳本語言作為連接代碼去呼叫asp執行體執行訪問。在這方面由於asp技術是微軟推出的,因此我們一般利用vb或vc,那麼delphi程式設計師又該如何實現呢?
在這方面筆者最近透過inrpisre的資料,實現了在delphi環境中實現asp技術的web編程,現以一個介紹如下:
1.在delphi環境中建立一個新的acdiveX DLL項目PRoject1,然後透過delphi的Active Server Object建立一個ASP對象,在他的coClassName中填入所建立對象的名字MyAspObject.
2.透過type Library為剛建立的MyAspObject物件建立一個將要被腳本語言呼叫的方法MyAspRequest.
3.由於剛才所建立的ASP對像是從TASPObject繼承的,應此我們在方法建立中可以直接使用asp對象,現在為我們建立的Asp對象填寫程式碼如下:
produce TMyAspObject.MyAspRequest;
begin
repsonse.write('<p>您的姓名是:');
repsonse.write(request.form.item['Name']);
repsonse.write('</p>');//從所要建立的網頁中讀出使用者名稱//
repsonse.write('<p>您的工作是:');
repsonse.write(request.form.item['work']);
repsonse.write('</p>');//從所要建立的網頁中讀出使用者工作//
repsonse.write('<p>您用的開發工具:');
if(request.form.item['delphi'].count>0)
repsonse.write('delphi');
if(request.form.item['bcb'].count>0)
repsonse.write('c++ Builder');//判斷使用者所使用的開發工具//
repsonse.write('</p>');
repsonse.write('<p>您的身分:');
repsonse.write(request.form.item['Identity']);
repsonse.write('</p>');//讀出使用者的身分//
end;
4、對程式進行編譯並在delphi中註冊為PMyAspObject.dll檔。
5.編寫用於連線的ASP腳本語言檔案MyAsp.asp
<%@language=jscript %>
<HTML>
<BODY>
<title>這是一個用delphi建立的ASP物件</title>
<center><h3>你填的內容如下</h3></center>
<%
var myasp;
myasp=server.createobject(PMyAspObject.MyAspObject);
//產生連接對象//
myasp.MyAspRequest();//呼叫自己定義的ASP物件//
%>
</body>
</HTML>
6、建立用於顯示的網頁Myhtm.htm
<form action='localHost/shd/myasp.asp' method='post">
<h1 align='center">請選擇</h1>
<P>姓名:<input type='text' size=33 name="name"></p>
<P>工作:<input type='text' size=33 name="work"></p>
<P>開發工具:<input type='checkbox' name='delphi' value="on">delphi
<input type='checkbox'name='bcb'value="on">c++ Builder</p>
<p>您的身分:</p>
<p><select name="identity" size="1">
<option>學生</option>
<option>技術人員</option>
</select></p>
<p><input type="submit" name="mysubmit" value="遞交">
</form>
7.然後把Myhtm.htm和myasp.asp放在個人的web伺服器中的shd目錄下即可瀏覽測試。
網頁效果圖
ASP效果圖
以上程式的pwin98 ME和delphi5.0 Enterprise中實作。