Posted: 2005/1月/07 9:31上午 | IP記錄
|
|
|
在Active Server Pages中結合Scripts腳本
Active Server Pages主要就是Scipts腳本環境,在你學習本書第二章的時候,你就可以將VBScript和JScript結合到你的A ctive Server Pages中去,你可以同樣在Active Server Pages中很好的利用其他的腳本語言。任何一個可以和Active X Script標準兼容的腳本語言引擎都可以用於Active Server Pages。
注意
如果你熟悉Perl,你就會很高興發現Perl和Active Server Pages是兼容的。如果希望更多瞭解,請看http://www.hip.activeware.com或訪問http://www.aspsite.com
在Vbscript和Jscript的章節中(相應第8和第9章),你會學到怎樣將Script腳本結合到Active Server Pages的具體實現。這部分主要是詳細解釋以及介紹一些可選擇的方法來進行Scripts和Active Server Pages的結合。
最簡單的結合Scripts的方法是利用<%和%>,任何在這個符號中包容的都被認為是一個Scripts腳本。下 面是個例子:
<html>
<head><title>ASP Script 示例</title></head>
<body>
這是個
<% for I=1 to 10 %>
非常,
<% next %>
非常長的句子。
</body>
</html>
該段Active Server Pages執行後在瀏覽器上顯示為:
這是個非常,非常,非常,非常,非常,非常,非常,非常,非常,非常,非常長的句子。
這段腳本利用VBscript的For...Next循環生成了11份『非常』的拷貝。
Active Server Pages默認為您主要使用的是VBscript,也就是說,在使用<%和%>時不需要作任何事情來說明使用何種語 言。不過,如果需要限定的話,您可以有三種方式。
首先,你可以在Internet Information Service管理器來進行限定使得所有Active Server Pages的默認語言為你所限定的。這樣做的步驟如下:
1.從開始菜單IIS(Internet Information Service)的程序組中執行網絡服務管理器
2.右鍵你的網站名稱(如果你沒有改變默認設置,名稱將是Default Web Site)
3.選擇屬性項
4點擊主目錄表。
5點擊設置按鈕(要做這個,你必須有一個存在的Application。如果沒有的話,點Creat來創建一個。)
6.在Application Configuration的對話框中,點App Option表。
7.在默認的ASP語言文本框中,輸入你所要的主要腳本語言,例如Vbscript或者Jscript。
當這些作完後,<%和%>中包容的程序就默認為你所指定的那種語言。
你還可以在特定的主頁中指定主要腳本語言,這樣做,你要將這種語言名稱直接放在你的Active Server Page文件最靠上的一行,如下:
<%@ LANGUAGE=Jscript %>
<html>
<head><title>ASP Script示例</title></head>
<body>
這是個
<% for(i=1;i<11;i++){ %>
非常,
<%}%>
非常長的句子。
</body>
</html>
這種直接放在首行的腳本,指示出這個文件中所有腳本都將利用JSCRIPT生成,當你利用這種方式指定腳本語言時,請注意在@和 保留字LANGUAGE之間空出一個空格。另外,非常重要的是這句指示要在任何一句命令之前(否則就要報錯了)。
圖13.1 使用Internet Service Manager來確定缺省腳本語言
你的第三種在Active Server Pages包含Scripts腳本的選擇是利用微軟的HTML<Script>拓展對象,例如下面:
<html>
<head><title>ASP Script示例</title></head>
<body>
<script language=「Jscript」 runat=「server」>
function sayhello()
{ response.write(「hello! 邁至科」)
}
</script>
<% sayhello() %>
</body>
</html>
這裡,<script>對像包含了一個Jscript函數。<script>的Language屬性限 定了使用哪一種語言。RUNAT屬性是指示出該腳本應當在Server端還是在Client(瀏覽器上)端實現。
這個函數在第一行中被命名為sayhello()。在第二段腳本中,利用<%和%>標記的對象是真正調用該函數的位 置。Active Server Pages會在顯示器上顯示出字符串
「hello! 邁至科」
注意
response.write()語句是將一段文本顯示在顯示器上。您會在後面的內容中瞭解更多。
如果你創建了一個客戶端的VBscript或者JScript腳本,你就應當對<SCRIPT>更加熟悉了。微軟的 <Script>拓展可以被用來指定是在服務端還是在客戶段執行。如果你忽略了RUNAT=server這個限定, 你的script腳本將被認為是客戶端的。這種場合下,Server端將忽略這個script並由瀏覽器嘗試執行〔然而會很悲慘 的以失敗告終,因為這不是一個合法的客戶端script腳本〕。
為什麼你會直接使用<Script>對像而不是<%和%>來限定scipt腳本語言?通常,你不會使用 <script>對象。不過,這兩種限定一個Script腳本的方法還是有很明顯的區別的。
首先,使用<script>包含的直接腳本會立即執行,無論在Active Server Pages的任何位置。例如下面這個例子。
<html>
<head><title>ASP Script示例</title></head>
<body>
This is the first sentence
<script LANGUAGE=「JScript」 RUNAT=「server」>
response.write(「This is the second sentence.」)
</script>
</body>
</html>
看這個例子後,您也許會認為,顯示器上會首先顯示This is the first sentence,然後是This is the second sentence,但是,這個Active Server Pages顯示在瀏覽器上是相反的順序。(或者什麼都不顯示,那是因為生成了非法的HTML語法)
為什麼會這樣?因為主頁裡面無論什麼放在<script>裡面都會首先執行。如果你使用瀏覽器的View Source,你會看見你的主頁被Active Server Pages解釋為如下:
This is the second sentence.<html>
<head><title>ASP Script示例</title></head>
<body>
This is the first sentence.
</body>
</html>
<script>對象的行為有兩種含義。首先,你能夠在Active Server Pages的任何位置上的<script>對像中放置你的script腳本。其次,<script>對 象,如果用於更多的目的來說,將會用包含函數和子程序的方法來進行限制。任何不包含函數或者子程序的腳本都將被立即執行顯示為一 個非法的HTML主頁。
<script>對像使用<%和%>限制有一個明顯的優點。使用<script>對象,你 可以在一個單獨的主頁中混合使用多種script腳本。看下面這個例子:
<%@ LANGUAGE=「VBScript」 %>
<html>
<head><title>ASP Script示例</title></head>
<body>
<script LANGUAGE=「JScript」 RUNAT=「server」>
function sayhello()
{
response.write(「hello! 邁至科」)
}
</script>
<% for I=1 to 10
sayhello()
next
%>
</body>
</html>
這個script腳本在一列中顯示了十次」hello! 邁至科」,但是請注意這是怎麼實現的,這個包含在<%和%>中的腳本是用Visual Basic寫成的,不過,這個腳本調用的是JScript函數,這個JScript函數是在<Script>對像中 定義的。當你希望在你的主腳本用一種語言而又需要調用另一種語言的函數,你可以使用這種方法。這樣可以彌補一些語言在常用函數和 方法上的缺乏。
作為總結,在一個Active Server Pages上指定腳本語言有三種方法。
• 利用 Internet Information Server來指定作為你所有腳本中的默認語言。
• 在每一個單獨的Active Server Pages中的最上面一行利用<%@ LANGUAGE=「script語言」>來指定針對這個單獨Active Server Page所使用的腳本語言。
• 利用Active Server Pages的<script>拓展來在一個Active Server Page中分別在相應位置指定多種腳本語言。
在這部分結束以前,將討論最終極的Active Server Pages指令,利用Active Server Pages輸出指令,你可以直接顯示表達式值。以下是個例子:
<html>
<head><title>ASP示例</title></head>
<body>
At the Tone,the time will be: <%=time%>
</body>
</html>
你可以使用<%和%>標誌來輸出變量、方法(method,針對於對象的方法)以及函數的值,在上面的例子中,VB Script的時間函數值會輸出到顯示器上。
你可以用下面的方法完成同樣的事,見下面例子:
<html>
<head><title>ASP示例</title></head>
<body>
At the Tone,the time will be:<%response.write(TIME)%>
</body>
</html>
在這個例子中,VBScript的Time函數值將被Active Server Pages的Response對像輸出出來,response對象的write()方法是將表達式中的值顯示出來。(下一章中, 你會學到更多有關對像和方法的知識)。
那麼補充說明的是對於Active Server Pages內部<%=和%>也就是代表了Response.write()方法,因此無論你用哪一種方法其實是一樣 的,沒有任何區別。
注意
當你使用<%=和%>來進行輸出時,如果此時顯示錯誤信息,將相應顯示為response.write()語句,你 也許會因為你的程序中沒有這句話而困惑,其實這正說明二者實際上在Active Server Pages中是完全一致的。
雖然如此,在有些場合下某一種輸出方式顯然更方便一些,例如,當你需要在一個script腳本中輸出表達式值,通常respon se.write()更加容易處理,如果只是在HTML的某一位置輸出表達式值,那麼<%=和%>則更容易使用。如 下例:
<HTML>
<head><title>ASP示例</title></head>
<body>
<%
For i=1 to 5
myvar=myvar&「非常, 」
response.write(i&「:」&myvar&「<br>」)
next
%>
<hr>
這是一個<%=myvar%>長的句子。
</body>
</html>
在這個例子中,response.write()在script腳本的循環中顯示越來越長的子段。而<%=和%>指 令則是直接在主頁的具體位置顯示出變量myvar的值。
圖13.2為顯示結果。
|