新手想學習ASP互動式網頁設計,首先必須先了解ASP的七大物件 先列舉幾個比較簡單的來說好了,
ASP的優勢與特點
-------------------------------------------------------------------------------- Active Server Pages :『動態伺服器網頁』, 一般簡稱為 『ASP』, ASP 之所以能受到大家的重視與使用的原因,主要在於所產生的執行結果都是標準的 HTML 格式,而且這些程式是在網路伺服器端中執行,使用一般的瀏覽器 (如IE或Netscape等) 都可以正確的獲得 ASP 的『執行』結果,並且將這 ASP 執行的結果直接在瀏覽器中『瀏覽』,不像 VBScript 或 JavaScript 是在使用者客戶端(Client)端的瀏覽器上執行,若使用 VBScript 來設計程式 ,客戶端(Client)在 IE 瀏覽器中可以顯示程式執行的結果,可是,客戶端(Client)若使用 Netscape 瀏覽器就無法顯示VBScript的執行結果。
--------------------------------------------------------------------------------
任何開發工具皆可發展ASP
只要使用一般的文書編輯程式,如 Windows 記事本,就可以編輯。當然,其他網頁發展工具,例如,FrontPage Express、 FrontPage ....... 等也都可以。
通吃各家瀏覽器
由於ASP程式是在網路伺服器端中執行,執行結果所產生的HTML文件適用於不同的瀏覽器。
語言相容性高
ASP 與所有的ActiveX Script 語言都相容,除了可結合 HTML 、VB Script、 Java Script、 Active X 伺服器元件 來設計外,並可經由『Plug-In 』(外掛元件模組)的方式,使用其他廠商(Third Party)所提供的語言。
隱密安全性高
如果我們在瀏覽器中直接查看網頁的原始碼,就只能看到HTML文件,原始的ASP程式碼是看不到的!這是因為ASP程式先於網站伺服器(Web Server)端執行後,將結果轉換成標準HTML法,再傳送到客戶端(Client)的瀏覽器上,因此,我們所辛苦撰寫的 ASP 程式並不會輕易的被看見進而被盜用。如下圖(A)為ASP的原始程式碼,圖(B)則是使用瀏覽器直接查看網頁的原始碼,結果就只能看到HTML文件。
易於操控資料庫
ASP 可以輕易的透過 ODBC (Open Database Connectivity)驅動程式連結各種不同的資料庫,例如:Access、FoxPro、 dBase、 Oracle、......等等,另外,ASP 亦可將『文字檔』 或是『Excel 』文件檔案當成資料庫使用。
物件導向學習容易
ASP 具備有物件導向(Object-Oriented)功能,學習容易,ASP提供了五種方便且能力強大的內建物件:Request、Response、Server、Application以及Session,同時,若使用ASP內建的 『Application 』物件或『 Session 』物件所撰寫出來的 ASP程式,可以在多個網頁之間暫時保存必要的資訊,例如,使用者名稱及密碼。
WEB與ASP資料庫的存取
-------------------------------------------------------------------------------- 有屬於自己的網站很了不起嗎?如果是兩三年前(甚至更久以前),或許是一件很炫、好了不起的事, 但是今非昔比,單純個人展示性質的網站就要過時了!沒有資訊提供、沒有獨特風格、不具互動性的網站即將成為歷史隨風而逝,單純的 HTML 網頁已經不能滿足大眾的需求,能夠提供大量資訊與即時獲得回應的網路服務方是主流。
--------------------------------------------------------------------------------
如何提供大量的資訊?
如何提供大量的資訊?這個問題您或許會覺得很好笑,甚至覺得很蠢,不就是多收集一些資料並且把它們編寫成網頁不就行了!如果您認同這個說法,這表示您。。。落伍啦!大多數的網友上網的目的都是為了尋找自己學習或工作上所需要的相關資料,如果今天您應某個因素所需上網尋找資料,同時您幸運的遇到了能提供您大量資訊的網站,但是這些資料滿坑滿谷的堆積在數百甚至數千張網頁中,試問:您的資料位於哪一份網頁中?您喜歡這個能提供大量資料給您的網站嗎?
大量資訊的管理
能提供大量的資訊,但是卻無法適切並且即時的提供網友『需求』的資訊網站又有何用?那該怎麼解決這個困境呢?最簡單的方法就是使用『資料庫』,相信很多人看到『資料庫』這三個字頭就開始昏了,筆者要提出一個很重要的基本觀念:資料庫不過是一個格式化的檔案而已!它沒有那麼的了不起啦!試問:您有沒有使用過『Access』?用 Access 建立一個資料檔案很難嗎?不會對吧!如果我說:一個 Access 檔案就是一個資料庫!您相不相信?不管您相不相信,這是一個事實!
--------------------------------------------------------------------------------
ASP與資料庫 了解了『資料庫』的重要性與『資料庫』只是一個檔案的觀念後,我們所關心的是:如何去存取這個位於 WEB 上的資料庫!能夠動態透過瀏覽器去存取資料庫資料的最佳工具就是ASP!使用者只要用瀏覽器 (IE、Netscape或其他)就可檢視、尋找、更生資料庫中的資料。
ASP如何存取資料庫? A: 客戶端(連線瀏覽者的瀏覽器) B: 伺服端(WEB Server) C: 取用 ADO 物件的 ASP D: ODBC 資料庫驅動程式 E: 資料庫
當客戶端(Client)瀏覽器向網站伺服器(Web Server)端要求下載網頁檔案時,若要求的是一個『.asp』的檔案(Active Server Page檔案的副檔名為.asp)時,則網站伺服器端將會檢查此ASP檔案是否含有Script程式,如果有則加以開啟執行,若無則直接將非程式部分資料直接傳回給客戶端瀏覽器。
若開啟執行中的程式使用了ADO(ActiveX Data Objects)物件,則網站伺服器(Web Server)將會依照ADO(ActiveX Data Objects)物件所指定的參數值來驅動相對應的ODBC(Open DataBase Connectivity)驅動程式,然後程式就可透過ADO(ActiveX Data Objects)物件來存取資料庫中的資料。
程式透過ADO(ActiveX Data Objects)物件來存取的資料庫資料若必須輸出到客戶端(Client)瀏覽器時,則程式會再利用ASP所提供的相關輸出物件來輸出資料,並透過網站伺服器(Web Server)端傳出資料給客戶端(Client)瀏覽器。
這個 .asp 檔案重頭到尾將會被翻譯成標準的 HTML 格式文件,再傳送到客戶端(Client)的瀏覽器;由於傳送給客戶端(Client)瀏覽器的文件是屬於標準的 HTML 格式文件,所以瀏覽器可以直接進行解譯該文件。
--------------------------------------------------------------------------------
◎結論:ASP 是存取資料庫資料最佳的工具(易學易用),同時,因為 ASP 中的程式是在網站伺服器(Web Server)端執行的,相對於在客戶端(Client)瀏覽器中執行程式是更有效率多了,況且,傳送給客戶端(Client)瀏覽器的文件是屬於標準的 HTML 格式文件,所以並沒有瀏覽器相不相容的問題。
只要是在網站伺服器(Web Server)端執行執行的程式都是『CGI』程式, CGI (Common Gateway Interface),中文名稱為『共通閘道介面』,為一種標準程式執行介面,主要在於能讓你的網頁跟網站伺服器(Web Server)溝通,達到跟使用者互動的效果。透過CGI程式,可以讓我們動態的產生網頁,即時展示網站伺服器(Web Server)上最新的資料。當我們連結到一個CGI物件時(非網頁,而是一個在網路伺服器端執行的程式),我們所取回的文件並非是一份靜態資料,而是一個藉由程式動態產生的HTML資料(取回的資料只是程式執行後的結果)。傳回來的資料會針對使用者的特殊查詢或要求而有不同的內容,例如:股票行情或成交量等等。
請注意:『CGI』 與 『CGI程式』是完全兩碼子的事!『CGI』為一種標準程式執行介面,而『CGI程式』是泛指在網站伺服器(Web Server)端執行的程式!
--------------------------------------------------------------------------------
CGI 程式的工作方式
CGI 程式的工作方式乃是由客戶端(Client)的瀏覽器送出工作指令,再以CGI 介面傳送給網站伺服器(Web Server)端,網站伺服器(Web Server)端解譯由客戶端(Client)的瀏覽器送出的工作指令後,就會啟動位於網站伺服器(Web Server)端中相對應的 CGI 程式。
CGI程式接收到客戶端(Client)的瀏覽器送出的工作指令後,經過一番處理,然後會將標準輸出(執行結果)傳送給『共通閘道介面』,再經由『共通閘道介面』交給客戶端(client)的瀏覽器秀出來。
--------------------------------------------------------------------------------
如何撰寫CGI程式
CGI程式可以用任何程式語言來撰寫,只要該語言具有讀寫檔案的能力且該資料檔可被存取即可。一般來說,『Perl』程式語言是最常被用來撰寫CGI程式的程式語言,當然我們也可以使用其他程式語言來撰寫,同時,只要網站伺服器(Web Server)有提供CGI 介面即可執行我們所撰寫出來的 CGI 程式。
ASP程式與CGI程式
ASP程式也是一種CGI程式,不要忘了:只要是在網站伺服器(Web Server)端執行執行的程式都是『CGI』程式,ASP 程式就是在網站伺服器(Web Server)端執行,所以,ASP 程式就是一種 CGI 程式,正確的說法是:CGI 程式的改良版就是 ASP 程式。
傳統CGI程式的缺點
網站伺服器(Web Server)提供的CGI 介面不同時,CGI 程式可能就無法執行了。
雖然CGI程式可以用任何具有讀寫檔案能力的程式語言來撰寫,但是,目前國內ISP大多只允許執行以『Perl』語言所撰寫出來的 CGI 程式!所以我們無法以自己熟悉的程式許言來撰寫 CGI 程式。
執行CGI程式須經系統管理者開放設定,傳統CGI程式牽涉到系統設定問題,所以除非你自己就是系統管理者,否則一般使用者是沒有權力執行自己寫的CGI程式的。
撰寫資料庫存取程式不易,由於一般用來撰寫CGI程式的語言只單純的具有讀寫『檔案』能力,也就是說這些『檔案』幾乎都是沒有格式的存文字檔,若要讀寫具有格式的資料庫檔案,則必須另外尋找資料庫的程式庫。
ASP程式的優點
將CGI執行介面物件化,利用傳統CGI程式來收集網頁中的資料時,我們必須先解析瀏覽器所傳送過來的資料(因為有些字元用做特殊用途,所以資料在傳送前會先經過標準的URL格式來編碼),也就是說我們還必須先撰寫一些資料解析的程式敘述,但是若以ASP程式來收集網頁中的資料,ASP 凱以代替我們解析這些瀏覽器所傳送過來的資料,進而接這些解析過的資料轉換為物件供 Script 語言使用。
通吃ActiveX 物件,雖然ASP提供了五種方便且能力強大的內建物件:Request、Response、Server、Application以及Session,但是Windows 系統中所有的 ActiveX 物件 ASP 也都可以取用,例如:存取資料最重要的物件『ADO』。
1.變數名稱 = Request("變數名稱")
Request 這一個物件是ASP的接收值,也可以簡單來說就是接收另一個網頁傳送過來的資料,要使用這個數值之前必須擺放至<%%>中間需注意擺放位址應該是最前面的地方 擺放在其他地方會出現錯誤訊息。在ASP的物件中,這一個值應該算是比較簡單了解的地方,但是有一點需要注意一下!你用這個接收資料,但是在這個網頁中或另外一個網頁中,必須要有能夠對應的資料出來,要不然設計出來的互動式網頁會出錯。 其中變數名稱是您自己接收值。
Request 物件 : Request 物件與Response 物件是一對的的,為何如此說呢?因為Response 物件是回應資料給瀏覽器,而Request 物件是讀取瀏覽器的資料,通常包含了使用者端的相關訊息,如瀏覽器的種類、表頭資訊、表單參數及 Cookies....等,Request物件提供下列資料集合。 名稱 說明 Request.Form("變數名稱") 取得客戶端利用表單所傳送的資料 Request.QueryString ("變數名稱") 取得附帶在網址後面的參數 Request.Cookies("變數名稱") 取得存在於客戶端瀏覽器的Cookies資料 Request.ServerVariables("變數名稱") 取得網頁伺服端的環境變數資訊
請記住:ASP與一般的HTML是截然不同的!ASP是在遠端伺服器上執行的程式,程式執行的結果再下載給瀏覽器,然後瀏覽器再把結果顯示在瀏覽器視窗,簡單的說:撰寫ASP網頁就是撰寫ASP程式!瀏覽器只是負責顯示ASP程式執行的結果,瀏覽器並沒有辦法執行ASP程式! --------------------------------------------------------------------------------
Response 物件:網頁資料輸出物件 Response 物件是回應資料給瀏覽器,包括網頁伺服器所要回應給使用者的各項資訊,Response 物件的各種方法或屬性如下表所示:
方法或屬性 說明 write 方法 輸出資料至瀏覽器 redirect 方法 轉向至其他網頁 end 方法 結束資料輸出 buffer 屬性 緩衝區的設定 clear 方法 清除緩衝區的資料 flush 方法 強制輸出緩衝區資料 isClientConnetcted 屬性 瀏覽器是否還在連線中
--------------------------------------------------------------------------------
Response.write 方法 負責將字串資訊輸出至使用者端,也可與HTML標示混合使用。標準的HTML標籤資料可直接書寫於ASP程式中,這些單純的HTML標籤資料在ASP程式執行後即會原原本本的直接傳送給瀏覽者的瀏覽器進行解譯的動作,但是,如果是變動性的資料,如日期、時間等,就必須使用 Response 物件的 『write 』方法來編寫
2.Application 物件
◎Application 物件是用來管理整個應用程式,可提供給客戶端使用者 共享資訊,在實務上會被用來追蹤目前使用中的人數及針對特定使用者顯示特定資料。
◎利用Application 物件來記錄變數內容,則網頁結束執行時其變數內容仍可保留,也就是說Application 物件是一個『靜態』變數
3.Session 物件 Session 物件為紀錄使用者的相關資訊,提供使用者再次對此網頁伺服器要求時作確認,例如使用者帳號與密碼的確認,有 Session 物件的建立,來保留身分認證的結果,則使用者不用於每一頁網頁 登錄時都需輸入密碼作確認。
Session 物件與 Application 物件相同,都是用來記錄『變數』值的,但是 Application 是一對多的;Session 物件則是一對一的,對於所有的連線瀏覽者而言,他們對於 Application 物件的使用是『共用』的,但是每個瀏覽連線者卻個別擁有一個『私用』的 Session 物件,若將上節 app01.asp 例子中之內容 application 改以 session替代
4.Cookies 物件
Application 物件與 Session 物件將資訊記錄在 Server端,而 Cookies物件會藉由瀏覽器所提供之Cookies功能,將資訊記錄在客戶端,也就是說: Cookies 物件是儲存在瀏覽連線者的瀏覽器之中!
我們可用 Cookies 物件的紀錄來判斷某個使用者是否曾經進入本網站。奇怪!雖然Session 物件將資訊記錄在 Server端,但是它也會個別紀錄連線瀏覽者是否曾經進入本網站啊!但是Session 物件的生存期限是很短的,當瀏覽連線者的瀏覽器在設定時間內(預設為20分鐘)沒有向伺服器要求任何資料的話,伺服器就會將Session 物件中的資料全數消除,而 Cookies 物件是存在於瀏覽連線者的瀏覽器中的,即使是瀏覽者離線了,Cookies 物件的資料記錄依然存在!
Cookies 物件是 Response 物件及 Request 物件之屬性,用法如下: Response.cookies 寫入Cookies Request.cookies 讀取Cookies
5.Server 物件 Server 物件允許使用者取得伺服器提供的各項功能,本單元將介紹 Request 物件的ServerVariables方法及Server物件。 --------------------------------------------------------------------------------
Request.ServerVariables 方法:利用此方法可取得伺服器提供的各項功能,其敘述如下:
Request.ServerVariables("環境變數")
環境變數有很多,在此將只介紹較實用的,其他環境變數可參考 PWS/IIS提供之參考文件。
讀取IP位址的環境變數 "LOCAL_ADDR" serverID=request.servervariables("LOCAL_ADDR")
讀取Server端的IP位址 "REEMOTE_ADDR" 讀取Client端的IP位址 clientID=request.servervariables("REMOTE_ADDR")
讀取附帶在網址後面的參數 "QUERY_STRING" element=request.servervariables("QUERY_STRING") 亦可以下列方法替代,其結果是相同的。 element=request.querystring 假設所輸入的網址為 http://127.0.0.1/asp/ch01/elemenet.asp?name=kelvin&interest=play 則變數element="name=kelvin&interest=play" 我們可藉由split函數解析element變數
5.File Access 元件
File Access 元件允許ASP程式存取網頁伺服器上的檔案,實務上大 部份以文字檔為主,事實上,File Access元件是由FileSystemObject 物件及TextStream 物件所組成的。 FileSystemObject 物件負責開啟檔案或是目錄的處裡,但若想讀取 檔案內容,則必須配合TextStream 物件一起使用。 File Access元件已包含在IIS4.0中,因此,不需重新安裝此元件就可直接使用。 語法如下所示:
set fs=CreateObject("Scripting.FileSystemObject")
6.TextStream 物件 TextStream 物件為FileSystemObject 物件的子物件,建立的方法有兩種。 OpenTextFile 開啟檔案
set fs=server.CreateObject("Scripting.FileSystemObject") set txt=fs.OpenTextFile(參數...) OpenTextFile所傳的參數如下:
OpenTextFile(Filename[,IOmode[,Create]])
Filename(檔案名稱)、 IOmode(開啟模式):可以有下列三種設定值
設定值 說明 1 開啟成為讀的檔案預設值為1 2 開啟成唯寫的檔案原檔案內容會被清除 8 開啟成唯寫的檔案原檔案內如保留資料會從檔案最後面寫入
Create(是否自動建檔):預設為false,表開啟的檔案必須是已經 存在的檔案,若設成true,則當所要開啟的檔案不存在時 ,FileSystemObject會自動建立檔案。 其中IOmode與Create參數可省略。 --------------------------------------------------------------------------------
CreateTextFile 建立新檔案
set fs=server.CreateObject("Scripting.FileSystemObject") set txt=fs.CreateTextFile(參數...) CreateTextFile所傳的參數如下:
CreateTextFile(Filename[,Overwrite])
OverWrite(是否覆寫原檔案):需建立在檔案已存在的情況下,此 參數才有效。若設為 true(預設),則原檔案會被覆寫,若 設為false,則會出現『檔案已存在』的錯誤。
|