1.67k likes | 1.88k Views
ASP.NET 網頁製作教本 -- 從基本語法學起. 第 2 章 進入 ASP.NET 網頁製作的準備工作. 2-1 ASP.NET 相關技術概說. Client 與 Server. 網頁提供者將其製作好的網頁放在 Server( 伺服器 ) 上,稱為伺服端 ( Server 端 )。 上網者準備好上網的機器,然後透過網際網路來瀏覽網頁製作者所提供的網頁稱為客戶端 ( Client 端 ) 。. 伺服端與客戶端在同一區域網路上.
E N D
ASP.NET 網頁製作教本 -- 從基本語法學起 第 2 章 進入 ASP.NET 網頁製作的準備工作
Client 與 Server • 網頁提供者將其製作好的網頁放在 Server(伺服器)上,稱為伺服端(Server端)。 • 上網者準備好上網的機器,然後透過網際網路來瀏覽網頁製作者所提供的網頁稱為客戶端(Client端) 。
伺服端與客戶端在同一區域網路上 • 上圖中,雖然將伺服端與客戶端以網際網路連結起來,但實際上,伺服端與客戶端卻不一定要分處於網際網路的兩端,它們可以是同一區域網站的兩部機器,甚至是同一部機器既是伺服端又是客戶端。
伺服端與客戶端在同一機器上 • 您在安裝書本範例之後,啟動瀏覽器,然後在位址欄輸入http://localhost/kjaspx藉以檢驗範例網頁是否安裝妥當,此時瀏覽器(也就是上網這一端)與 ASP.NET (也就是伺服器這一端)是位於同一部機器上。
瀏覽ASP.NET 網頁vs.開啟 .aspx 檔案 • ASP.NET 網頁必須透過 IIS 來執行方才有效,如果直接以瀏覽器或其他工具(例如 FrontPage)來開啟.aspx 檔案,則 ASP.NET 網頁中的 ASP 程式是不會被執行的。 • 舉例來說明:
瀏覽ASP.NET 網頁vs.開啟 .aspx 檔案(續1) • 請利用「記事本」開啟 ch02 目錄的Whattime.aspx 檔案,可看到其內容如下: <HTML><BODY>現在時間:<%Dim T As DateT = NowResponse.Write( T )%></BODY></HTML>
瀏覽ASP.NET 網頁vs.開啟 .aspx 檔案(續2) 其中位於 <% 及 %> 之間的是 ASP 程式,其功用是顯示系統時間。
瀏覽ASP.NET 網頁vs.開啟 .aspx 檔案(續3) 2.請利用瀏覽器的「檔案/開啟舊檔」開啟 Whattime.aspx,結果並不會執行 Whattime.aspx 網頁中的程式,而只是啟動系統中預設的程式開啟 Whattime.aspx 檔案,以作者的機器為例,.aspx 檔案預設的編輯程式為「記事本」,結果開啟 Whattime.aspx 的作用是啟動「記事本」編輯 Whattime.aspx 檔案。
瀏覽ASP.NET 網頁vs.開啟 .aspx 檔案(續4) 3.在瀏覽器的位址欄輸入: 如果您所建立的是區域網路作業平台,請輸入以下網址: http://localhost/kjaspx/ch02/Whattime.aspx http://IIS所在機器的IP位址/kjaspx/ch02/Whattime.aspx
瀏覽ASP.NET 網頁vs.開啟 .aspx 檔案(續5) 結果如下圖,系統時間會被顯示出來,這表示 ASP 程式被執行了。
瀏覽ASP.NET 網頁vs.開啟 .aspx 檔案(續6) • 以下是說明開啟.aspx 檔案(檔案/開啟舊檔)及瀏覽 ASP.NET 網頁(位址欄輸入網址)的差異:
瀏覽ASP.NET 網頁vs.開啟 .aspx 檔案(續7) • 檔案/開啟舊檔:結果是啟動系統中預設的程式開啟 Whattime.aspx,而不會執行其中的 ASP 程式。
瀏覽ASP.NET 網頁vs.開啟 .aspx 檔案(續8) • 在位址欄輸入網址:網址會送到 IIS,而 IIS 會開啟 Whattime.aspx,並且解讀檔案內容,然後執行其中的 ASP 程式,最後再把結果下載到瀏覽器,而由於 IIS 在執行 ASP 程式之後,會將執行結果(以 Whattime.aspx 為例,結果是系統時間)下載到瀏覽器,所以瀏覽器除了顯示 "現在時間:" 之外,也能夠顯示系統時間。
練習 • 先利用瀏覽器的「檔案/開啟舊檔」開啟 kjaspx\ch02 的 Week02.aspx,然後在瀏覽器位址欄輸入 http://localhost/kjaspx/ch02/Week02.aspx ,並比較兩者的差異。
HTML 語言 • HTML(HyperText Markup Language,超文字標示語言)是構成網頁最「基礎」的要素,雖然隨著技術的演進,又有各種新技術的誕生,例如 Dynamic HTML、Java Script、VB Script、ASP、ASP.NET…,但它們依然是建構在HTML 之上,並沒有捨棄既有的 HTML。
需要學 HTML? • 現在 HTML 編輯工具已經相當普遍,要建立一個 .htm 的網頁(文件),只要使用自己最習慣的 HTML 編輯工具(例如FrontPage、Dreamweaver 、Word…) 加以編輯即可。 • 我們會利用 ASP 程式動態建立 HTML 格式的文件,然後下傳到瀏覽器端,所以不可不瞭解 HTML 語言的文法(簡稱「語法」)。
HTML 是語言非程式語言 • HTML 是一種語言,但並不算是「程式」語言,HTML 所定義的範疇僅侷限於如何表現文字、圖片,以及如何建立文件之間的連結;程式則是經過規劃的一連串命令(或稱為「敘述」),而這樣的命令可用來驅使作業系統或應用程式執行某些工作 。
動態網頁 • 由於HTML並不是程式語言,因此由HTML 所構成的文件並不會因時因地產生變化,所以便有「靜態」(static)網頁之稱。為了讓網頁具備動態變化的能力,不管是瀏覽器或 Web Server 製造廠商,都著手將程式加到單純的 HTML 文件中,而發展出動態網頁的技術。
Server 及瀏覽器都可以執行程式 • 要產生動態網頁,一定要撰寫程式,至於該選擇哪一種程式語言,往往令網頁製作者感到頭痛。 • 首先必須說明的是,程式的執行端可分成客戶端(瀏覽器)及伺服端(Server),如果程式在瀏覽器上面執行,則 Server 必須把程式碼傳下來,而瀏覽器也要聰明到可以執行 Server 所傳輸下來的程式,而如果程式在 Server 端執行,則 Server 只要把執行的結果傳下來即可。
什麼是 CGI? • 早期在 Server 端執行的程式,最有名的莫過於 CGI(Common Gateway Interface),對網路族來說,CGI 好像是很技術的東西,但實際上,它的觀念卻與 UNIX 或 DOS 的 Shell 很像。 • 對 Shell 而言,使用者是利用鍵盤輸入指令,然後由 Shell 解譯此一指令並且啟動對應的程式。 • 對 CGI 而言,指令則是來自於瀏覽器,以 CGI 介面傳送到伺服器之後,再由伺服器解譯後啟動伺服器之中對應的程式。
從 CGI 到 ASP • 對 Shell 指令而言,可能帶有參數,當程式被 Shell 啟動之後,它可以透過 Shell 所提供的介面讀取指令的參數;對伺服端的程式而言,當它被啟動之後,則可以透過 CGI 所提供的介面讀取指令的參數。 • 最後是輸出的比較,同一個程式可能被 Shell 啟動或 CGI 所啟動,被 Shell 啟動的程式其輸出是螢幕,被 CGI 啟動的程式其輸出則是網路,也就是傳輸給瀏覽器。
CGI 程式的問題 • CGI 可以說沒有任何技術可言,如果 Web 伺服器提供有 CGI 介面程式(可能的形式有原始程式碼、程式庫、動態連結程式庫…,視 Web伺服器而定),那麼撰寫伺服端的 CGI 程式與一般程式是沒什麼差別的。 • 不過在實務上,同樣的作業系統,若 Web 伺服器不同,則 CGI 介面程式也會不同,過去常有人抱怨:「Web 伺服器由 WebSite 換成 IIS 之後,原來的 CGI 程式就無法使用了」,原因就是因為不同 Web 伺服器所提供的 CGI 介面程式不同所致。
ASP vs. CGI • ASP 程式也算是 CGI 程式,或者說是CGI 程式的改良版,它跟 CGI 程式一樣是在伺服端執行的,但是它有以下優點: • CGI 介面物件化:在CGI 程式中收集網頁資料最麻煩的事情是解析瀏覽器上傳的資料(主要是為了解析特殊字元及中文碼),若使用 ASP 程式來收集網頁資料,則 ASP.NET 會代為解析,並且轉換成物件供 ASP 程式來讀取,簡單地說,就是 ASP.NET 提供有豐富的物件(以下簡稱「ASP 物件」)讓 ASP 程式簡化 CGI 的相關處理工作。
ASP vs. CGI(續) 2. 可以使用 .NET 物件類別:除了 ASP 物件外,舉凡 .NET Framework 系統底下的物件也都可以讓 ASP 程式來使用,使其成為 ASP 網頁製作中的資源,而由於 ASP 程式可以使用 .NET Framework 的物件類別,也使得 ASP 程式可以做的事情比傳統的 CGI 程式要多出許多 。
ASP.NET 網頁的程式語言 • 在 ASP.NET 網頁的製作中,我們可以選擇 Visual Basic.NET(以下簡稱 VB.NET 或 VB)、Visual C#.NET、Java Script…等做為撰寫 ASP 程式的語言,本書選擇的是 VB.NET,因此除了 HTML 語言之外,VB.NET 程式語言可以說是製作 ASP.NET 網頁最重要的基礎,預定在下一章為您介紹 VB.NET 的程式設計。
整理一下 1. 單純由 HTML 所構成的網頁是靜態的網頁,欲產生動態網頁必須撰寫程式。網頁程式的執行可以分成在客戶端執行及在伺服端執行兩種狀態,而 ASP 是在伺服端執行的程式。 2. 以開啟檔案的方式開啟 .aspx 檔案,並不會讓檔案中 ASP 程式被執行。要讓 ASP 程式被執行的條件是:(1) 系統安裝有 IIS (2) 以瀏覽的方式瀏覽 ASP.NET 網頁。
整理一下(續1) 3. ASP 已經將 CGI 的介面封裝成比較容易使用的物件,如果已經開始使用 ASP,就可以不必再學 CGI。 4. HTML 是製作 ASP.NET 網頁很重要的基礎。
整理一下(續2) 5.VB.NET、Visual C#.NET 及 Java Script…等都可以用來撰寫 ASP 程式,而本書將採用 VB.NET 做為撰寫 ASP 程式的語言。 6.本書所介紹的 ASP.NET 網頁是由 HTML 與 VB.NET 所構成的,其中 HTML 是構成網頁的基礎,而 VB.NET 則是用來撰寫 ASP.NET 網頁所需之 ASP 程式。
為什麼要學 HTML? • 在 ASP.NET 網頁的製作中,瞭解 HTML 語法是必要的,舉例說明為什麼: 1. 首先請瀏覽 kjaspx/ch02 的week01.aspx ,結果網頁會顯示「今天是:星期X」的內容。
為什麼要學 HTML? (續1) 2. 檢視 week01.aspx 檔案的內容,其內容如下: <HTML><BODY>今天是:<%Dim week Week = DatePart( DateInterval.Weekday, Now() )Response.Write( WeekdayName(Week) ) %></BODY></HTML>
為什麼要學 HTML? (續2) • 其中粗體字部分為 ASP 程式,非粗體字部分則是傳統的 HTML 文件,ASP 程式與 HTML 文件可以說是涇渭分明,感覺上撰寫 ASP 程式似乎與 HTML 無關,但其實不然。 3. 請再瀏覽 ch02 目錄的 week02.aspx,同樣的網頁也會顯示「今天是:星期X」的內容,但星期 X 的部分則會因為星期一、二、…、日的不同,而顯示不同的顏色,其中星期一~五顯示成藍色、星期六顯示成綠色、星期日則顯示成紅色。
為什麼要學 HTML? (續3) 4. 讓我們稍微思考一下,week02.aspx 是怎麼做到的,別以為 ASP 程式可以控制瀏覽器所顯示的內容,ASP 程式沒有這種能力,ASP 程式與瀏覽器之間關係只有下載網頁及上載資料的關係,以 week02.aspx 為例,如果 ASP 程式希望瀏覽器能夠將網頁文字顯示成紅色,則方法是下載 "<FONT COLOR=Red>" 給瀏覽器,所撰寫的程式如下: Response.Write( "<FONT COLOR=Red>" )
為什麼要學 HTML?(續4) • 其中 <FONT COLOR=Red> 就是標準的 HTML 語法,被瀏覽器解讀之後,會將後續的文字顯示成紅色。 • 再看完整的 week02.aspx,其中粗體字的部分,都是由 ASP 程式下載 HTML 語句給瀏覽器的例子:
為什麼要學 HTML? (續5) <HTML> <BODY> 今天是: <%Dim Week Week = DatePart( DateInterval.Weekday, Now() ) If Week = 1 Then ' 星期日 Response.Write( "<FONT COLOR=Red>" ) ElseIf Week = 7 Then ' 星期六 Response.Write( "<FONT COLOR=Green>" ) Else Response.Write( "<FONT COLOR=Blue>" ) End If Response.Write( WeekdayName(Week) ) Response.Write( "</FONT>" ) %> </BODY> </HTML>
為什麼要學 HTML? (續6) 5. 在 week02.aspx 的例子中,我們可以看到 ASP 程式若要「控制」瀏覽器所顯示的內容,其方法是下載正確的 HTML 語句給瀏覽器,這就是撰寫 ASP 程式也必須瞭解 HTML 語法的原因。
標示的觀念 • 首先來看一個很簡單的 HTML 檔案,請使用記事本程式開啟本書 kjaspx/ch02目錄底下的 htm01.htm,其內容如下: <H1>初試 HTML 語法</H1><HR><H2>使用 HTML 的基本觀念</H2><P><UL><LI>標示的觀念</LI><LI>區塊的觀念</LI><LI>參數的觀念</LI></UL>
標示的觀念(續1) • 以上所看到的是 htm01.htm 檔案的原始碼,其中含有一些 HTML 標示(例如 <H1>、<HR>、<H2>、<UL>、<LI>),這些標示都是有意義的,每一個標示就好像是下給瀏覽器的一個指令,舉例來說,<H1> 標示在告訴瀏覽器文字要顯示成「最大的標題」,所以「<H1>初試 HTML 語法</H1>」經瀏覽器解讀之後,顯示出來的結果便如下圖:
標示的觀念(續3) • 除了 htm01.htm 之外,如果您使用記事本檢視其他 .htm 檔案,可以發現它們也都是由標示所組成的,HTML 的全名是 HyperText Markup Language(超文字標示語言),其中 Markup (標示) 的意義就是這樣來的。
區塊的觀念 • 除了標示的觀念之外,HTML另一個重要的觀念是「區塊」,以前面的htm01.htm 檔案為例,「<H1>…</H1>」、「<H2>…</H2>」、「<UL>…</UL>」、及「<LI>…</LI>」都算是區塊。
區塊的觀念(續2) • 區塊的辨識很簡單,如果開頭的標示寫成 <標示X>,則一直向後尋找直到 </標示X> 時,就是一個區塊。 • 區塊的好處是讓 HTML 檔案具有結構性,可提高其可讀性,接下來讓我們繼續觀察 htm02.htm檔案,以下是以 IE 開啟的結果:
區塊的觀念(續4) • 再使用記事本加以檢視,結果也可以看到不少由標示所構成的區塊: