




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、21世紀(jì)高等院校計(jì)算機(jī)科學(xué)規(guī)劃教材ASP.NET Web 程序設(shè)計(jì) 第一章 ASP.NET概述知識(shí)點(diǎn)了解Web工作的原理 區(qū)別ASP與ASP.NET 掌握.NET平臺(tái)的工作環(huán)境和構(gòu)成 了解ASP.NET程序的基本結(jié)構(gòu) 1.1 Web基礎(chǔ)知識(shí)HTTP協(xié)議HTTP請(qǐng)求是指從瀏覽器向Web服務(wù)器發(fā)出的搜索某個(gè)Web網(wǎng)頁(yè)的請(qǐng)求。當(dāng)Web服務(wù)器收到這個(gè)請(qǐng)求之后,就會(huì)按照請(qǐng)求的要求,找到相應(yīng)的網(wǎng)頁(yè)。如果可以找到這個(gè)網(wǎng)頁(yè),那么就把網(wǎng)頁(yè)的HTML代碼通過(guò)網(wǎng)絡(luò)傳回瀏覽器;如果沒(méi)有找到這個(gè)網(wǎng)頁(yè),就發(fā)送一個(gè)錯(cuò)誤信息給發(fā)出HTTP請(qǐng)求的瀏覽器。后面的這些操作稱為HTTP響應(yīng)。 1.1 Web基礎(chǔ)知識(shí)Web服務(wù)器 We
2、b是基于客戶-服務(wù)器的一種體系結(jié)構(gòu),一般用戶的計(jì)算機(jī)稱為客戶機(jī),用于提供服務(wù)的機(jī)器稱為服務(wù)器。在Web方式下客戶端軟件常用瀏覽器,客戶機(jī)向服務(wù)器發(fā)送請(qǐng)求,要求執(zhí)行某項(xiàng)任務(wù),而服務(wù)器執(zhí)行此項(xiàng)任務(wù),并向客戶機(jī)返回響應(yīng)。因此,Web體系結(jié)構(gòu)可以稱為瀏覽器-服務(wù)器結(jié)構(gòu)(B/S結(jié)構(gòu)) 1.1 Web基礎(chǔ)知識(shí)基于Web的數(shù)據(jù)庫(kù)應(yīng)用采用3層客戶-服務(wù)器結(jié)構(gòu),也稱為Brower/Server/Database Server結(jié)構(gòu)。第一層為瀏覽器,第二層為Web服務(wù)器,第三層為數(shù)據(jù)庫(kù)服務(wù)器。瀏覽器是用戶輸入數(shù)據(jù)和顯示結(jié)構(gòu)的交互界面,用戶在瀏覽器表單中輸入數(shù)據(jù),然后將表單中的數(shù)據(jù)提交并發(fā)送到Web服務(wù)器,Web服務(wù)
3、器應(yīng)用程序接受并處理用戶的數(shù)據(jù),并從數(shù)據(jù)庫(kù)中查詢用戶數(shù)據(jù)或把用戶數(shù)據(jù)錄入到數(shù)據(jù)庫(kù)。最后Web服務(wù)器把返回的結(jié)果插入HTML頁(yè)面,傳送到客戶端,在瀏覽器中顯示出來(lái)。 1.1 Web基礎(chǔ)知識(shí)靜態(tài)網(wǎng) 頁(yè)靜態(tài)網(wǎng)頁(yè)就是用純HTML代碼編寫(xiě)的網(wǎng)頁(yè)。這些網(wǎng)頁(yè)的代碼是用一些編輯器輸入的,或者是用一些網(wǎng)頁(yè)設(shè)計(jì)程序生成的,保存為.html或.htm文件的形式。由于這些網(wǎng)頁(yè)中沒(méi)有任何與用戶相關(guān)的部分,所以在設(shè)計(jì)完成之后,這類程序不會(huì)被服務(wù)器端執(zhí)行,所以無(wú)論是哪個(gè)用戶訪問(wèn)這個(gè)網(wǎng)頁(yè),在什么時(shí)候訪問(wèn)這個(gè)網(wǎng)頁(yè),以何種方式進(jìn)入這個(gè)網(wǎng)頁(yè),它的樣子都不會(huì)發(fā)生任何變化。采用靜態(tài)網(wǎng)頁(yè)會(huì)導(dǎo)致很大的局限性,如果希望為用戶顯示一些個(gè)性化的
4、信息,使用靜態(tài)網(wǎng)頁(yè)將無(wú)法達(dá)到這個(gè)目的。 1.1 Web基礎(chǔ)知識(shí)動(dòng)態(tài)網(wǎng) 頁(yè)動(dòng)態(tài)網(wǎng)頁(yè)的擴(kuò)展名一般為.asp或.aspx。在瀏覽這類網(wǎng)頁(yè)的時(shí)候,必須先在服務(wù)器端執(zhí)行程序,再將執(zhí)行結(jié)果下載到本地瀏覽器上。這類程序會(huì)被服務(wù)器端執(zhí)行,因執(zhí)行的條件不同,所產(chǎn)生的結(jié)果也會(huì)有所不同。 常見(jiàn)的服務(wù)器端編程技術(shù)有:CGI、PHP、ASP、JSP和ASP.NET。 1.2 ASP.NET工作原理 ASP與ASP.NET的區(qū)別效率ASP是一個(gè)腳本編程環(huán)境,只能用VBScript或者JavaScript這樣的非模塊化語(yǔ)言來(lái)編寫(xiě)。在ASP.NET中,所有的程序執(zhí)行都是經(jīng)過(guò)服務(wù)器編譯的,即把程序語(yǔ)句翻譯成機(jī)器可以執(zhí)行的二進(jìn)制
5、代碼,而這一過(guò)程是在程序執(zhí)行之前進(jìn)行的,并且它建立在.NET Framework之上的,可以使用Visual Basic、C+這樣的模塊化程序設(shè)計(jì)語(yǔ)言,在第一次執(zhí)行時(shí)進(jìn)行了編譯,之后的執(zhí)行不需要重新編譯就可以直接運(yùn)行,所以速度和效率都比ASP提高很多。 1.2 ASP.NET工作原理 ASP與ASP.NET的區(qū)別可重用 性在寫(xiě)ASP應(yīng)用程序的時(shí)候,ASP代碼和HTML混合在一起。只要有需要,就可以在任意的一個(gè)位置插入一段代碼來(lái)實(shí)現(xiàn)特定的功能。這種方法表面上看起來(lái)很方便,但在實(shí)際的工作中會(huì)產(chǎn)生大量繁瑣的頁(yè)面,很難讀懂,導(dǎo)致代碼維護(hù)很困難。雖然可以使用include指令盡量讓程序模塊化,但是仍然不
6、是一個(gè)最終徹底的解決方案。而ASP.NET則可以實(shí)現(xiàn)代碼和內(nèi)容的完全分離,使得前面提到的問(wèn)題迎刃而解 。1.2 ASP.NET工作原理 ASP與ASP.NET的區(qū)別代碼量ASP需要對(duì)所有的要實(shí)現(xiàn)的功能通過(guò)編寫(xiě)代碼來(lái)實(shí)現(xiàn)。在ASP.NET中,程序員會(huì)發(fā)現(xiàn)只要預(yù)先說(shuō)明,這樣的功能ASP.NET就可以自動(dòng)實(shí)現(xiàn)。所以相對(duì)來(lái)說(shuō),要實(shí)現(xiàn)同樣的功能,使用ASP.NET比使用ASP的代碼量要小得多。 1.2 ASP.NET工作原理 .NET框架對(duì)于.NET,微軟自己也沒(méi)有一個(gè)詳細(xì)確切的定義。但是可以這樣認(rèn)為:.NET是微軟公司要提供的一系列產(chǎn)品的總稱。具體說(shuō)來(lái),.NET由下面的四個(gè)部分組成:.NET戰(zhàn)略、.N
7、ET Framework、.NET企業(yè)服務(wù)器和.NET開(kāi)發(fā)工具。.NET Framework是.NET戰(zhàn)略的核心。.NET Framework分為以下幾個(gè)部分:MS中間語(yǔ)言、CLR、.NET Framework類庫(kù)、.NET語(yǔ)言、ASP.NET和Web服務(wù)。 1.2 ASP.NET工作原理 MS中間語(yǔ)言 在.NET Framework中使用高級(jí)語(yǔ)言(例如VB.NET、C#)編寫(xiě)的程序,需要在運(yùn)行前將其編譯成為中間語(yǔ)言(例如MS中間語(yǔ)言)。需要注意的是,中間語(yǔ)言并不是一種可以直接執(zhí)行的機(jī)器代碼。與高級(jí)語(yǔ)言編寫(xiě)的代碼相比,它的可讀性很差,但是進(jìn)行了一系列的優(yōu)化。 1.2 ASP.NET工作原理 C
8、LR(Common Language Runtime公共語(yǔ)言運(yùn)行庫(kù))用于執(zhí)行MS語(yǔ)言等中間語(yǔ)言,提供所有的核心服務(wù),比如:內(nèi)存管理、無(wú)用單元回收和安全性等。 CLR在.NET Framework中的位置十分重要,可以說(shuō)是.NET Framework的基礎(chǔ)。CLR用JIT(JustInTime)編譯器把中間語(yǔ)言代碼編譯成可以執(zhí)行的代碼,并對(duì)程序進(jìn)行最后的、與機(jī)器相匹配的優(yōu)化,使得程序可以在所在計(jì)算機(jī)上盡可能高效地運(yùn)行。 1.2 ASP.NET工作原理 .NET類庫(kù) .NET Framework類庫(kù)中包含了大量可以實(shí)現(xiàn)重要功能的代碼庫(kù)。用戶在編寫(xiě)程序的時(shí)候可以很方便地把這些庫(kù)調(diào)用到應(yīng)用程序中,實(shí)現(xiàn)
9、更加復(fù)雜的功能,而編寫(xiě)復(fù)雜功能的難度卻降低了不少。 .NET語(yǔ)言 .NET語(yǔ)言是指可以將使用其編寫(xiě)的代碼編譯成為MS中間語(yǔ)言的編程語(yǔ)言,常見(jiàn)的語(yǔ)言有VB.NET、C#和Jscript.NET等。 1.2 ASP.NET工作原理 ASP.NET設(shè)計(jì)目標(biāo)去除對(duì)腳本引擎的依賴性,實(shí)現(xiàn)網(wǎng)頁(yè)的安全編寫(xiě)和編譯。減少開(kāi)發(fā)Web應(yīng)用程序所需的代碼數(shù)量。使ASP.NET具有很好的靈活性,允許用戶添加自定義的功能,并擴(kuò)展/替代內(nèi)置的ASP.NET功能。簡(jiǎn)單而靈活的配置使部署Web應(yīng)用更加容易。使ASP.NET成為ASP邏輯上的一個(gè)升級(jí)版本,考慮到已有的ASP投資,因此ASP代碼可經(jīng)過(guò)較小的修改(如果需要的話)實(shí)現(xiàn)
10、在ASP.NET中的復(fù)用。在調(diào)試和編輯方面提供強(qiáng)大的工具支持。當(dāng)開(kāi)發(fā)ASP.NET網(wǎng)頁(yè)時(shí),用戶所使用的語(yǔ)言根據(jù)個(gè)人的情況而定。不管使用的是VB、C#還是Jscript.NET,都會(huì)擁有相同的功能。對(duì)于使用某種特定語(yǔ)言來(lái)說(shuō),ASP.NET沒(méi)有給出任何強(qiáng)加的限制。提供一個(gè)強(qiáng)大的身份確認(rèn)模型,以此來(lái)滿足現(xiàn)代電子商務(wù)應(yīng)用程序的要求。ASP.NET支持Windows Authentication、Forms Authentication和Microsoft Passport三種安全的核心模式。不要求額外的開(kāi)發(fā)工具。錯(cuò)誤是無(wú)可避免的,因此ASP.NET應(yīng)該盡可能地容忍錯(cuò)誤的存在。 1.3 ASP.NET運(yùn)
11、行環(huán)境 IIS安裝與配置 IIS(Internet Information Server 網(wǎng)絡(luò)信息服務(wù))是ASP.NET惟一可以使用的Web服務(wù)器,它通過(guò)使用超文本協(xié)議(HTTP)傳輸信息,并將信息加載到網(wǎng)站上進(jìn)行發(fā)布,同時(shí)也可以通過(guò)配置IIS提供文件傳輸協(xié)議(FTP)服務(wù)。 1.3 ASP.NET運(yùn)行環(huán)境 IIS安裝與配置 IIS的安裝安裝步驟(1)插入Windows XP安裝光盤,打開(kāi)控制面板,然后打開(kāi)其中的“添加/刪除程序”。(2)在“添加/刪除程序”窗口左邊單擊“添加/刪除Windows組建”。(3)稍等片刻系統(tǒng)會(huì)啟動(dòng)Windows組建向?qū)?,選中“Internet信息服務(wù)(IIS)”復(fù)
12、選項(xiàng),單擊“下一步”按鈕。(4)系統(tǒng)安裝成功,系統(tǒng)會(huì)自動(dòng)在系統(tǒng)盤新建網(wǎng)站目錄,默認(rèn)目錄為:C:Inetpubwwwroot。 1.3 ASP.NET運(yùn)行環(huán)境 IIS安裝與配置 IIS服務(wù)器配置 P7安裝完IIS服務(wù)器以后,接下來(lái)就是啟動(dòng)和配置IIS服務(wù)器。執(zhí)行“控制面板”/“管理工具”/“Internet 信息服務(wù)”命令,將出現(xiàn)IIS的窗口,在左邊的目錄樹(shù)上依次展開(kāi)各個(gè)節(jié)點(diǎn),就可以看到IIS服務(wù)器提供的Web服務(wù)“默認(rèn)網(wǎng)站”,實(shí)際目錄隨機(jī)器不同略有差異。1.3 ASP.NET運(yùn)行環(huán)境 IIS安裝與配置 虛擬目錄的功能與配置當(dāng)網(wǎng)站要從主目錄以外的其他目錄中進(jìn)行發(fā)布時(shí),就必須創(chuàng)建虛擬目錄,虛擬目錄
13、不包含在主目錄中,但在顯示給客戶瀏覽器時(shí)就像位于主目錄中一樣。虛擬目錄有一個(gè)別名,供Web瀏覽器訪問(wèn)此目錄。別名通常要比實(shí)際路徑名短,使用別名更安全,因?yàn)橛脩舨恢牢募欠裨诜?wù)器上,所以無(wú)法用這些信息來(lái)修改文件。如果虛擬目錄是在“Internet 服務(wù)管理器”中定義的,則別名與虛擬目錄相關(guān)聯(lián)。別名是客戶用于訪問(wèn)虛擬目錄中信息的子目錄名。如果管理員沒(méi)有指定虛擬目錄的別名,“Internet 服務(wù)管理器”將自動(dòng)生成別名。 1.3 ASP.NET運(yùn)行環(huán)境 IIS安裝與配置 打開(kāi)IIS服務(wù)器,可以看到IIS左右兩邊的文件夾有4種圖標(biāo) :Windows標(biāo)準(zhǔn)文件夾圖標(biāo),其意義是文件夾的實(shí)際目錄存在于We
14、b服務(wù)器的主目錄中。:表示虛擬目錄,通常包含腳本和_vti_bin文件等。:Web應(yīng)用圖標(biāo),也是虛擬目錄,但可以轉(zhuǎn)換為物理目錄。:表示它們是具體的文件,只出現(xiàn)在IIS服務(wù)器右邊的文件中。 1.3 ASP.NET運(yùn)行環(huán)境 IIS安裝與配置 創(chuàng)建虛擬目錄有兩種方法 方法一:(1)在站點(diǎn)右擊,在彈出的快捷菜單中選擇“新建-虛擬目錄”,將彈出新建“虛擬目錄創(chuàng)建向?qū)А睂?duì)話框,并單擊“下一步”按鈕。(2)設(shè)置虛擬目錄名稱,單擊“下一步”按鈕。(3)在“目錄”文本框中輸入文件的實(shí)際位置,也可以單擊“瀏覽”按鈕進(jìn)行選擇,單擊“下一步”按鈕。(4)使用默認(rèn)讀寫(xiě)設(shè)置,完成創(chuàng)建 1.3 ASP.NET運(yùn)行環(huán)境 II
15、S安裝與配置 創(chuàng)建虛擬目錄有兩種方法 方法二:在“默認(rèn)網(wǎng)站屬性”對(duì)話框中,切換到“主目錄”選項(xiàng)卡,在其下半部可以設(shè)置整個(gè)站點(diǎn)的虛擬路徑。單擊“創(chuàng)建”按鈕,為應(yīng)用程序配置虛擬路徑。創(chuàng)建的同時(shí),“創(chuàng)建”按鈕變?yōu)椤皠h除”按鈕,單擊“刪除”按鈕可以刪除才創(chuàng)建的虛擬目錄。 1.3 ASP.NET運(yùn)行環(huán)境 ASP.NET安裝配置運(yùn)行環(huán)境 P11硬件要求 軟件要求ASP.NET的安裝P121.3 ASP.NET運(yùn)行環(huán)境 Visual Studio.NET界面介紹 創(chuàng)建新項(xiàng)目1.3 ASP.NET運(yùn)行環(huán)境 Visual Studio.NET界面介紹 界面設(shè)置1.3 ASP.NET運(yùn)行環(huán)境 Visual Stu
16、dio.NET界面介紹 界面設(shè)置客戶區(qū)(設(shè)計(jì)和調(diào)試窗口) 1.3 ASP.NET運(yùn)行環(huán)境 Visual Studio.NET界面介紹 界面設(shè)置控制浮動(dòng)頁(yè)面解決方案資源管理器 1.3 ASP.NET運(yùn)行環(huán)境 Visual Studio.NET界面介紹 界面設(shè)置工具箱:以“”為標(biāo)志 1.3 ASP.NET運(yùn)行環(huán)境 腳本語(yǔ)言 Visual Studio.NET提供多種語(yǔ)言的支持,如VB.NET、C#、C+.NET等。VB.NET是經(jīng)過(guò)重新設(shè)計(jì)的語(yǔ)言,它對(duì)傳統(tǒng)的Visual Basic語(yǔ)言進(jìn)行了改進(jìn),甚至打破了與現(xiàn)有VB程序的兼容性,功能比Visual Basic更強(qiáng)大,更易用。 C#就像VB.NET
17、一樣,是種適用于創(chuàng)建下一代商業(yè)應(yīng)用程序的理想而簡(jiǎn)潔的語(yǔ)言。采用C#來(lái)進(jìn)行ASP.NET編程,使ASP.NET能勝任各種大型的網(wǎng)絡(luò)應(yīng)用。 1.4一個(gè)簡(jiǎn)單的用戶登錄程序 【例1-1】用戶登錄示例 在 Visual Studio.NET中創(chuàng)建一個(gè)新的項(xiàng)目WebApplication1.aspx,在設(shè)計(jì)窗口由兩個(gè)文本框和一個(gè)按鈕組成,在WebApplication1.aspx.cs中寫(xiě)下如下代碼 private void Button1_Click(object sender, System.EventArgs e)if (TextBox1.Text=wang) & (TextBox2.Text=12
18、3456)Response.Write(TextBox1.Text+,你已成功登錄!);elseResponse.Write(用戶名或密碼有誤);1.4一個(gè)簡(jiǎn)單的用戶登錄程序 從該程序中可以看出,ASP.NET應(yīng)用程序由界面和程序代碼兩大部分組成。程序根據(jù)用戶名、密碼的正確與否顯示不同的界面,實(shí)現(xiàn)動(dòng)態(tài)顯示的特點(diǎn)。界面部分:主要由工具箱中的HTML控件和Web控件自動(dòng)形成代碼,當(dāng)然也可以通過(guò)在HTML窗口寫(xiě)入HTML標(biāo)記和控件標(biāo)記進(jìn)行頁(yè)面設(shè)計(jì)。程序代碼部分:使用C#作為開(kāi)發(fā)語(yǔ)言,由點(diǎn)擊“提交”按鈕產(chǎn)生不同的結(jié)果,是典型的事件驅(qū)動(dòng)編程方法。在程序代碼中出現(xiàn)的Response.Write是ASP.N
19、ET的服務(wù)器對(duì)象Response的一種方法,用于將服務(wù)器端的信息送到瀏覽器端。1.4一個(gè)簡(jiǎn)單的用戶登錄程序 1.5 實(shí)戰(zhàn)檢驗(yàn)理論鞏固說(shuō)明ASP.NET開(kāi)發(fā)Web應(yīng)用程序的特點(diǎn)。說(shuō)明ASP.NE工作原理。說(shuō)明.NET框架的構(gòu)成情況。說(shuō)明配置IIS和設(shè)置虛擬路徑的方法。 上機(jī)實(shí)戰(zhàn)實(shí)際配置一個(gè)IIS,建立虛擬目錄并運(yùn)行成功。運(yùn)行Visual Studio.NET,熟悉界面,按照書(shū)上1.4節(jié)所講,實(shí)際運(yùn)行如例1-1,查看測(cè)試是否成功。第二章 C#基礎(chǔ)知識(shí) 知識(shí)點(diǎn)C#數(shù)據(jù)類型C#語(yǔ)法 2.1 C#設(shè)計(jì)理念自動(dòng)資源回收機(jī)制C#具有自動(dòng)資源回收(Automatic garbage collection)機(jī)制
20、,自動(dòng)將不再被使用的內(nèi)存回收,并交給操作系統(tǒng)重新配置。因此使用C編寫(xiě)的程序不會(huì)出現(xiàn)內(nèi)存泄漏(Memory Leak)的現(xiàn)象。 例外錯(cuò)誤處理機(jī)制C結(jié)構(gòu)化的例外錯(cuò)誤處理提供一致性的錯(cuò)誤處理機(jī)制。 2.2 面向?qū)ο蟪绦蝾愔饕扇糠纸M成:屬性:屬性存儲(chǔ)對(duì)象的信息。主要用來(lái)改進(jìn)public成員變量的存取,讓用戶能夠在外部組件存取內(nèi)部數(shù)據(jù)時(shí),多提供一層邏輯判斷。方法:提供給外部可訪問(wèn)的接口函數(shù),使之可以利用對(duì)象執(zhí)行某種操作。事件:事件能夠告知應(yīng)用程序(請(qǐng)指明是告知)發(fā)生了什么事情。C#有內(nèi)置的語(yǔ)法和保留字可用來(lái)定義與處理事件,可以動(dòng)態(tài)的鏈接和刪除事件處理函數(shù)。此外,一個(gè)事件可以鏈接幾個(gè)事件處理函數(shù),而一
21、個(gè)事件處理還屬能夠同時(shí)處理多個(gè)事件。 2.3 C#數(shù)據(jù)類型在C中主要有兩大類數(shù)據(jù)類型:值類型引用類型 2.3.1 值類型值類型包括:簡(jiǎn)單類型枚舉類型結(jié)構(gòu)類型值類型的分類值類型簡(jiǎn)單類型整型sbyte;byte;short;ushort;int;uint;long;ulong;char浮點(diǎn)類型float;double小數(shù)類型decimal布爾類型bool字符型char枚舉類型enum結(jié)構(gòu)類型簡(jiǎn)單類型整型C#中支持九種整型:sbyte、byte、short、ushort、int、uint、long、ulong和char。 類型含義數(shù)值范圍sbyte有符號(hào)的8位整數(shù)-128 127byte無(wú)符號(hào)的8位
22、整數(shù)0255short有符號(hào)的16位整數(shù)-32768 32767ushort無(wú)符號(hào)的16位整數(shù)0 32767int有符號(hào)的32位整數(shù)-2147483648 2147483648uint無(wú)符號(hào)的32位整數(shù)0 4294967295long有符號(hào)的64位整數(shù)-9223372036854775808 9223372036854775808ulong無(wú)符號(hào)的64位整數(shù)0 18446744073709551615char無(wú)符號(hào)的16位整數(shù)065535字符型字符型,也就是char類型,是一種特殊類型的整型,這是因?yàn)閏har類型與其他整數(shù)類型相比有以下兩點(diǎn)不同之處:字符型實(shí)際是單個(gè)的Unicode類型,字長(zhǎng)為
23、16bits,可以通過(guò)三種方式為其賦值:char chrTmp=“A”;char chrTmp =“x0065”; 十六進(jìn)制char chrTmp =“u0065 ; unicode表示法字符型無(wú)法隱式地轉(zhuǎn)換成其它任何類型。例如對(duì)于sbyte,byte和ushort這樣能完全使用char類型代表其值的類型,隱式轉(zhuǎn)換也不存在。但C中支持顯式轉(zhuǎn)換char型,如:char chrTmp = (char)100;byte btTmp = (byte)A; 字符型中有下列轉(zhuǎn)義符,見(jiàn)表。轉(zhuǎn)移符含義表示單引號(hào)”表示雙引號(hào)表示反斜杠0表示空字符a表示感嘆號(hào)b表示退格f表示換頁(yè)n表示換行r表示回車t表示水平ta
24、bv表示垂直tab浮點(diǎn)型類型取值范圍說(shuō)明float1.5*10-453.4*1038單精度浮點(diǎn)數(shù),精確到小數(shù)點(diǎn)后面7位double5.0*10-3241.7* 10308雙精度浮點(diǎn)數(shù),精確到小數(shù)點(diǎn)后面15位或16位如果二元操作中的其中一個(gè)操作數(shù)為浮點(diǎn)類型,那么另外一個(gè)操作數(shù)是整型或浮點(diǎn)類型,運(yùn)算規(guī)則如下:如果一操作數(shù)是整型,則該操作數(shù)被轉(zhuǎn)換為另一操作數(shù)的浮點(diǎn)數(shù)類型;如果一操作數(shù)為double類型,則另一操作數(shù)被轉(zhuǎn)換成double類型,運(yùn)算以double類型的精度和取值范圍進(jìn)行,并且所得結(jié)果也為double類型;其它情況下,運(yùn)算至少將以float類型的取值范圍和精度進(jìn)行,并且所得結(jié)果也為floa
25、t型。 小數(shù)類型小數(shù)類型數(shù)值范圍從1.0*10-287.9* 1028,精確到小數(shù)點(diǎn)后面28位。對(duì)于小數(shù)類型的運(yùn)算規(guī)則如下:如果一操作數(shù)是小數(shù)類型,另一操作數(shù)是整型或小數(shù)類型,則整型在運(yùn)算前被轉(zhuǎn)化為小數(shù)類型參與運(yùn)算。如果一個(gè)小數(shù)類型的算術(shù)運(yùn)算產(chǎn)生了一個(gè)對(duì)于小數(shù)類型的格式來(lái)說(shuō)太小的值,運(yùn)算結(jié)果將會(huì)變成0。如果一個(gè)小數(shù)類型的算術(shù)運(yùn)算產(chǎn)生了一個(gè)對(duì)于小數(shù)類型的格式來(lái)說(shuō)太大的值,就會(huì)觸發(fā)溢出錯(cuò)誤。 布爾型布爾型僅有true或false兩個(gè)值,分別代表邏輯真和邏輯假。沒(méi)有標(biāo)準(zhǔn)能實(shí)現(xiàn)布爾類型和其他類型的轉(zhuǎn)換。 枚舉類型枚舉類型是由一組特定的常量構(gòu)成一種數(shù)據(jù)結(jié)構(gòu)。所使用的類型只能是long、int、short
26、、byte。默認(rèn)類型是int。默認(rèn)第一個(gè)元素的值是0,每一個(gè)連續(xù)的元素按1遞增。也可以給元素直接賦值。 結(jié)構(gòu)類型使用結(jié)構(gòu)的主要目的是創(chuàng)建小型的類,可以用來(lái)申明構(gòu)造函數(shù)、常熟、字段、方法、屬性、索引、操作符和嵌套類型。 各種數(shù)據(jù)類型的默認(rèn)值 類型默認(rèn)值sbyte、byte、short、ushort、int、uint、long、ulong0charx0000float0.0Fdouble0.0Ddecimal0.0Mboolfalse枚舉類型0結(jié)構(gòu)類型把所有值類型的域都設(shè)置為它們各自的默認(rèn)值,把所有的引用類型的域賦為空2.3.2 引用類型引用類型包括:類類型接口類型代表類型數(shù)組類型 類類型(cla
27、ss)類類型定義了一種數(shù)據(jù)結(jié)構(gòu),這個(gè)數(shù)據(jù)結(jié)構(gòu)中包含了數(shù)據(jù)成員包含數(shù)據(jù)、屬性和事件等;函數(shù)成員包含方法、索引、操作符、構(gòu)造函數(shù)和析構(gòu)函數(shù);以及嵌套類,并支持繼承。在類中定義的數(shù)據(jù)成員、函數(shù)成員等部分可以被外部調(diào)用,但部分不能被外部存取,這是由所使用的成員存取修改器來(lái)決定的。在C中由public、private、protected和internal式中存取修改器 。Public:表示任何外部的類都可以不受限制的存取類。Private:表示只限定此類內(nèi)部使用。Protected:表示除了讓本身的類使用外,任何繼承自此類的子類也可以存取。Internal:僅存在于C中,表示在同一個(gè)應(yīng)用程序或庫(kù)中的所有
28、類都可以存取。 對(duì)象類型(object)對(duì)象類型是其他所有類型的基礎(chǔ)類型。在C中每一種類型都直接或間接的繼承自System.Object。 字符串類型(string)與C+相比,C#增強(qiáng)了對(duì)字符串的各種操作。字符串類型是直接從System.Object中繼承而來(lái)的密封類,而且是final類,不能從它再派生類。String類型的值可以寫(xiě)成字符串文字的形式。賦值方式如下:string strTmp = “this is a book.”; 接口類型(interface)接口與類的最大差異在于一個(gè)接口聲明一個(gè)只有抽象成員的引用類型,接口僅僅存在方法標(biāo)志,但沒(méi)有執(zhí)行代碼。當(dāng)定義一個(gè)類時(shí),如果類從接口派
29、生,可以派生自多重接口;但是如果類從類派生,就只能從一個(gè)類派生。聲明方法如例:interface interfaceTmp void function1(); 代表元類型(delegate)代表元類型其實(shí)就是面向?qū)ο蟮暮瘮?shù)指針。因?yàn)樵贑中沒(méi)有指針,所有的東西都是對(duì)象,那么為了能在C中提供C+中原有的函數(shù)指針功能,特提供了代表元類型,它是一種靜態(tài)的方法或者對(duì)象實(shí)例,引用該對(duì)象的實(shí)例方法。C/C+中的指針只能訪問(wèn)靜態(tài)的函數(shù),代表元既能訪問(wèn)靜態(tài)的方法,也能訪問(wèn)實(shí)例的方法。若要使用代表元類型,需進(jìn)行如下幾個(gè)步驟:首先,定義delegate類型的函數(shù)簽名,語(yǔ)法如下例所示:public delegate
30、string FunPointer(string strTmp );delegate是一個(gè)保留字,聲明了一個(gè)函數(shù)的指針類型。其次,定義與delegate類型函數(shù)簽名相同的函數(shù),如:public static string Fun1(string strTmp)return “hello ”+strTmp;只要傳入?yún)?shù)的類型、個(gè)數(shù)、順序和delegate類型的函數(shù)相同,則參數(shù)名稱可以是不同的。然后,定義接收delegate類型參數(shù)的處理函數(shù),如:public static void Method(FunPointer FunPointer1)Console.WriteLine(FunPointe
31、r1(“Mary”);最后,將上面的程序代碼鏈接起來(lái)運(yùn)行:FunPointer fp1=new FunPointer(Fun1);可以直接調(diào)用Method函數(shù),并傳入FunPointer變量當(dāng)作傳入?yún)?shù),如:Method(fp1); 數(shù)組類型(Array)數(shù)組類型繼承自System.Array,而System.Array繼承自System.Object。數(shù)組是包含一串相同類型的類型數(shù)據(jù)的集合,每個(gè)數(shù)組變量稱作數(shù)組元素,這種類型也稱作數(shù)組元素類型。數(shù)組的元素類型可以是任何類型,包括數(shù)組類型。所有數(shù)組的元素值通過(guò)數(shù)組名和下標(biāo)來(lái)訪問(wèn),數(shù)組的位數(shù)決定了相關(guān)數(shù)組元素的下標(biāo)數(shù),只有一個(gè)下標(biāo)的數(shù)組稱為一維數(shù)
32、組,多于一個(gè)下標(biāo)的數(shù)組稱為多維數(shù)組。 聲明多維數(shù)組的方式如下:int a; /int型的一維數(shù)組int, a; /int型的二維數(shù)組int, a; /int型的三維數(shù)組inta; /int型的數(shù)組的數(shù)組inta; /int型的數(shù)組的數(shù)組的數(shù)組2.4 C#語(yǔ)法C#語(yǔ)句具有如下幾個(gè)特點(diǎn):C#是區(qū)別大小。每一句都以分號(hào)結(jié)束。多個(gè)語(yǔ)句通過(guò)分號(hào)可以寫(xiě)在一行,不過(guò)不推薦,因?yàn)椴磺逦?.4.1聲明變量在C中聲明變量時(shí),要注意以下幾點(diǎn):變量的名稱需以文字或下劃線“_”開(kāi)始。變量中不能使用空格。不能使用保留字,如char,int等。聲明變量的語(yǔ)法是:變量類型 變量名稱=初始值。 2.4.2C#基本語(yǔ)法運(yùn)算符算
33、術(shù)運(yùn)算符+ - 加 - - 減 * - 乘 / - 除 % - 求余(即整除后的余數(shù))邏輯運(yùn)算符& - 按位與 | - 按位或 - 按位異或 - 取反 n - 右移n位 或 = 或 0) a = -1; else Console.WriteLine(a); switch語(yǔ)句格式:switch(表達(dá)式) case 常量表達(dá)式:嵌入語(yǔ)句 default: 嵌入語(yǔ)句switch 用于多個(gè)可能的值,如果有一個(gè)匹配,則執(zhí)行相應(yīng)代碼,每句之后必須有break語(yǔ)句中斷后面語(yǔ)句的執(zhí)行。 例如:switch(a) case 1: Console.WriteLine(1); break;case 2: Conso
34、le.WriteLine(2); break; case 3: Console.WriteLine(3); break; default: Console.WriteLine(default); 循環(huán)語(yǔ)句while 循環(huán)格式:while(布爾表達(dá)式) 嵌入語(yǔ)句例如:int a=1; while (a20) a+=a; do-while 循環(huán) 格式:do 嵌入語(yǔ)句 while(布爾表達(dá)式) 例如:int a=1; do a+=a; while(a20); do while循環(huán)與while循環(huán)類似,區(qū)別在于do-while循環(huán)至少執(zhí)行一次循環(huán)體。for 循環(huán) 格式:for(初始化;布爾表達(dá)式;重復(fù)
35、語(yǔ)句)嵌入語(yǔ)句例如:int j=1; for(int i=0;i100;i+) j+; Console.WriteLine(i = +i+j = +j); foreach語(yǔ)句foreach語(yǔ)句列舉出聚集的元素,并為每一個(gè)聚集的元素執(zhí)行一條嵌入語(yǔ)句。格式:foreach(類型 標(biāo)識(shí) in 表達(dá)式)嵌入語(yǔ)句循環(huán)變量由類型和標(biāo)識(shí)符聲明,且表達(dá)式與收集相對(duì)應(yīng)。循環(huán)變量代表循環(huán)正在為之運(yùn)行的收集元素。例如:using System;public class foreachapppublic static void Main() int odd=0,even=0; int arr=new int 0,1,
36、2,5,7,8,11; foreach (int i in arr) if (i%2=0)even+;else odd+; 2.4.3定義函數(shù)語(yǔ)法:static void 函數(shù)名稱(類型1 傳入?yún)?shù)1,類型2 傳入?yún)?shù)2,類型n 傳入?yún)?shù)n) 2.5 實(shí)戰(zhàn)檢驗(yàn)理論鞏固請(qǐng)說(shuō)明C#中有幾種數(shù)據(jù)類型。請(qǐng)說(shuō)明C#中支持幾種整型數(shù)據(jù)類型。請(qǐng)說(shuō)明C#的語(yǔ)法特點(diǎn)。請(qǐng)說(shuō)明C#中如何定義函數(shù)。上機(jī)實(shí)戰(zhàn)請(qǐng)用條件語(yǔ)句ifelse寫(xiě)段小程序。請(qǐng)用循環(huán)語(yǔ)句while,dowhile,foreach各寫(xiě)段小程序。請(qǐng)定義一個(gè)函數(shù),完成如下功能:輸入2個(gè)字符;在屏幕上打印所輸入的字符。第三章 ASP.NET組件對(duì)象 知識(shí)點(diǎn)掌
37、握ASP.NET各內(nèi)置組件對(duì)象的常用屬性和方法掌握Session、Application對(duì)象與其他常用對(duì)象的區(qū)別,以及它們的適用場(chǎng)合能靈活運(yùn)用各種組件對(duì)象完成程序設(shè)計(jì) 3.1 Page類Page類作為各個(gè)頁(yè)面的派生基類,提供了許多對(duì)象和方法來(lái)處理頁(yè)面的請(qǐng)求。屬性/對(duì)象功能描述Application為當(dāng)前Web請(qǐng)求獲取Application對(duì)象Cache獲取與該頁(yè)駐留的應(yīng)用程序關(guān)聯(lián)的Cache對(duì)象Controls獲取ControlCollection對(duì)象,該對(duì)象表示UI層次結(jié)構(gòu)中指定服務(wù)器控件的子控件ErrorPage獲取或設(shè)置錯(cuò)誤頁(yè),當(dāng)發(fā)生未處理的頁(yè)異常的事件時(shí)請(qǐng)求瀏覽器將被重定向到該頁(yè)IsP
38、ostback返回網(wǎng)頁(yè)加載情況。為True表示網(wǎng)頁(yè)是由于客戶端返回?cái)?shù)據(jù)而重新被加載,為False表示網(wǎng)頁(yè)被第一次加載IsValid獲取一個(gè)值,該值指示頁(yè)驗(yàn)證是否成功Request獲取請(qǐng)求頁(yè)的HttpRequest對(duì)象Response獲取請(qǐng)求頁(yè)的HttpResponse對(duì)象Server獲取Server對(duì)象,它是HttpServerUtility類的實(shí)例Session獲取ASP.NET提供的當(dāng)前的Session對(duì)象Validators獲取請(qǐng)求的頁(yè)上包含的全部驗(yàn)證控件的集合Visible獲取或設(shè)置指示是否呈現(xiàn)Page對(duì)象值3.1 Page類IsPostBack屬性 IsPostBack屬性用于判斷是
39、否是響應(yīng)加載頁(yè)面,當(dāng)使用者第一次瀏覽這個(gè)網(wǎng)頁(yè)時(shí)Page.IsPostBack 會(huì)傳回false,不是第一次瀏覽這個(gè)網(wǎng)頁(yè)時(shí)就傳回true;通常在頁(yè)面初始化(即Page.!IsPostBack)綁定數(shù)據(jù)或者放入一些共用變量,此外還可以用于cookie與session 使用時(shí)的判斷,Datagrid的數(shù)據(jù)綁等,page_load 事件中也可以使用這個(gè)屬性來(lái)避免做一些重復(fù)的動(dòng)作。 (例3-1)3.2 Request對(duì)象 Request對(duì)象實(shí)際上操作System.Web命名空間中的類HttpRequest。當(dāng)客戶發(fā)出請(qǐng)求執(zhí)行ASP.NET程序時(shí),CLR會(huì)將客戶端的請(qǐng)求信息包裝在Request對(duì)象中。這些
40、請(qǐng)求信息包括請(qǐng)求報(bào)頭(Header)、客戶端的基本信息(如瀏覽器類型、瀏覽器版本號(hào)、用戶所用的語(yǔ)言以及編碼方式等)、請(qǐng)求方法(如Post、GET)、參數(shù)名、參數(shù)值等。所以Request對(duì)象也被稱為請(qǐng)求對(duì)象。 3.2 Request對(duì)象屬性描述ApplicationPath獲取被請(qǐng)求頁(yè)面的目錄信息(虛擬應(yīng)用程序根路徑)Brower獲取正在請(qǐng)求的客戶端的瀏覽器功能的信息ClientCertifacate獲取當(dāng)前請(qǐng)求的客戶端安全證書(shū)Cookies獲取客戶端Cookies集合Form獲取窗體變量集合Headers返回有關(guān)HTTP報(bào)頭集合IsAuthenticated獲取一個(gè)值,該值指示是否驗(yàn)證了用戶I
41、sSecureConnection獲取一個(gè)值,該值指示HTTP連接是否使用加密Item獲取Cookies、Form、等集合中指定對(duì)象Params獲取Querystring、Form項(xiàng)的組合集合Path獲取當(dāng)前請(qǐng)求的虛擬地址Querystring獲取HTTP查詢字符串變量集合ServerVariables獲取Web服務(wù)器變量集合UserHostAddress獲取遠(yuǎn)程客戶端的IP主機(jī)地址URL獲取瀏覽器提交的完整的URL地址3.2 Request對(duì)象方法描述BinaryRead執(zhí)行對(duì)當(dāng)前輸入流進(jìn)行指定字節(jié)數(shù)的二進(jìn)制讀取GetType獲取當(dāng)前實(shí)例的TypeMapPath為當(dāng)前請(qǐng)求將請(qǐng)求的URL中的虛
42、擬路徑映射到服務(wù)器上的實(shí)際路徑Request對(duì)象的調(diào)用方法是:Request.Collection“Varible”,其中,Collection包括Querystring、Form、Cookies、ServerVariables四種集合。 3.2 Request對(duì)象Querystring屬性請(qǐng)求字符串Web瀏覽器向Web服務(wù)器傳送信息的一種方式,Querystring屬性的信息來(lái)自于發(fā)出請(qǐng)求的URL地址中“?”后面的數(shù)據(jù),這些數(shù)據(jù)稱為“URL附加信息”。例如http:/localhost/Queststringtest/webform1.aspx?name=wang”,在該URL中,name=
43、wang是瀏覽器向Web服務(wù)器傳送的信息,獲取這個(gè)信息的語(yǔ)句是:Request.Querystring“name”。 Querystring主要用于收集HTTP協(xié)議中的GET請(qǐng)求發(fā)送的數(shù)據(jù),如果在一個(gè)請(qǐng)求事件中被請(qǐng)求的程序URL地址出現(xiàn)了“?”后的數(shù)據(jù),則表示此次請(qǐng)求方式為GET。GET方法是HTTP中默認(rèn)請(qǐng)求方法最常用的超文本鏈接便是通過(guò)GET方法發(fā)送請(qǐng)求。如:則表示顯示ID為111的文章。當(dāng)有多個(gè)信息時(shí),信息間用“&”連接。 3.2 Request對(duì)象Form屬性 Form屬性是表示表單變量的集合,通過(guò)Request對(duì)象的Form屬性可以讀取瀏覽器發(fā)送到服務(wù)器的數(shù)據(jù)。GET方法是將傳遞的數(shù)
44、據(jù)追加至URL中。URL地址長(zhǎng)度是有限制的,因此使用GET方法所能傳遞的數(shù)據(jù)也有限。一般地,GFT方法能夠傳遞256字節(jié)的數(shù)據(jù)。在多數(shù)情況下,使用GET方法傳遞的數(shù)據(jù)長(zhǎng)度是遠(yuǎn)遠(yuǎn)不夠的,這時(shí)就需要使用HTTP的另外種請(qǐng)求方式POST,POST能傳遞的數(shù)據(jù)最大可達(dá)到2MB。POST請(qǐng)求必須由Form發(fā)出(使用sock方法直接寫(xiě)入HTTP報(bào)頭的方法除外)。 (例3-2)1.2 ASP.NET工作原理 Brower、UserHostAddress等屬性代碼量這些屬性可以獲取客戶端瀏覽器的資料,以及主機(jī)的IP地址等信息。(例3-3) 3.3 Response對(duì)象 Response對(duì)象處理來(lái)自服務(wù)器端所創(chuàng)
45、建的并發(fā)回給客戶端的信息。它與Request對(duì)象實(shí)現(xiàn)了瀏覽器和服務(wù)器的交互。Response對(duì)象實(shí)際上操作System.Web命名空間中的HTTPResponse對(duì)象的實(shí)例,HTTPResponse類封裝來(lái)自ASP.NET操作的HTTP響應(yīng)信息。 屬性描述Buffer獲取或設(shè)置一個(gè)值,該值指出是否緩沖輸出,并在完成整個(gè)響應(yīng)時(shí)間后將其發(fā)送BufferOutput獲取或設(shè)置一個(gè)值,該值指出是否緩沖輸出,并在完成處理整個(gè)頁(yè)之后將其發(fā)送Cookies獲取響應(yīng)cookies集合Cache獲取Web頁(yè)的緩存策略(過(guò)期時(shí)間、保密性、變化子句)Expires獲取或設(shè)置在瀏覽器上緩存的頁(yè)過(guò)期之前的分鐘數(shù)。如果用
46、戶在頁(yè)過(guò)期之前返回同一頁(yè),則顯示緩存的版本ExpiresAbsolute設(shè)定了頁(yè)面在瀏覽器Cache中失效的具體時(shí)間。Output啟用到輸出HTTP響應(yīng)流的文本輸出OutputStream啟用到輸出Http內(nèi)容主體的二進(jìn)制輸出方法描述BinaryWrite將一個(gè)二進(jìn)制字符串寫(xiě)入HTTP輸出流Clear清除緩沖區(qū)流中的所有內(nèi)容輸出,但此方法只刪除Response顯示輸出信息,不刪除Response頭信息Close關(guān)閉客戶端的聯(lián)機(jī)End停止當(dāng)前程序的處理并返回結(jié)果,剩下的文件內(nèi)容是沒(méi)有處理的Flush向客戶端發(fā)送當(dāng)前所有緩沖的輸出Redirect將客戶端重定向到新的URLWrite將信息寫(xiě)入HTT
47、P輸出內(nèi)容流WriteFile將指定的文件直接寫(xiě)入HTTP內(nèi)容輸出流3.3 Response對(duì)象Buffer屬性 Response. Buffer=flag,Buffer屬性表示是否對(duì)頁(yè)面輸出進(jìn)行緩沖。如有緩沖,服務(wù)器在當(dāng)前處理的所有頁(yè)面上的語(yǔ)句被處理之前不將Response送往客戶端,除非有flush或end方法被調(diào)用。參數(shù)flag表示是否對(duì)頁(yè)面輸出進(jìn)行緩沖,True為需要,F(xiàn)alse表示否,系統(tǒng)默認(rèn)為True,而Response.Clear()常用于清除緩沖區(qū)中的所有內(nèi)容。(例) 3.3 Response對(duì)象Wirte方法Write方法輸出指定的文本內(nèi)容,例如:Response.Write
48、(“歡迎光臨!”),該方法在前面的例子中已經(jīng)用到很多,這里不再詳細(xì)解釋。但要注意,在ASP中Response.Write “歡迎光臨!”是被允許的,但在ASP.NET中必須有括號(hào)框住,否則會(huì)出錯(cuò)。 3.3 Response對(duì)象Redirect方法 該方法可以將用戶的頁(yè)面重定向到一個(gè)新的頁(yè)面,使用時(shí)只要傳入一個(gè)字符串類型的地址即可,傳入在網(wǎng)址后附加參數(shù)的地址字符串也可以。該在實(shí)現(xiàn)頁(yè)面轉(zhuǎn)移的過(guò)程中很有用。例如:Response.Redirect(“http:/”);當(dāng)然在轉(zhuǎn)向的新頁(yè)面也可以為相對(duì)路徑的表示。 3.4 HttpServerUtility對(duì)象 HttpServerUtility對(duì)象也被
49、稱為Server對(duì)象,它起著HTTP服務(wù)接口的作用,并且公開(kāi)HTTP服務(wù)器的屬性和方法。 屬性描述MachineName獲取服務(wù)器的計(jì)算機(jī)名稱ScriptTimeout獲取和設(shè)置請(qǐng)求超時(shí)方法描述CreateObject創(chuàng)建COM對(duì)象的一個(gè)服務(wù)器實(shí)例Ececute執(zhí)行對(duì)另一個(gè)頁(yè)的請(qǐng)求HtmlDecode對(duì)已被編碼以消除無(wú)效HTML字符的字符串進(jìn)行解碼HtmlEncode對(duì)要在瀏覽器中顯示的字符串進(jìn)行編碼MapPath返回與Web服務(wù)器上的指定虛擬路徑相對(duì)應(yīng)的物理文件路徑Transfer終止當(dāng)前頁(yè)的執(zhí)行,并開(kāi)始執(zhí)行新頁(yè)UrlDecode對(duì)字符串進(jìn)行解碼,該字符串為了進(jìn)行HTTP傳輸而進(jìn)行編碼并在U
50、RL中發(fā)送到服務(wù)器UrlEncode編碼字符串,以便URL從Web服務(wù)器到客戶端進(jìn)行可靠HTTP傳輸3.4 HttpServerUtility對(duì)象HtmlDecode、HtmlEncode屬性 如果需要在頁(yè)面中顯示如下信息:window.alert(“ASPCN.COM,您今天訪問(wèn)了嗎?”);如果直接將代碼寫(xiě)入文件,代碼如下:Response.Write(window.alert(ASPCN.COM,您今天訪問(wèn)了嗎?) 3.4 HttpServerUtility對(duì)象HtmlDecode、HtmlEncode屬性 由于需要顯示的代碼是Javascript,它會(huì)在瀏覽器得到執(zhí)行,井彈出圖3-7的對(duì)
51、話框,這并不是所需要的情景。目的是顯示這段源代碼,而不是執(zhí)行它。這時(shí)就這需要用到HtmlEncode。代碼如下:Response.Write(Server.HtmlEncode(window.alert(,您今天訪問(wèn)了嗎?);); 3.4 HttpServerUtility對(duì)象MapPath方法 該方法返回Web服務(wù)器上的指定路徑相對(duì)應(yīng)的物理文件路徑。方法的語(yǔ)法為:pulic string MapPath(string path);其中,path為Web服務(wù)器上的虛擬路徑;返回值為與path相對(duì)應(yīng)的物理文件路徑;如果path為NULL,MapPath將返回包含當(dāng)前應(yīng)用程序目錄的完成物理路徑。例
52、如:Response.Write(Server.MapPath(“WebForm1.aspx”);運(yùn)行的結(jié)果就是返回WebForm1.aspx的實(shí)際路徑,如:c:inetputwwwrootUrlEncodeTest WebForm1.aspx 3.4 HttpServerUtility對(duì)象Execute方法和Transfer方法Transfer(path)方法用于終止當(dāng)前程序執(zhí)行,進(jìn)入path所指程序;而Execute(path)方法指在當(dāng)前程序中執(zhí)行path所指程序,但path所指程序執(zhí)行完后將繼續(xù)執(zhí)行當(dāng)前程序中后面的代碼。 (例3-4)3.5 HTTPApplication對(duì)象 Appl
53、ication對(duì)象的典型應(yīng)用計(jì)數(shù)器 如果要建立與用戶交互的基于Web站點(diǎn)的應(yīng)用程序,必須能夠?yàn)槊總€(gè)用戶提供獨(dú)立的狀態(tài)。這可能是記錄每個(gè)用戶的名字、也可能為每個(gè)用戶存儲(chǔ)對(duì)象引用或不同的記錄集。HTTPApplicationState類在整個(gè)應(yīng)用程序中共享信息,該類通過(guò)Appliacation對(duì)象進(jìn)行訪問(wèn)。任何客戶端首次在特定ASP.NET應(yīng)用程序的虛擬目錄命名空間中請(qǐng)求URL資源時(shí),創(chuàng)建HTTPApplicationState類實(shí)例。也就是說(shuō)一個(gè)Application對(duì)象對(duì)應(yīng)一個(gè)IIS的虛擬目錄以及其下的子目錄。Application對(duì)象可以被全局用戶訪問(wèn),因此可以保存全局級(jí)別的變量等,只有當(dāng)W
54、eb站點(diǎn)停止或操作系統(tǒng)重啟等情況下才被釋放。在程序的編寫(xiě)中Application的代碼一般寫(xiě)在Global.asax中(實(shí)例3-5)3.5 HTTPApplication對(duì)象計(jì)數(shù)器的鎖定 在進(jìn)行記數(shù)的過(guò)程中,往往是多個(gè)用戶同時(shí)訪問(wèn)頁(yè)面,計(jì)數(shù)器會(huì)面臨同時(shí)加1的操作,在ASP.NET中,使用了兩個(gè)方法來(lái)解決這種操作帶來(lái)的并發(fā)問(wèn)題。Application.Lock()和Application.UnLock()方法。Lock是鎖定當(dāng)前Application對(duì)象以便當(dāng)前用戶單獨(dú)操作(主要是寫(xiě)的操作,讀的操作并不會(huì)因?yàn)锳pplication被鎖定而不能讀?。?;UnLock是在操作完畢后解除鎖定,以便讓其他
55、用戶擁有寫(xiě)的權(quán)利。 3.6 Session對(duì)象 Session對(duì)象跟Application對(duì)象都是對(duì)Web應(yīng)用程序狀態(tài)進(jìn)行管理。它的功能是讓服務(wù)器記憶客戶,與Application不同的是,Application是共享的,而Session是局部的,簡(jiǎn)單的說(shuō)Session就是服務(wù)器給客戶端的一個(gè)編號(hào),當(dāng)網(wǎng)頁(yè)用戶關(guān)掉瀏覽器或超過(guò)設(shè)置的Session對(duì)象的有效時(shí)間時(shí),Session對(duì)象變量就會(huì)消失。 3.6 Session對(duì)象 有個(gè)Session,服務(wù)器就可以判斷瀏覽者是哪一個(gè)用戶,這在購(gòu)物系統(tǒng)和投票系統(tǒng)等場(chǎng)合下記錄用戶名和權(quán)限很有用,Session在Session_Start和Session_En
56、d中觸發(fā),如果需要統(tǒng)計(jì)當(dāng)前頁(yè)面的在線人數(shù)就可以利用Session的這兩個(gè)事件 3.6 Session對(duì)象Session意義與基本使用頁(yè)面間傳值 在使用Session時(shí),如果用Session作為頁(yè)面參數(shù)傳遞,需要注意它是在一個(gè)瀏覽器會(huì)話周期內(nèi)有效。所謂一個(gè)瀏覽器會(huì)話周期是指從一個(gè)瀏覽器窗口打開(kāi)到關(guān)閉這個(gè)期間。 因?yàn)橹匦麓蜷_(kāi)一個(gè)瀏覽器相當(dāng)于又一次會(huì)話.(實(shí)例3-6) 3.6 Session對(duì)象改進(jìn)的計(jì)數(shù)器實(shí)例 Session提供Abandon()方法可以強(qiáng)制使Session失效,并同時(shí)執(zhí)行Session_OnEnd事件??梢酝ㄟ^(guò)Session.Timeout屬性顯式設(shè)置Session失效的最大間隔
57、時(shí)間,如果用戶在間隔時(shí)間內(nèi)不刷新或請(qǐng)求網(wǎng)頁(yè),則該會(huì)話將終止。Timeout一般以分鐘為單位,默認(rèn)為20分鐘,可以通過(guò)Session.Timeout=10來(lái)修改失效時(shí)間為10分鐘。(實(shí)例3-7) 3.6 Session對(duì)象Session的配置默認(rèn)情況下,Session是存儲(chǔ)進(jìn)程內(nèi)的,通過(guò)Web.config可以改變Session的存儲(chǔ)方式。以下是Visual Studio.NET生成的默認(rèn)配置信息 3.7 HttpCookies對(duì)象 常用屬性Cookie它將一些用戶信息儲(chǔ)存在客戶的機(jī)器中,以便于在每次請(qǐng)求時(shí)被服務(wù)器在設(shè)定的時(shí)期內(nèi)進(jìn)行讀取。至今,它也是在頁(yè)面請(qǐng)求和站點(diǎn)訪問(wèn)之間提供狀態(tài)的常用方法。但
58、如果用戶轉(zhuǎn)移到另一個(gè)計(jì)算機(jī),或刪除cookie,或者瀏覽器拒絕接收發(fā)送給他們的Cookie,則不能維持狀態(tài)。 3.7 HttpCookies對(duì)象 常用屬性HttpCookie類提供創(chuàng)建和操作各HTTP Cookie的類型安全方法。HttpCookie類獲取和設(shè)置各Cookie的屬性,HttpCookieCollection類提供存儲(chǔ)、檢索和管理整個(gè)Web應(yīng)用程序的所有Cookie方法。Response、Request對(duì)象包含Cookie屬性,該屬性是HttpCookieCollection類的實(shí)例。例如:HttpCookie cookie=new HttpCookie(“aspcn”)表示建立
59、一個(gè)名為aspcn的HttpCookie實(shí)例。建立實(shí)例后,將給其賦值。 屬性描述Domain獲取或設(shè)置將此Cookie與其關(guān)聯(lián)的域Expires獲取或設(shè)置此Cookie的過(guò)期日期和時(shí)間ItemHttpCookie.Values的快捷方式,在C#中,該屬性為HttpCookie類的索引器Name獲取或設(shè)置Cookie的名稱Path獲取或設(shè)置要與當(dāng)前Cookie一起傳輸?shù)奶摂M路徑Value獲取或設(shè)置單個(gè)Cookie值Values獲取在單個(gè)Cookie對(duì)象中包含的鍵值對(duì)的集合3.7 HttpCookies對(duì)象設(shè)置Cookie值 一個(gè)Cookie中可以存儲(chǔ)一個(gè)或多個(gè)值,例如:通過(guò)設(shè)置Cookie的Va
60、lue屬性值,可以在Cookie中存儲(chǔ)一個(gè) 。例如單值存儲(chǔ):HttpCookie cookie=new HttpCookie(“aspcn”); Values集合使用的Add方法中設(shè)置多個(gè)值(Values),設(shè)置Cookie的最后一步是通過(guò)AppendCookie方法將設(shè)置的Cookie應(yīng)用到Response對(duì)象中去。例如:Response.AppendCookie(cookie) 3.7 HttpCookies對(duì)象讀取Cookie 當(dāng)瀏覽器向服務(wù)器發(fā)送請(qǐng)求時(shí),該服務(wù)器的Cookie會(huì)與請(qǐng)求一起發(fā)送。可以使用Request對(duì)象來(lái)讀取Cookie,讀取單值Cookie可以利用Cookie的Val
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- Unit 4 Customs and Traditions:Review of Passives 語(yǔ)法銜接活動(dòng)案例教學(xué)設(shè)計(jì)-2024-2025學(xué)年高中英語(yǔ)滬外版必修第一冊(cè)
- 6我們神圣的國(guó)土 第一課時(shí) 教學(xué)設(shè)計(jì)-2024-2025學(xué)年五年級(jí)道德與法治上冊(cè)統(tǒng)編版
- 第三單元課題2原子結(jié)構(gòu)第2課時(shí)離子 相對(duì)原子質(zhì)量教學(xué)設(shè)計(jì)-2024-2025學(xué)年九年級(jí)化學(xué)人教版(2024)上冊(cè)
- 浙教版(2023)信息技術(shù)三年級(jí)下第15課 成果分享交流 (教學(xué)設(shè)計(jì))
- 第1課《我們的身體》教學(xué)設(shè)計(jì)-2024-2025學(xué)年科學(xué)一年級(jí)上冊(cè)教科版
- Unit 5 Do you want to watch a game show Section B 1a-1d-教學(xué)設(shè)計(jì) 2024-2025學(xué)年人教版八年級(jí)英語(yǔ)上冊(cè)
- 11《蟋蟀的住宅》教學(xué)設(shè)計(jì)-2024-2025學(xué)年四年級(jí)語(yǔ)文上冊(cè)統(tǒng)編版
- 房地產(chǎn)抵押貸款合同示范文本6篇
- 2023-2024學(xué)年高中信息技術(shù)選擇性必修1(浙教版2019)數(shù)據(jù)與數(shù)據(jù)結(jié)構(gòu)-教學(xué)設(shè)計(jì)-5.2-迭代與遞歸
- 6根莖葉(教學(xué)設(shè)計(jì))-2023-2024學(xué)年科學(xué)三年級(jí)下冊(cè)人教鄂教版
- 出租共享菜園合同范例
- 八年級(jí)班主任學(xué)生心理健康計(jì)劃
- 2025年第六屆全國(guó)國(guó)家版圖知識(shí)競(jìng)賽測(cè)試題庫(kù)及答案
- 2025年三方買賣協(xié)議標(biāo)準(zhǔn)版本(2篇)
- 【歷史】唐朝建立與“貞觀之治”課件-2024~2025學(xué)年統(tǒng)編版七年級(jí)歷史下冊(cè)
- 2024化工園區(qū)危險(xiǎn)品運(yùn)輸車輛停車場(chǎng)建設(shè)規(guī)范
- 05G359-3 懸掛運(yùn)輸設(shè)備軌道(適用于一般混凝土梁)
- 田字格模版內(nèi)容
- Q∕GDW 12152-2021 輸變電工程建設(shè)施工安全風(fēng)險(xiǎn)管理規(guī)程
- 第一章 公共政策分析的基本理論與框架
- 云南省地質(zhì)災(zāi)害群測(cè)群防手冊(cè)
評(píng)論
0/150
提交評(píng)論