Global.asa檔案的使用及Chat程式

來源:互聯網
上載者:User
程式


  在上一篇中作者給大家詳細介紹了兩個非常實用的 ASP 內建對象 Application 和 Session 的使用方法。由於這兩者的 OnStart、OnEnd 事件的指令碼都必須在 Global.asa 檔案中聲明 , 因此,本篇將給大家詳細介紹 Global.asa 檔案的使用方法。為使大家熟練掌握至今所學過的知識,本篇還將舉出一個 ASP 的 Chat 程式,供各位參考。

  最近很多朋友來信問我,為什麼前兩期的範常式序運行時有這樣那樣的錯。首先,我要向大家聲明,這些程式都是我自己寫的,在出“廠”前都經過合格檢驗,絕無“假冒偽劣產品”。:) 由於程式中使用了 cookie 記錄客戶資訊,所以如果你在瀏覽器中沒有設定接受 cookie 則程式將不能正常運行。另外,程式將客戶資訊記錄在用戶端的 cookie 所使用的方法是 Response.Cookie,此語句必須寫在 ASP 檔案中的第一個 < HTML> 標記前,這是因為 Cookie 是作為 HTTP 傳輸的頭資訊的一部分發送給客戶的,如果當 HTTP 前序資訊已經傳輸給客戶後再使用 Response.Cookie,將出現以下錯誤 :“HTTP 標題已經寫入到客戶瀏覽器。任何 HTTP 標題的修改必須在寫入頁內容之前。”,可能一些朋友在剪貼程式的時候沒有注意,打亂了程式的前後次序 , 或者是錯誤的將 HTML 程式碼添加在 ASP 範常式序之前,因而導致程式運行出錯。因此,我建議大家一方面在首次運行常式的時候不要對程式進行任何改動,盡量在看懂程式的基礎上逐步改進,另一方面在運行 ASP 程式時至少要在瀏覽器中選擇可接受 Cookie,否則一旦 ASP 程式中使用了 Cookie 或 Session,它們都將無法正常運行。
  下面我來向大家介紹 Global.asa 檔案的使用方法。

  什麼是 Global.asa 檔案?它其實是一個可選檔案,程式編寫者可以在該檔案中指定事件指令碼,並聲明具有會話和Application 領域的對象。該檔案的內容不是用來給使用者顯示的,而是用來儲存事件資訊和由應用程式全域使用的對象。該檔案的名稱必須是 Global.asa 且必須存放在應用程式的根目錄中。每個應用程式只能有一個 Global.asa 檔案。

  在 Global.asa 檔案中,如果包含的指令碼沒有用 < SCRIPT> 標記封裝,或定義的對象沒有會話或Application 領域,則伺服器將返回錯誤。我們可以用任何支援指令碼的語言編寫 Global.asa 檔案中包含的指令碼。如果多個事件使用同一種指令碼語言,就可以將它們組織在一組 < SCRIPT> 標記中。

  在 Global.asa 檔案中聲明的過程只能從一個或多個與 Application_OnStart、Application_OnEnd、Session_OnStart 和 Session_OnEnd 事件相關的指令碼中調用。在基於 ASP 的應用程式的 ASP 頁中,它們是停用。如果要在應用程式之間共用過程,可在單獨的檔案中聲明這些過程,然後使用伺服器端包容 (SSI) 語句將該檔案包含在調用該過程的 ASP 程式中。通常,包含檔案的副檔名應為 .inc。

  下面是一個很標準的 Global.asa 檔案 :
 < SCRIPT LANGUAGE="VBScript" RUNAT="Server">
 'Session_OnStart 當客戶首次運行 ASP 應用程式中的任何一個頁面時運行
 'Session_OnEnd 當一個客戶的會話逾時或退出應用程式時運行
 'Application_OnStart 當任何客戶首次訪問該應用程式的首頁時運行
 'Application_OnEnd 當該網站的 WEB 伺服器關閉時運行
 < /SCRIPT>

 < SCRIPT LANGUAGE="VBScript" RUNAT="Server">
 Sub Application_OnStart
 VisitorCountFilename = Server.MapPath ("/ex2") + "\VisitCount.txt"
 Set FileObject = Server.CreateObject("Scripting.FileSystemObject")
 Set Out= FileObject.OpenTextFile (VisitorCountFilename, 1, FALSE, FALSE)
 Application("visitors") = Out.ReadLine
 Application("VisitorCountFilename") = VisitorCountFilename
 End Sub
 '=========================================================
 SUB Application_OnEnd
 Set FileOutObject = Server.CreateObject("Scripting.FileSystemObject")
 Set Out= FileOutObject.CreateTextFile (Application("VisitorCountFilename"), TRUE,FALSE)
 Out.WriteLine(application("visitors"))
 End Sub
 '=========================================================Sub Session_OnStart
 Session.Timeout = 5
 Application("visitors") = Application("visitors") + 1
 Session("ID")=Session.SessionID
 End Sub
 < /SCRIPT>

  在這個 Global.asa 程式中,涉及到了 ASP 的 File Access 組件,它可以提供用於訪問檔案系統的方法、屬性和集合。這將在以後 ASP 的組件中進行展開討論。在這裡,它起到了在伺服器上建立新檔案並對檔案進行寫操作的作用。這其實是一個 ASP 頁面訪問記數器應用程式的 Global 檔案,首先當客戶首次訪問該應用程式的首頁時 , 過程 Application_OnStart 定義了在伺服器上指定的虛擬目錄下建立一個 VisitCount.txt 的文字檔,並將檔案的路徑和內容儲存在應用程式級的變數中。而當任何一個客戶訪問 ASP 應用程式中的任何一個頁面時,過程 Session_OnStart 定義將應用程式級的變數 visitors 的值自動加一。這樣,每當有客戶訪問頁面時,變數 visitors 都將自動加一,以起到統計點擊率的作用。由於變數 visitors 的值是儲存在系統記憶體之中,所以如果伺服器關閉或重新啟動,儲存在變數中的資料將自動丟失,所以通過定義過程 Application_OnEnd,在伺服器關閉或重啟之前將資料寫入事先建立的文字檔之中,這樣就能確保當伺服器再次啟動時,Application_OnStart 過程可以從 VisitCount.txt 檔案中讀取以前的統計數。

  經過這段時間的學習,相信大家已經能夠比較熟練的運用我們所學過的這些 ASP 內建對象來編寫一些較簡單的 ASP 應用程式,可別小看你現在所掌握的這些 ASP 基本知識哦 ! 其實你已經能夠開發一些簡單但實用的 ASP 應用程式了。下面我就舉一個非常簡單的 ASP WEB 聊天室程式,你會發覺寫聊天室原來是一件這麼容易、輕鬆的事。可能朋友們已經在一些雜誌上看到過 ASP 聊天程式的編寫方法,但作者在這裡自己寫了一個更簡單的程式,僅僅使用了一個 .asp 檔案。請將以下代碼剪貼到記事簿並儲存為 chat.asp。
 < %@ Language=VBScript %>
 < %
 Response.Buffer=true ' 設定輸出緩衝,用於顯示不同頁面。
 On error resume next ' 忽略程式出錯部分
 If Request.ServerVariables("Request_Method")="GET" then
 ' 判斷客戶是以什麼方式請求 WEB 頁面
 '------------------------
 ' 客戶登陸介面
 '------------------



相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。