16第一章ASP.Net编程基础知识
第一章??????? ASP.Net編程基礎知識
第一章??????? ASP.Net編程基礎知識
本章首先介紹用ASP.Net技術編制服務器端動態網頁所需的網絡和HTML標記語言方面的有關知識。然后介紹ASP.Net技術基礎。
9.1?? 網絡基礎
用ASP.Net技術編制服務器端動態網頁,必然要和網絡打交道,具備一些網絡方面的知識是必要的。這里假設讀者已經學習過計算機基礎課程,在此基礎上,進一步介紹用ASP.Net技術編制服務器端動態網頁所需的必備網絡基礎知識。
9.1.1? ?局域網、廣域網和INTERNET
把分布在不同地理區域的計算機以及專門的外部設備利用通信線路互連,使各個計算機之間能夠相互通訊,實現信息和資源共享,就組成了計算機網絡。在一個較小區域,例如在單位內部組成的計算機網絡,稱為局域網。一個較大區域的計算機網絡,稱為廣域網。為了使各個局域網之間互相通訊,可以把各個局域網連起來,組成廣域網。如將全世界范圍的計算機網絡采用TCP/IP網絡傳輸協議聯到一起,則組成INTERNET。
INTERNET提供了許多服務,例如:遠程登錄服務Telnet、文件傳送服務FTP、電子郵件服務E-mail、電子公告板系統BBS、萬維網WWW(Web)、電子商務、IP電話等。這里主要介紹萬維網WWW中服務器端動態網頁的設計方法。
9.1.2? ?網絡傳輸協議
網絡的目的是為了通訊,共享資源。通訊即傳輸數據,為了傳輸數據各個系統應遵守一定規則,這個規則叫網絡傳輸協議。不同的網絡操作系統采用不同的網絡傳輸協議。而在INTERNET中,為了傳輸數據,所有系統都必須采用相同的傳輸協議,即TCP/IP協議。
9.1.3? ?IP地址
INTERNET中有成千上萬臺計算機,它允許任何兩臺計算機之間進行通訊,為了區分不同的計算機,必須給每一臺計算機一個唯一的編號,這個編號叫計算機的IP地址,它是一個32位二進制數,用四個十進制數表示,中間用點隔開,每個十進制數允許值為0-255(一個字節),例如,202.112.10.105,這種記錄方法叫點數記法。一個IP地址一般由兩部分組成,網絡標志號及此網絡中的計算機號,例如,202.112.10.105如果是一個C類地址,其網絡標志號為202.112.10.0,網絡中的計算機號為105。一個局域網絡中,所有計算機都應有相同的網絡標志號,每個計算機有不同的計算機號,兩個不同局域網絡,其網絡標志號必須不同,但不同網絡中,計算機號可以相同。一個計算機要和INTERNET聯接,必須有自己的IP地址。
32位IP地址被分為5類,即A、B、C、D和E類地址。A類地址的第一字節為網絡標志號,其余3字節為計算機號。B類地址的前兩個字節為網絡標志號,其余2字節為計算機號。C類地址的前三個字節為網絡標志號,最后一字節為計算機號。D類為特殊地址,E類為私有地址。對計算機進行TCP/IP設置時,有一項叫子網掩碼,用子網掩碼表示IP地址是哪類地址,A類地址的子網掩碼是:255.0.0.0,B類地址的子網掩碼是:255.255.0.0,C類地址的子網掩碼是:255.255.255.0。我國大部分單位的IP地址為C類地址。
9.1.4? ?域名和域名服務器
用點數法表示的IP地址,雖然簡單,但很難記憶,為了解決此問題,可以為INTERNET網中的每臺計算機起一個名字,在INTERNET中叫域名。例如微軟的域名www.microsoft.com,清華大學的域名www.tsinghua.edu.cn。
在INTERNET中訪問其它計算機必須使用IP地址。為了實現使用域名訪問其它計算機,域名必須首先轉換為IP地址。在網內有一臺計算機運行將域名轉換為IP地址的軟件,這臺計算機叫DNS服務器(域名服務器)。它負責一定區域內的計算機域名到IP地址的轉換,這個區域一般是一個網絡內部的所有計算機。當網內的計算機用域名和其它計算機通訊時,首先呼叫DNS服務器,DNS服務器送出此域名對應的IP地址,網內的計算機收到IP地址后,利用IP地址和其它計算機通訊。一臺DNS服務器不可能完成全世界所有域名轉換為IP地址的工作。DNS服務器采用分布式結構,如果本地DNS不能轉換相應的域名,則向上一級DNS申請轉換。計算機要和INTERNET聯接,設置TCP/IP協議時,必須設置DNS服務器IP地址。
9.1.5? ?Web網站工作方式和宿主目錄
Web網站是基于客戶機/服務器模式。用戶用瀏覽器訪問Web網站的網頁,運行瀏覽器軟件的計算機叫客戶機。Web網站是一臺運行Web服務器軟件的計算機,稱作Web服務器。Web服務器在指定的文件夾中存有大量的網頁,這個文件夾叫宿主目錄,宿主目錄下的文件對訪問者都是可見的。Web服務器軟件總是在監視是否有瀏覽器訪問自己。客戶機用瀏覽器訪問Web服務器,在瀏覽器地址欄鍵入要訪問網頁的域名地址,用DNS(域名系統)轉換域名為IP地址,通過IP地址和指定的Web服務器通訊,該Web服務器把指定網頁文件發送給瀏覽器。瀏覽器接到網頁數據,將其顯示。
宿主目錄在不同的Web服務器軟件中是不同的。Windows2000的Web服務器軟件IIS的宿主目錄為Windows2000的安裝路徑\InetPub\wwwroot。大部分Web服務器允許修改宿主目錄,修改方法見9.1.12。
9.1.6? ?URL、超級鏈接和主頁
使用瀏覽器瀏覽Web網站網頁時,實際上是用URL來定位一個網頁的。URL是Uniform Resource Location(統一資源定位器)的簡稱。他的一般格式是:http://域名:端口號/網頁文件路徑。http:是Web專用超文本傳輸協議。域名,即上邊講到,例如www.microsoft.com是微軟域名,此處可以是IP地址,其格式為http://IP地址:端口號/網頁文件路徑。網頁文件路徑是要訪問的網頁文件相對于宿主目錄的相對路徑。在Web系統中,每一個網頁都有自己的URL,由URL決定網頁在INTERNET中的具體位置。URL很象計算機文件系統中的文件全路徑名。
網頁中有些文本帶有下劃線,當鼠標經過這些帶有下劃線的文本時,鼠標變為手形,單擊帶有下劃線的文本,將調入和這些文本有關的網頁并顯示。這種現象叫超級鏈接。超級鏈接的本質是,單擊該關鍵詞,得到和關鍵詞有關的網頁的URL,用此URL訪問指定Web服務器,該Web服務器送出此URL指定的網頁,在瀏覽器中顯示。
如果訪問時不指定網頁文件路徑及文件名,則訪問網站主頁,例如當我們在瀏覽器的URL(地址)處鍵入http://www.sun.com/時,將訪問sun公司主頁。主頁文件一定存在宿主目錄中。主頁文件名在不同的Web服務器中是不同的。Windows2000的Web服務器軟件IIS默認主頁文件名為Default.htm。當用戶使用不帶文件名的URL訪問Web服務器時,并且宿主目錄中不存在主頁,而且Web服務器允許列出宿主目錄下的所有文件及目錄,將在瀏覽器中列出宿主目錄下的所有文件及目錄。
9.1.7? ?端口號
一臺計算機上可能運行多個服務器軟件,如Web服務器軟件(可能不只一個)、ftp服務器軟件等,它們的IP地址是相同的。為了區分不同的服務器軟件,可為運行的每個服務器軟件編一個號,叫端口號。如果一臺計算機僅運行一個Web服務器軟件,并使用默認端口號80,端口號可以不寫。但如有多個Web服務器運行,在訪問不是采用默認端口號的Web服務器軟件時,URL必須指明使用的端口號。訪問其它服務器軟件也有同樣問題,處理方法相同。
9.1.8? ?HTML,HTTP和網頁
網頁使用HTML標記語言寫成。HTML標記是用特殊的ASCII字符來定義網頁中的格式、字體、顏色等內容。由于各種系統中,例如Windows、Linux、Unix和蘋果系統,都支持ASCII字符標準,不同系統中的瀏覽器都可以解釋這些HTML標記,然后使用本系統的方法,將用HTML標記語言標記的網頁在屏幕中顯示。這樣,不同的系統都使用統一的HTML標記創建網頁,任何一個系統的瀏覽器都可以訪問其它系統中的網頁。
網頁是Web系統中最小傳輸單位,它是用HTML語言標記的具有一定格式的數據集合,可供瀏覽器顯示。HTTP是超文本傳輸協議,用在Web服務器和瀏覽器之間傳輸網頁。本質上是TCP/IP協議,所有的Web服務器和瀏覽器都應遵守HTML和HTTP協議,才能使同一網頁在任何計算機中,使用任何瀏覽器都能顯示同一畫面。但實際上各公司瀏覽器軟件是有差異的,最明顯的是IE和Netscape之間在顯示同一網頁時,是有差別的。做好網頁后,應用不同瀏覽器測試一下,看是否都能通過
9.1.9? ?靜態網頁
創建一個網站,必須編制若干網頁,網站才算建成。靜態網頁是預先做好的網頁,在被訪問時不能被修改。靜態網頁制作比較容易,即使不懂超文本語言,使用FrontPage,Dreamewarer等應用程序也可以完成,而動態網頁制作則比較困難。
9.1.10? 客戶端動態網頁
客戶端動態網頁的例子很多,例如網頁根據上午、下午、晚上問客人早上好、下午好和晚上好;又如網頁對于用戶輸入的內容進行檢查,根據用戶的選擇完成不同的功能;在瀏覽器內實現動畫,放映影片等,這些都是客戶端動態網頁的例子??梢栽贖TML語言標記中加入Javascript或VBscript腳本語言來實現客戶端動態網頁。也可以在HTML語言嵌入Java小程序(Applet)來實現。編寫客戶端動態網頁,除了要學習HTML語言,還應該學習VBscript或Javascript腳本語言,進一步還可以學習Java語言。另外使用微軟的ActiveX控件也是實現客戶端動態網頁的一種方法。
9.1.11? Web應用程序和服務器端動態網頁
舉一個客戶登錄的例子,當客戶用瀏覽器填好表格后,將表格數據傳回Web服務器,應把這些信息存入數據庫。Web服務器軟件并不能完成此項工作,它調用運行Web服務器軟件的計算機上的其它程序完成,這個程序叫Web應用程序。又如,建立一個中學校園網,并建立一個學生信息數據庫,可供校長、教導處、老師查詢。一般要根據一些條件進行查詢,如某班的學生,獲得三好生的學生等。瀏覽器把所查找的條件送給Web服務器后,Web服務器必須調用Web應用程序完成此項工作,此程序從數據庫查到有關數據后,要轉換查找結果為HTML語言標記的網頁,傳送給Web服務器,再發送給請求此項查詢的瀏覽器。這個根據查詢條件動態生成的網頁叫做服務器端動態網頁。編制服務器端Web應用程序主要有如下幾種方法:CGI,ISAPI,NSAPI,ASP,ASP.Net,JSP,PHP等。ASP.Net技術是微軟最新提出的編制Web應用程序的技術。Web應用程序在Web網站系統中所起的作用如下圖,圖中用ASP.Net實現的Web應用程序采用ADO.Net技術訪問數據庫。該圖是一個典型的三層數據庫系統,所謂三層是根據功能將應用分為表示層、功能層、數據層3部分。這里的3層分別用瀏覽器、Web服務器(包含Web應用程序)、數據庫服務器實現。一些文獻中提到4層數據庫系統是將Web應用程序從Web服務器分離,在Web服務器和數據庫之間增加一個應用服務器(應用層)。這里主要講述Web應用程序的設計方法。
? ? ?? ??? ??
| ??? 瀏覽器 ??? ??? |
?? ??? ??
| ??? Web服務器 ??? ??? |
?? ??? ??
| ??? Web應用程序 ??? ??? |
?? ??? ??
| ??? 數據庫服務器 ??? ??? |
?
?
?
?
?
?
????????????????????????????????????? 訪問數據庫的方法
9.1.12? 修改宿主目錄及建立虛擬目錄
創建一個網站,必須有如下條件:第一,聯網并有固定的IP地址。第二,安裝并運行Web服務器軟件,例如Windows操作系統下的IIS,Unix或Liunx下的Aparc。第三,在宿主目錄下有可供游覽的網頁。具備以上三個條件,就可以用瀏覽器訪問此Web網站中的靜態網頁。如果在網站中要使用ASP.Net技術編寫的網頁,必須在網站所在的Windows2000操作系統中安裝Microsoft.Net Framework。Windows2000的IIS服務器默認的宿主目錄為Windows2000的安裝路徑\InetPub\wwwroot??梢孕薷乃拗髂夸洖槠渌我饽夸?#xff0c;例如修改Windows2000的IIS服務器的宿主目錄為D:/asp方法如下:
(1)??? 在D盤創建文件夾:ASP。打開控制面板,雙擊管理工具圖標。再雙擊Internet服務管理器圖標。出現如下對話框(圖9.1.12A)。
? ? ? ? ? ? ? ? ? ? ? ?
圖9.1.12A
(2)??? 在對話框左側,右擊第一個+號后的計算機名,在彈出快捷菜單中,單擊"新建"|"WEB站點"菜單項,打開"向導"對話框,按向導步驟選擇文件夾D:/asp為新站點宿主目錄。單擊第一個+,打開文件樹,右擊"默認WEB站點",在彈出快捷菜單中,單擊"停止"菜單項,停止"默認WEB站點"。用同樣方法停止"管理WEB站點"。
(3)??? 右擊圖9.12.1A中的某一站點,在彈出快捷菜單中單擊"屬性"菜單項,出現如下窗口(圖9.12.1B),在窗口中可以修改此站點的各種屬性。其中"文檔"頁可以指定主頁的文件名。
?
圖9.12.1B
請讀者作如下試驗,首先用記事本創建如下網頁:
<html>
? <body>
?? 這是我的第一個網頁
</body>
</html>
以文件名Test.htm存到d:/asp文件夾中,如本機IP地址為:202.204.206.98。在另一臺聯網計算機中打開瀏覽器,輸入地址:http://202.204.206.98/Test.htm,在瀏覽器中應能看到文字:這是我的第一個網頁。從本機訪問宿主目錄下的網頁時,可以在瀏覽器的URL(地址)處鍵入:http://localhost/網頁相對宿主目錄的相對路經。其它計算機訪問時,可以在瀏覽器的URL(地址)處鍵入:http://IP地址或域名/網頁相對宿主目錄的相對路經。
也可以用創建虛擬目錄的方法存放網頁。所謂虛擬目錄,是指一個不在宿主目錄中的目錄,經過設置后,可以看作宿主目錄中的一個子目錄,其中的網頁文件允許其它計算機的瀏覽器進行瀏覽。創建虛擬目錄具體步驟如下:
(1)??? 打開控制面板,雙擊管理工具圖標。
(2)??? 雙擊Internet 服務管理器圖標。出現圖9.12.1A窗口。
(3)??? 單擊計算機名前的+號,展開文件樹。
(4)??? 右擊默認Web站點,出現彈出菜單,在彈出快捷菜單中單擊"新建"|"虛擬目錄"菜單項,打開向導對話框,按向導步驟選擇D:/asp1為虛擬目錄。此時,在默認Web站點下將會出現設定的虛擬目錄(想一想虛擬目錄名是在何處設定的),此目錄允許其他人訪問。如把文件Test.htm拷貝到這個虛擬目錄,請讀者寫出此網頁的URL。
9.2?? HTML標記語言
網頁使用HTML標記語言寫成。HTML標記是用特殊的ASCII字符來定義網頁中的格式,字體等特點。由于各種系統中,都支持ASCII字符標準,不同系統中的瀏覽器都可以解釋這些ASCII標記,然后使用本系統方法,將用HTML語言標記的網頁在屏幕中顯示。這樣,一個系統就可以訪問其它不同系統中用HTML標記的網頁。
不經過Web服務器,雙擊靜態網頁或者在瀏覽器地址欄中鍵入網頁文件的全路徑,也可用瀏覽器顯示瀏覽器所在計算機中的靜態網頁。
9.2.1? HTML標記
HTML標記是用特殊的ASCII字符來定義網頁中的格式、字體、字符對齊方式等特點。其格式為:<標記名稱>被控制的文字</標記名稱>。其中,<標記名稱>為開始標記,</標記名稱>為結束標記,一般用來定義被控制的文字的格式或字體等。例如,下列標記使被控制的文字中間對齊:<center>ASP.Net</center>
9.2.2? 網頁文件結構
一個網頁文件的最基本HTML標記結構如下:
<html>
? <head>
?? <title>顯示在瀏覽器標題欄中的文字</title>
? </head>
? <body>
?? 這里是網頁的內容
</body>
</html>
<html>表示網頁文件的開始,</html>表示網頁文件的的結束,網頁的所有內容都應在這兩個標記之間。<head>…</head>之間可以設定網頁的一些信息,網頁也允許不包括這個標記,<title>…</title>之間的文字顯示在瀏覽器的標題欄中。<body>…</body>之間是網頁在瀏覽器中顯示的內容。由此可以看出,在HTML語法中,HTML標記可以嵌套,一個HTML標記可以包含另一個HTML標記,但標記的嵌套不能是交錯的。下邊是一個實際例子:
<html>
? <head>
??? <title>這是我的第一個網頁</title>
? </head>
? <body>
???? <center>
這是我的第一個網頁。<BR>
其中<BR>標記表示換行,
注意,僅鍵入回車是不能在網頁中換行的。<BR>
注意空格的用法,??? 鍵入四個空格,網頁中只有一個空格。<BR>
增加4個空格,    是4個空格<BR>
網頁中不區分大小寫,不同瀏覽器顯示的效果可能不同<BR>
<p>這是段落標記,下面文字另起一段</p>
<!--這是注釋,瀏覽時不顯示-->
注意,特殊符號的顯示:<,>,",&,©,®
???? </center>
? </body>
</html>
網頁用IE瀏覽器顯示效果如右圖,請注意顯示的內容和原文件內容排版格式的不同。
?
9.2.3? ?網頁使用的語言字符集
網頁中如果不指定語言字符集,將使用瀏覽器所在操作系統的默認語言字符集,為了保證網頁能正確顯示信息,最好在網頁中指定本網頁使用的語言字符集。在網頁中指定網頁使用的語言字符集方法見下邊的網頁,其中gb2312是中文字符集。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>meta的使用</title>
</head>
<body>
meta的使用。
</body>
</html>
9.2.4? ?背景和文字顏色及文字邊距
設置背景和文字顏色及文字邊距的語法如下:<body bgcolor=#,text=#,link=#,alink=#, vlink=#,leftmargin=20>。其中bgcolor為背景顏色,text為非超級鏈接字符顏色,link為超級鏈接字符顏色,alink為正被點擊的超級鏈接字符顏色,vlink為已被訪問的超級鏈接字符顏色,#表示具體顏色,可用rrggbb表示,rr、gg、bb分別是表示紅色、綠色、藍色的16進制數,例如,紅色為:ff0000??梢杂胻opmargin、bottommargin、leftmargin、rightmargin設置頁面上下左右邊距,單位為像素。下例設置背景色為紅色,頁面左右邊距為20個像素。
<html>
<body bgcolor=ff0000,leftnargin=20,rightnargin=20>
設置背景色為紅色,頁面左右邊距為20個像素。
</body>
</html>
9.2.5? ?顯示一幅圖
下例在網頁中顯示一幅圖。注意網頁中的src="file:///D:/ASP/p1.jpg"的寫法。其中,file://是文件協議,用來選擇本地文件。一般網頁中用http://,即超文本協議,用URL定位圖像文件。如采用URL定位圖像文件,所創建網頁文件必須保存到Web服務器的宿主目錄中,在瀏覽器地址欄鍵入網頁的URL,才能訪問所創建的網頁,顯示圖像。
<html>
<body>
增加一幅圖形!<BR>
<IMG src="file:///D:/ASP/p1.jpg" width="320" height="240">
</body>
</html>
9.2.6? 超級鏈接
網頁中有些文字帶下劃線,當鼠標經過帶下劃線文字時,鼠標變為手形,單擊帶下劃線文字,將調入和單擊處文字有關的網頁并顯示。這種方法叫超級鏈接。本節例子用超級鏈接方法在當前窗口打開網頁e9_2_5.htm。這里要求網頁e2_2_5.htm和本網頁在同一文件夾中。
<html>
<body>
? 這是一個
? <a href="e9_2_5.htm">鏈接的例子</a>
? 點一下帶下劃線的文字!
</body>
</html>
9.2.7? 超級鏈接在新窗口打開另一網頁
例子e9_2_7A:本例使用超級鏈接在新窗口打開另一網頁,網頁文件如下:
<html>
<body>
?? <a href="e9_2_7B.htm"? target="window_name">開一個新窗口!</a>
</body>
</html>
用瀏覽器打開網頁e9_2_7A,將光標移到”開一個新窗口”處,光標變為手型,單擊”開一個新窗口”,將在一個新窗口顯示e9_2_7B.htm網頁。
例子e9_2_7B:e9_2_7B.htm網頁如下:
<html>
<body>
?? <H1>這是新開的窗口!</H1>
?? <a href="e9_2_7A.htm> 打開原窗口 </a>"
? </body>
</html>
9.2.8? 網頁中標題的字體
網頁中一共有6種標題字體,見下例:
<html>
<body>
? <h1>這是1級標題!</h1>
? <h2>這是2級標題!</h2>
? <h3>這是3級標題!</h3>
? <h4>這是4級標題!</h4>
? <h5>這是5級標題!</h5>
? <h6>這是6級標題!</h6>
</body>
</html>
其中,標題字體是黑體,每個標題后自動插入一個空行。
9.2.9? 網頁中正文字體
可以設置網頁中正文字體的字號,字號只能是1到7。設置正文字體字號方法見例子:
<html>
<body>
?? <font size=7>字號為7,最大字體</font>
?? <font size=6>字號為6</font>
?? <font size=5>字號為5</font>
?? <font size=4>字號為4</font>
?? <font size=3>字號為4</font>
?? <font size=2>字號為2</font>
?? <font size=1>字號為1,最小字體</font>
</body>
</html>
9.2.10? 設置字體風格
可以使在網頁中顯示的字體為斜體、粗體,為字體增加下劃線,刪除線。見下例:
<html>
<body>
??? <b>標記內的字為黑體</b> <br>
??? <i>標記內的字為斜體</i> <br>
??? <u>標記內的字有下劃線</u> <br>
??? <tt>標記內的字等寬,例如w和i等寬</tt> <br>
??? H<sub>2</sub> ,2為下標<br>
??? A<sup>2</sup> ,2為上標<br>
??? <s>標記內的字加刪除線</s> <br>
??? <strike>標記內的字加刪除線</strike> <br>
</body>
</html>
9.2.11? 字體標記的組合使用
通過標記的嵌套,可以使網頁中的字符具有多種屬性,見下例:
<html>
<body>
?? <i><font size=5><b>今天</b>天氣<font size=6>真好!</font></font></i>
</body>
</html>
9.2.12? 字體的顏色
可以使網頁中的字符具有不同顏色,見下例:
<html>
<body>
??? <font size=5 color=000000>黑色的字符串</font>&
??? <font size=5 color=red>紅色的字符串</font>
</body>
</html>
9.2.13? 網頁中控件的概念
Web服務器為了和用戶進行交互,必須解決如下問題:首先,用戶應能輸入一些數據,例如,要查詢的條件,用戶登錄的信息等。第二,這些數據用什么方法傳到Web服務器。第三,Web服務器用哪個程序響應用戶。為了實現以上功能,必須使用窗體控件,也叫表單控件form。同時在表單控件form中還需要一些其它控件,例如,編輯框控件,列表框控件,下拉列表框控件和按鈕等,用來輸入數據??梢杂肏TML標記語言標記這些控件。瀏覽器看到這些標記,就把它顯示為相應的控件??丶性S多屬性,也可以用HTML標記語言描述,格式為:屬性名稱=屬性值,兩個屬性用空格分開。
9.2.14? 窗體控件和其它控件的使用
窗體控件(表單控件form)是其它控件的容器,所有其它控件都要放到窗體控件中。用HTML標記表單控件form的基本語法如下:
<form action=URL method="POST">
?? <!--在此處增加交互控件,例如編輯框、列表框-->
? <input type="submit" value="提交" name="B1">
<input type="reset" value="全部重寫" name="B2">
</form>
其中,標記<form action=URL method="POST">…</form>定義表單控件form,action=URL中的URL是單擊"提交"按鈕后,對用戶輸入信息進行處理的網頁URL,method="POST"表示用POST方法將用戶輸入的數據傳到Web服務器,也可以用get方法。傳遞格式為:Name=Value。
form控件內可以增加交互控件,用戶用交互控件輸入數據。交互控件的標記語法如下:<input type=?align=top|middle|bottom [check] maxlength=? Name=? Size=? Src=? Type=? Value=?>,input表示定義一個交互控件,其它各個屬性意義如下:
Type為控件類型,可以是:type="submit"為提交按鈕;type="reset"為全部重寫按鈕; type="checkbox"為復選框;type="radio"為單選框;type="image"為圖形;type="text"為編輯框;type="password"為口令編輯框;type="hidden"用戶不能看到,可以用來傳遞網頁的一些隱藏的數據。align為控件中文本對齊方式,可以取top、middle和bottom。[check]只有在type="checkbox"或"radio"時使用,表示缺省被選中。Maxlength屬性在type="text"編輯框時表示最大字符長度。Name屬性代表此控件的名字。Size屬性在type="text"編輯框時表示編輯框最大寬度。Value如為按鈕,則為標題,為編輯框,則為缺省內容。
在form控件內已定義了兩個按鈕控件,其中<input type="submit" value="提交" name= "B1">是"提交"按鈕控件,因此類型為submit,按鈕標題為"提交",控件的name為"B1",當用戶單擊此按鈕,form控件將把控件內的所有交互控件中的數據用method屬性指定方法,傳遞給action指定的網頁處理。<input type="reset" value="全部重寫" name="B2">也是一個按鈕,用戶單擊此按鈕,將清空form控件內的所有可輸入數據的交互控件。
9.2.15? 例子:使用控件的網頁
本例請用戶用編輯框輸入用戶姓名、用戶主頁網址、用戶密碼,有兩個按鈕,單擊"提交"按鈕,將把用戶輸入數據提交給網頁e1.htm處理,e1.htm網頁和本例網頁在同一文件夾中。如希望重新填寫,可以單擊"全部重寫"按鈕,清空輸入控件。網頁的具體內容如下:
<html>
<head>
<title>使用控件的網頁例子</title>
</head>
<body>
<form method="POST" action="e1.htm">
????? 您的姓名:<input type="text" name="T1" size="20"><br>
????? 您的主頁的網址:<input type="text" name="T2" size="20"><br>
????? 密碼:<input type="password" name="T3" size="20"><br>
????? <input type="submit" value="提交"><input type="reset" value="全部重寫"><br>
</form>
</body>
</html>
用記事本程序輸入此網頁,以e9_2_15.htm為文件名存入d:/asp文件夾,這里已假設d:/asp文件夾為網站的宿主目錄。用瀏覽器打開此網頁,瀏覽器顯示效果如右圖。
9.2.16? 用FrontPage做網頁的例子
用FrontPage或Dreamewarer程序編輯網頁要比使用記事本編輯網頁方便的多,這兩個程序都是所見即所得的可視化網頁設計工具。使用FrontPage設計網頁的具體步驟如下:
(1)? 運行FrontPage。單擊主菜單"文件"|"新建"|"網頁"菜單項。出現"新建"對話框,選擇"常規"選項卡頁中的"普通網頁",單擊"確定"按鈕,創建一個新網頁。
(2)? 單擊主菜單"插入"|"表單"|"表單",增加一個表單(form)。在表單中已有"提交"按鈕和"全部重寫"兩個按鈕。將光標移到提交按鈕前,鍵入回車,增加form垂直方向尺寸。
(3)? 右擊"提交"按鈕,單擊彈出快捷菜單中"表單域屬性"菜單項,出現"按鈕屬性"對話框,在"名稱(N)"編輯框健入按鈕名稱(Name屬性),"值/標簽(V)"編輯框中健入按鈕標題,選擇按鈕類型為"提交"。退出對話框。用同樣方法修改另一按鈕的標題為"全部重寫"。
(4)? 將光標移到第一行,單擊VS.Net菜單"插入"|"表單"|"復選框"菜單項,在第一行增加一個復選框。右擊復選框,單擊彈出的快捷菜單中"表單域屬性"菜單項,出現"復選框屬性"對話框,在"名稱(N)"編輯框健入"水果1",初始狀態為選中,關閉對話框,在復選框后鍵入字符:香蕉。用同樣方法增加另外兩個復選框:蘋果、桔子。
(5)? 用FrontPage創建的網頁文件如下:
<html>
<head>
<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta name="GENERATOR" content="Microsoft FrontPage 4.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<title>New Page 2</title>
</head>
<body>
<form method="POST" action="--WEBBOT-SELF--">
??<!--webbot bot="SaveResults" U-File="fpweb:///_private/form_results.txt"
? S-Format="TEXT/CSV" S-Label-Fields="TRUE" -->
? <p><input type="checkbox" name="水果1" value="香蕉">Banana</p>
? <p><input type="checkbox" name="水果2" value="蘋果" checked>Apple</p>
? <p><input type="checkbox" name="水果3" value="桔子" checked>Orange</p>
? <p><input type="submit" value="提交查詢內容" name="B1"><input type="reset" value="全部重寫" name="B2"></p>
</form>
</body>
</html>
9.3 ASP.Net技術基礎
上節用Html標記語言定義了一些標準的控件,例如編輯框控件,列表框控件,下拉列表框控件和按鈕等。但這些控件功能有限,如果要實現復雜的功能,程序員要編寫大量的代碼。程序員迫切需要一種設計服務器端動態網頁的可視化工具,能象使用C#語言設計Window應用程序一樣設計動態網頁,使用控件的屬性、事件和方法等面向對象的概念。
為了實現這個目的,引入ASP.Net服務器端控件概念。ASP.Net首先引入運行在服務端WebForm概念,代替表單(form)。在WebForm中可以放入多個服務器端控件,除了列表框、編輯框、按鈕等控件,還包括一些新的功能更加強大的控件,例如DataGrid,數據驗證控件等。所有這些控件,都是.Net框架類庫中相應的類,有自己的屬性、方法和事件,能夠完成復雜的功能,例如自動響應事件,支持數據綁定等。這些概念和編制Windows應用程序相應的概念基本相同。這些ASP.Net服務器端控件也使用Html語言標記。但由于瀏覽器并不能解釋這些服務器端控件的Html標記,因此并不傳送包含這些服務器端控件的網頁給瀏覽器解釋,而是由Web服務器負責翻譯包含這些服務器端控件的網頁為所有瀏覽器都能解釋的標準Html標記的網頁,翻譯后的網頁在瀏覽器端執行的代碼為所有瀏覽器都能解釋的標準Jscript腳本語言代碼,傳送給瀏覽器解釋或執行。這樣就極大地簡化了服務器端動態網頁的設計,也保證了生成的網頁的顯示效果和瀏覽器無關。使用ASP.Net技術創建的服務器端動態網頁,網頁文件的擴展名為.aspx。
本節首先介紹ASP.Net服務器端控件基本概念,然后介紹使用記事本編寫ASP.Net動態網頁的方法,最后介紹如何使用VS.Net編寫ASP.Net動態網頁。
9.3.1? HTML服務器端控件
ASP.Net中的HTML服務器端控件和標準的HTML控件有著對應關系,但功能更強大??梢栽诔绦蛑行薷腍TML服務器端控件的屬性,能夠在服務器端響應事件,支持數據綁定等。例如增加一個HTML服務器端控件編輯框用如下HTML語句:
<INPUT TYPE=”TEXT” ID=”Text1” MAXLENGTH=16 RUNAT=”SERVER”/>
和標準的HTML控件的區別是增加了屬性RUNAT="SERVER"。屬性ID是代表這個控件對象的唯一標志,和Windows應用程序中的控件屬性Name的意義是一樣的。HTML服務器端控件是為了方便原來學習HTML或ASP編寫Web應用程序的程序員而提供的。如果,你以前是Windows應用程序員,建議使用Web服務器端控件,這些控件不但功能更強大,而使用上更象Windows應用程序中的控件,因此學習更方便。因此這里就不介紹HTML服務器端控件了。
9.3.2? Web服務器端控件
在ASP.Net系統中,除了HTML服務器端控件外,還包括Web服務器端控件。同HTML服務器端控件一樣,這些控件可以在程序中修改服務器端控件的屬性,能夠在服務器端響應事件,支持數據綁定等。例如定義一個Web服務器端編輯框控件,方法如下:
<asp:TextBox id="textBox1" runat="server"/>
這里asp:TextBox表示這是一個Web服務器端編輯框控件,runat="server"表示運行在服務器端,屬性id是代表這個控件的唯一標志,相當于Windows應用程序中的控件屬性Name。服務器端控件不但功能更強大,而且和編制Windows應用程序中的控件使用方法基本一致,因此學習更方便。除了提供和標準HTML控件功能類似的服務器端控件外,還增加了一些新的服務器端控件,例如:DataGrid,數據驗證控件等。本書的所有Web應用程序例子都使用Web服務器端控件。
9.3.3? Web Form的事件處理
象Windows應用程序一樣,ASP.Net應用程序也采用事件驅動的概念,用戶對瀏覽器的各種操作都被看作事件,事件產生后,Web應用程序用事件處理函數響應事件。但ASP.Net的事件驅動模型和Windows應用程序的事件驅動模型有著本質上的區別。Web應用程序中的Web服務器端控件產生事件后,由于事件處理函數在Web服務器端,網頁的WebForm控件把事件通過網絡使用HTTP協議由瀏覽器傳到Web服務器,在Web服務器執行事件處理函數,把運行結果轉變為標準HTML標記語言標記的網頁,傳回瀏覽器。
在Web事件處理機制中,每一次Web應用程序響應事件都會使得網頁重新生成,即刷新網頁。在服務器完成對某一個網頁的處理操作并將它傳送至瀏覽器,隨即移除該網頁在服務器端的所有數據,包括Web應用程序在服務器端運行時生成的方法,對象,變量,也就是說,這些定義的對象和變量在服務器端已不存在了。當Web應用程序再一次響應事件時,運行在服務器端的Web應用程序又會重新生成這些方法,對象,變量。基于此原因,我們說網頁是無狀態的,即網頁變量與控件的數據并不會保留在服務器上。
我們增加事件處理函數時,應考慮網絡傳播的速度的影響,不能象Windows應用程序那樣,響應太多的事件。在網頁中,每個控件都有屬性AutoPostBack,其值為true,事件發生后才能自動調用事件處理函數,如果不希望響應該事件,應將該控件的屬性AutoPostBack設為false。
9.3.4? 記事本編寫ASP.Net動態網頁
ASP.Net中的服務器端控件也用HTML標記,但這些服務器端控件的HTML標記并不傳送給瀏覽器解釋,而是由Web服務器負責翻譯為所有瀏覽器都能解釋的標準HTML標記后,傳送給瀏覽器解釋。所有ASP.Net服務器端控件都要放到Web窗體(WebForm)中,Web窗體也由Web服務器負責解釋。下邊是一個簡單的使用Web服務器端控件的例子:
<%@ Page language="c#" %>
<html>
<head>
<title>這是我的第一個ASP.Net網頁</title>
</head>
<script language="c#" runat=server>
?? ?void Page_Load(Object src,EventArgs e)
?? ?{? if(Page.IsPostBack)//如果網頁是由于響應事件后刷新,不執行其后語句
Label1.Text="現在的時間是:"+DateTime.Now;
}
?? ?void EnterBtn_Click(Object src,EventArgs e)//按鈕單擊事件處理函數
?? ?{? Label1.Text="現在的時間是:"+DateTime.Now;}
</script>
<body>
? ?<form ?runat=server>
? ???<asp:Label id="Label1" font-size="14" font-bold="true" forecolor="red" runat=server>
現在的時間是:</asp:Label> <br>
???? <asp:button text="查看時間" Onclick="EnterBtn_Click" runat=server/>
? ?</form>
</body>
</html>
網頁文件第一條語句表示網頁中使用C#語言。<html>表示網頁文件的開始,</html>表示網頁文件的的結束,網頁的所有內容都應在這兩個標記之間。定義在標記<html>和</html>之間的內容被分為三部分,第一部分:<head>和</head>之間可以設定網頁的一些信息,<title>和</title>之間的文字顯示在瀏覽器的標題欄中。第二部分:<script language="c#" runat=server>和</script>標記之間可以定義網頁中使用的方法,變量或對象,language="c#"表示在此標記之間使用C#語言編制程序,runat=server表示在此標記之間定義的方法運行在Web服務器端,這里定義了兩個方法,方法Page_Load()是網頁每次被重新生成時調用的方法,包括第一次調用本網頁,單擊瀏覽器刷新按鈕,以及網頁響應事件后,前兩項使IsPostBack=false,后一項使IsPostBack=true,在此方法中可做一些初始化工作。語句if(Page.IsPostBack)表示如果網頁是由于響應事件后刷新,不執行其后語句。方法EnterBtn_Click()是"查看時間"按鈕的事件處理函數。第三部分:<body>和</body>之間是網頁在瀏覽器中顯示的內容。<form ?runat=server>和</form>標記定義Web窗體(WebForm),注意runat=server表示Web窗體由Web服務器解釋。在Web窗體中增加了兩個控件對象,第一個是Label控件,asp:Label表示本控件是Label控件,id相當Windows應用程序中控件的Name屬性,用來區分不同對象,runat=server表示此控件由Web服務器解釋,其余是設定屬性值,注意不同屬性用空格分隔。第二個控件是按鈕,請注意定義單擊事件處理函數的方法。
將網頁以文件名e9_3_4.aspx存入d:/asp文件夾,如果d:/asp文件夾已被設定為Web站點,可以在IE的地址欄輸入http://localhost/ e9_3_4.aspx,在瀏覽器中可以看到此網頁。在瀏覽器端看不到這些代碼,Web服務器已將ASP.Net網頁翻譯為標準的Html標記,傳遞給瀏覽器,單擊IE主菜單"查看"|"源代碼"菜單項,可以看到這些用標準HTML編制的網頁。
9.3.5? 用VS.Net創建ASP.Net動態網頁
用VS.Net實現上節的例子。具體步驟如下:
(1) 運行VS.Net,進入開始界面(圖1.2.2A),單擊"新建項目"按鈕,打開"新建項目"對話框(圖1.2.2B),在"項目類型(P) "列表框中選擇"Visual C#項目",在"模板(T) "列表框中選擇"ASP.Net Web應用程序",在"位置(L)"編輯框中鍵入:http://localhost/e9_3_5,http://localhost代表要建站點的宿主目錄,創建本Web應用程序項目的所有文件存入宿主目錄的文件夾e9_3_5中,點擊確定按鈕,生成一個空白窗體(WebForm1)。用戶可在窗體中放入其它服務器端控件。VS.Net自動建立了一個Web應用程序項目。
(2)放置一個Label控件到WebForm窗體中,該控件用來顯示一行文本。設置屬性text為"現在的時間是:",在屬性窗口中找到Font屬性,單擊Font屬性左邊的"+"號,在出現的子屬性中,可以修改Label控件中文本的字體和字號等屬性。編輯完成后,單擊變成"-"號的方框隱藏Font的子屬性。修改ForeColor屬性,可以修改Label中文本的顏色。
(3)放置一個Button控件到WebForm窗體,按鈕的Text屬性為"查看時間"。為"查看時間"按鈕增加單擊(Click)事件處理函數如下:
private void Button1_Click(object sender, System.EventArgs e)
{?? Label1.Text="現在的時間是:"+DateTime.Now;
}
(4)已存在Page_Load函數,在Page_Load事件處理函數中增加語句:
private void Page_Load(object sender, System.EventArgs e)
{?? Label1.Text="現在的時間是:"+DateTime.Now;
}
(5)?? 單擊工具欄中藍色箭頭按鈕,運行,看一下效果。也可用瀏覽器看一下,在瀏覽器地址欄輸入地址:http://localhost/e9_3_5/WebForm1.aspx。請仔細觀察,每一步驟VS.Net都為我們增加了什么語句。
9.3.6? Code Behind技術
Code Behind技術把用HTML標記語言標記的界面和用C#語言編寫的代碼放在不同文件中。這對于代碼的重復使用,程序的調試和維護都是十分方便的。特別是在團隊開發中,可以使不同人員編輯不同文件,極大地提高了效率。下面是使用Code Behind技術制作的網頁。
例子e9_3_6.aspx:這是網頁界面文件,其中不包括代碼,代碼在e9_3_6.aspx.cs文件中。語句<%@ Page Inherits="MyPage" src="e9_3_6.aspx.cs" %>中的src="e9_3_6.aspx.cs"表示網頁的所有C#語言代碼在文件e9_3_6.aspx.cs中,Inherits="MyPage"表示此網頁的基類。
<%@ Page Inherits="MyPage" src="e9_3_6.aspx.cs" %>
<html>
? <head>
??? <title>使用Code Behind的技術網頁</title>
? </head>
? <body>
??<form runat=server>
??? <asp:Label id="Label1" Text="" runat=server/>? <br>
??? <asp:button text="查看時間" Onclick="EnterBtn_Click" runat=server/>
? </form>
</body>
</html>
?????? 例子e9_3_6.aspx.cs:這個文件是e9_3_6.aspx網頁中使用的代碼。
using System;
using System.Web.UI;
using System.Web.UI.WebControls;
public class MyPage:Page
{
?? public Label Label1;
?? public Button Button1;
?? public void EnterBtn_Click(Object src,EventArgs e)//事件處理函數
?? {? Label1.Text="現在的時間是:"+DateTime.Now;
?? }
}
VS.Net也使用了Code Behind技術,當我們使用VS.Net創建了一個Web應用程序,將自動創建了兩個文件,ASP.Net網頁界面文件WebForm1.aspx和網頁中使用的代碼文件WebForm1.aspx.cs,請讀者仔細察看這兩個網頁,看是如何使用Code Behind技術。
9.3.7? Web應用目錄
一個網站可能包含多種服務,例如,遠程登錄服務Telnet、文件傳送服務FTP、電子郵件服務E-mail、電子公告板系統BBS、萬維網WWW(Web)、電子商務、IP電話等等。一般情況下,每種服務可能包含多個網頁及各種文件。用VS.Net開發,用解決方案(Solution)和項目(Project)來管理所有的網頁和文件。一種服務功能需要的所有網頁文件和其它文件組成一個Web項目,Web項目中的所有網頁文件和其它文件被保存到網站宿主目錄的子目錄中,該子目錄被稱作"Web應用目錄"。所有應用項目組成一個解決方案。
如果一個Web項目要拷貝到其它計算機中運行,首先要把Web項目所在的"Web應用目錄"拷貝到該計算機宿主目錄下。在控制面板中,雙擊"管理工具"圖標,再雙擊"Internet 服務管理器"圖標,出現對話框(圖9.1.12A)。右擊項目所在的目錄名,在快捷菜單中選擇屬性,出現如下對話框,單擊"創建",生成"Web應用目錄"后,網站能被瀏覽器訪問。
?
9.3.8? ASP.Net和HTML兼容
任何一個靜態網頁只要把其擴展名修改為aspx,在ASP.Net下仍可運行,運行效果和以前相同。見下例,它是一個普通的靜態網頁。
<html>
<body>
<h1>學生選課系統</h1>
??? <form method="POST" action="e9_3_7.htm">
????? 姓名:<input type="text" name="T1" size="20"><br>
????? 學號:<input type="password" name="T2" size="20"><br>
????? 課程:<select size="1" name="D1">
?????????????? <option selected>微積分</option>
?????????????? <option>代數與幾何</option>
?????????????? <option>模擬電路</option>
?????????????? <option>機械原理</option>
??????? ?????</select>
???????????? <input type="submit" value="提交" name="B1">
</form>
</body>
</html>
將網頁以文件名e9_3_7.aspx存入d:/asp文件夾,如果d:/asp文件夾已被設定為Web站點,可以在IE的地址欄輸入:http://localhost/ e9_3_7.aspx后,看到這個網頁。
ASP.Net的設計目標之一就是盡可能地保持和現有ASP頁面的語法及運行庫的兼容。希望將現有ASP頁面文件的擴展名改為.aspx,這些頁面仍可以在ASP.Net中運行。在大多數情況下該目標已經實現了,但一般要對某些基本代碼作出修改,因為ASP.Net已不再支持VBScript了,而且VB語言本身也發生了變化。
9.3.9? 網頁Html標記中使用C#語句
在網頁的HTML標記中,可以插入一些C#語句,具體用法見下例:
<% @ Page Language="C#"%>
<html>
? <body>
???? <center>
?????? <% for (int i=0;i<8;i++){ %>
??????? <font size="<%=i%>">這是我的第一個ASP.Net網頁</font><br>
??????? <%}%>
??? </center>
?</body>
</html>
這樣使用C#語句,使程序變得十分難懂,不是一個好的習慣,不建議使用。
習題
(1)?? 舉出一些靜態網頁、客戶端動態網頁和服務器端動態網頁的例子。
(2)?? 創建d:/geng為網站的虛擬目錄,請問如何訪問geng目錄中的網頁。
(3)?? 創建一個鏈接到新浪網站主頁的網頁。
(4)?? 創建一個網頁,顯示一幅圖片,用URL定位圖片文件位置。
(5)?? 配置自己的計算機的TCP/IP設置,請說出配置中的網關的意義,如何獲得網關IP。
(6)?? 如何使自己創建的網站和默認的網站并存,請寫出訪問自己網站的URL。
(7)?? 用記事本程序編寫一個靜態網頁,包括兩個單選按鈕和一個"提交"按鈕。
(8)?? 用FrontPage程序實現上題網頁。
(9)?? 用記事本程序編寫一個ASP.Net網頁,包括兩個按鈕,標題分別為"紅色"和"黑色",單擊按鈕,將使標簽控件字符顏色變為紅色或黑色。
(10)?? 用VS.Net程序實現上題網頁。
轉載于:https://www.cnblogs.com/Aha-Best/p/10931737.html
總結
以上是生活随笔為你收集整理的16第一章ASP.Net编程基础知识的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux command find
- 下一篇: 实验 5