[計(jì)算機(jī)軟件及應(yīng)用]WEB編程講義_第1頁
[計(jì)算機(jī)軟件及應(yīng)用]WEB編程講義_第2頁
[計(jì)算機(jī)軟件及應(yīng)用]WEB編程講義_第3頁
[計(jì)算機(jī)軟件及應(yīng)用]WEB編程講義_第4頁
[計(jì)算機(jī)軟件及應(yīng)用]WEB編程講義_第5頁
已閱讀5頁,還剩75頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第一章 .net簡介及開發(fā)環(huán)境的建立1.1web基礎(chǔ)http協(xié)議 http代表hypertext transfer protocol(超文本傳輸協(xié)議)。http是一個基于文本的協(xié)議,定義了web瀏覽器和web服務(wù)器如何進(jìn)行通信。http請求是指從瀏覽器向web服務(wù)器發(fā)出的搜索某個web網(wǎng)頁的請求。當(dāng)web服務(wù)器收到這個請求之后,就會按照請求的要求,找到相應(yīng)的網(wǎng)頁。如果可以找到這個網(wǎng)頁,那么就把網(wǎng)頁的html代碼通過網(wǎng)絡(luò)傳回瀏覽器;如果沒有找到這個網(wǎng)頁,就發(fā)送一個錯誤信息給發(fā)出http請求的瀏覽器。后面的這些操作稱為http響應(yīng)。 html 標(biāo)簽將客戶端數(shù)據(jù)傳輸給服務(wù)器。當(dāng)用戶單擊一個“提交(s

2、ubmit)”類型的按鈕時,瀏覽器將該窗體所屬的所有控件的內(nèi)容組合成一個字符串。然后將該字符串作為get或post命令的一部分傳遞給服務(wù)器。下面的html片段說明一個簡單的窗體,該窗體包含一個文本框和一個提交按鈕。不難看出,該窗體將post命令和default.aspx url關(guān)聯(lián)在一起: 下面是用戶單擊該提交按鈕后向服務(wù)器提交的報(bào)文:post /default.aspx http/1.1host: content-type: application/x-www-form-urlencodedcontent-length: 12empcode=1001web服務(wù)器web是基于客戶-服務(wù)器的一種

3、體系結(jié)構(gòu),一般用戶的計(jì)算機(jī)稱為客戶機(jī),用于提供服務(wù)的機(jī)器稱為服務(wù)器。在web方式下客戶端軟件常用瀏覽器,客戶機(jī)向服務(wù)器發(fā)送請求,要求執(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)) 基于web的數(shù)據(jù)庫應(yīng)用采用3層客戶-服務(wù)器結(jié)構(gòu),也稱為brower/server/database server結(jié)構(gòu)。第一層為瀏覽器,第二層為web服務(wù)器,第三層為數(shù)據(jù)庫服務(wù)器。瀏覽器是用戶輸入數(shù)據(jù)和顯示結(jié)構(gòu)的交互界面,用戶在瀏覽器表單中輸入數(shù)據(jù),然后將表單中的數(shù)據(jù)提交并發(fā)送到web服務(wù)器,web服務(wù)器應(yīng)用程序接受并處理用戶的數(shù)據(jù),并從數(shù)據(jù)庫中查詢

4、用戶數(shù)據(jù)或把用戶數(shù)據(jù)錄入到數(shù)據(jù)庫。最后web服務(wù)器把返回的結(jié)果插入html頁面,傳送到客戶端,在瀏覽器中顯示出來。 例如:最簡單的登錄和注冊靜態(tài)網(wǎng)頁靜態(tài)網(wǎng)頁就是用純html代碼編寫的網(wǎng)頁。這些網(wǎng)頁的代碼是用一些編輯器輸入的,或者是用一些網(wǎng)頁設(shè)計(jì)程序生成的,保存為.html或.htm文件的形式。由于這些網(wǎng)頁中沒有任何與用戶相關(guān)的部分,所以在設(shè)計(jì)完成之后,這類程序不會被服務(wù)器端執(zhí)行,所以無論是哪個用戶訪問這個網(wǎng)頁,在什么時候訪問這個網(wǎng)頁,以何種方式進(jìn)入這個網(wǎng)頁,它的樣子都不會發(fā)生任何變化。采用靜態(tài)網(wǎng)頁會導(dǎo)致很大的局限性,如果希望為用戶顯示一些個性化的信息,使用靜態(tài)網(wǎng)頁將無法達(dá)到這個目的。 動態(tài)網(wǎng)頁

5、動態(tài)網(wǎng)頁的擴(kuò)展名一般為.asp或.aspx。在瀏覽這類網(wǎng)頁的時候,必須先在服務(wù)器端執(zhí)行程序,再將執(zhí)行結(jié)果下載到本地瀏覽器上。這類程序會被服務(wù)器端執(zhí)行,因執(zhí)行的條件不同,所產(chǎn)生的結(jié)果也會有所不同。 靜態(tài)網(wǎng)頁和動態(tài)網(wǎng)頁的主要區(qū)別在于:靜態(tài)網(wǎng)頁是在發(fā)出請求之前預(yù)先生成,而動態(tài)網(wǎng)頁則是在發(fā)出請求之后動態(tài)生成的。客戶端代碼與服務(wù)器端代碼客戶端代碼可以采用java script、java applets、甚至flash應(yīng)用程序格式。客戶端代碼包含在向?yàn)g覽器傳遞的html中,屬于靜態(tài)網(wǎng)頁的一部分。服務(wù)器端代碼:web應(yīng)用程序會對傳遞給http請求的數(shù)據(jù)進(jìn)行在服務(wù)器端響應(yīng),完成數(shù)據(jù)庫進(jìn)行查詢,還可以執(zhí)行其他必

6、須的處理,然后生返回到瀏覽器的頁面內(nèi)容(html加上客戶端代碼)。1.2 .net概述.net對于.net,微軟自己也沒有一個詳細(xì)確切的定義。但是可以這樣認(rèn)為:.net是微軟公司要提供的一系列產(chǎn)品的總稱。具體說來,.net由下面的四個部分組成:.net戰(zhàn)略、.net framework、.net企業(yè)服務(wù)器和.net開發(fā)工具。.net framework是.net戰(zhàn)略的核心。.net framework分為以下幾個部分:ms中間語言、clr、.net framework類庫、.net語言、asp.net和web服務(wù)。 托管代碼托管代碼:指創(chuàng)建于clr之上的軟件 。由公共語言運(yùn)行庫環(huán)境(而不是直接

7、由操作系統(tǒng))執(zhí)行的代碼 。托管代碼是可以使用20多種支持microsoft .net framework的高級語言編寫的代碼,它們包括:c#, j#, microsoft visual basic .net, microsoft jscript .net, 以及c+。所有的語言共享統(tǒng)一的類庫集合,并能被編碼成為中間語言(il)。運(yùn)行庫編譯器(runtime-aware compiler)在托管執(zhí)行環(huán)境下編譯中間語言(il)使之成為本地可執(zhí)行的代碼,并使用數(shù)組邊界和索引檢查,異常處理,垃圾回收等手段確保類型的安全。clr現(xiàn)在的計(jì)算機(jī)編程語言的執(zhí)行方式分為兩種,一種是編譯執(zhí)行(c、c+、vb等),

8、一種是解釋執(zhí)行(python、java script、html)。編譯執(zhí)行是指源程序代碼先由編譯器編譯成可執(zhí)行的機(jī)器碼,然后再執(zhí)行;解釋執(zhí)行是指源代碼程序被解釋器直接讀取執(zhí)行。編譯執(zhí)行和解釋執(zhí)行各有優(yōu)缺點(diǎn),比如我們說編譯執(zhí)行的語言通常執(zhí)行效率高,而解釋執(zhí)行的語言通常可以靈活的跨平臺。編譯執(zhí)行一次性將高級語言源程序編譯成二進(jìn)制的可執(zhí)行指令。而解釋執(zhí)行是由該語言(如html)運(yùn)行環(huán)境(如瀏覽器)讀取一條該語言的源程序,然后轉(zhuǎn)變成二進(jìn)制指令交給計(jì)算機(jī)執(zhí)行。如果把高級語言源代碼比作一本外文書籍,那么編譯執(zhí)行就是一次性翻譯成中文,然后你再看;而解釋執(zhí)行就是你拿著個翻譯機(jī),讀一行翻譯一行的看。這里要注意的

9、是,我們說編譯執(zhí)行的程序,源代碼需要一個叫編譯器的裝置編譯成操作系統(tǒng)可執(zhí)行的機(jī)器碼,形式比較統(tǒng)一,而解釋執(zhí)行就不一樣了,它的形式和方法各異,我們說網(wǎng)頁html代碼它是靠瀏覽器解釋執(zhí)行的,而可以在office中使用的腳本語言vbscript卻是由office來負(fù)責(zé)運(yùn)行的。從java語言開始,一種新的程序語言執(zhí)行方式產(chǎn)生了,這就是“中間碼+虛擬機(jī)”執(zhí)行機(jī)制。這種執(zhí)行方式,程序語言源代碼需要被編譯成一種特殊的中間碼,這種中間碼是不能直接執(zhí)行的,它需要一個叫“虛擬機(jī)”的裝置來管理和執(zhí)行,可以是解釋執(zhí)行也可以是編譯執(zhí)行。因?yàn)椤疤摂M機(jī)”可以參與和管理程序代碼的執(zhí)行,因此解決了很多傳統(tǒng)編譯語言一些致命的缺點(diǎn)

10、,如垃圾內(nèi)存回收、安全性檢查等。也是因?yàn)槿绱耍?net框架也采用了此種語言執(zhí)行方式,這里管理和執(zhí)行中間碼“虛擬機(jī)”在.net框架中就是公共語言運(yùn)行時(clr),它負(fù)責(zé)管理和執(zhí)行由.net編譯器編譯產(chǎn)生的中間語言代碼整個執(zhí)行過程是這樣的,首先我們在開發(fā)環(huán)境visual studio .net中編寫c#代碼,然后這些源代碼被visual studio .net中內(nèi)置的c#編譯器編譯成中間語言代碼(中間語言是一種類似于匯編的程序語言,還不是機(jī)器碼,我們后面會專門介紹),最后中間語言代碼由操作系統(tǒng)中.net framework的組件clr管理和執(zhí)行。linux操作系統(tǒng)中運(yùn)行和編輯.net程序的平臺,就

11、是mono平臺。該平臺包括有c#編譯器、公共語言運(yùn)行時以及相關(guān)的一套.net類庫。mono平臺可使開發(fā)者開發(fā)的.net應(yīng)用程序不僅能在windows上運(yùn)行,也能在任何支持mono的操作系統(tǒng)上運(yùn)行,包括現(xiàn)有的linux和unix操作系統(tǒng)。. net里面的clr和java里面的虛擬機(jī)jvm是不同的,我們說java的虛擬機(jī)一般是解釋執(zhí)行的,而clr是編譯執(zhí)行,是在應(yīng)用程序第一次被調(diào)用時一次性編譯成機(jī)器碼再執(zhí)行,這樣做的好處一個是盡可能的避免了解釋執(zhí)行所帶來的效率降低的問題;另外可以做到充分利用本機(jī)資源,clr可以針對本地的資源進(jìn)行優(yōu)化編譯問題:我們知道,在.net之前c和vb編寫的程序的執(zhí)行效率差距

12、很大。試問c編寫的.net應(yīng)用程序和vb編寫的.net應(yīng)用程序在執(zhí)行效率上的差距大嗎?為什么?答案:否定的。原因是無論c#編寫的.net還是vb編寫的.net,他們都是采用上述“中間碼+虛擬機(jī)”執(zhí)行機(jī)制,先由編譯器編譯成msil,然后由clr管理執(zhí)行的;同時也告訴大家對于.net開發(fā),vb和c#沒有任何差別,都100%兼容于cls。但許多人為什么說c#的性能高于vb.net呢?這是因?yàn)関b.net支持即時編譯,就是一邊書寫代碼一邊編譯。這樣可立刻發(fā)現(xiàn)語法錯誤,使調(diào)試變得更加容易。但是這樣一來vb就需要隨時瀏覽整個代碼文件,并把臨時數(shù)據(jù)儲存。這造成vb.net生成的代碼中常常具有冗余部分。但也不

13、能就此下結(jié)論說vb比c#慢,當(dāng)用戶選擇打開優(yōu)化并且以release方式編譯工程,就能得到與c#一樣簡短快速的代碼。msil編譯為托管代碼時,編譯器將源代碼翻譯為 microsoft 中間語言 (msil),這是一組可以有效地轉(zhuǎn)換為本機(jī)代碼且獨(dú)立于 cpu 的指令。msil 包括用于加載、存儲和初始化對象以及對對象調(diào)用方法的指令,還包括用于算術(shù)和邏輯運(yùn)算、控制流、直接內(nèi)存訪問、異常處理和其他操作的指令。要使代碼可運(yùn)行,必須先將 msil 轉(zhuǎn)換為特定于 cpu 的代碼,這通常是通過實(shí)時 (jit) 編譯器來完成的。由于公共語言運(yùn)行庫為它支持的每種計(jì)算機(jī)結(jié)構(gòu)都提供了一種或多種 jit 編譯器,因此同

14、一組 msil 可以在所支持的任何結(jié)構(gòu)上 jit 編譯和運(yùn)行。元數(shù)據(jù)當(dāng)編譯器產(chǎn)生 msil 時,它也產(chǎn)生元數(shù)據(jù)。元數(shù)據(jù)描述代碼中的類型,包括每種類型的定義、每種類型的成員的簽名、代碼引用的成員和運(yùn)行庫在執(zhí)行時使用的其他數(shù)據(jù)。msil 和元數(shù)據(jù)包含在一個可移植可執(zhí)行 (pe) 文件中,此文件基于并擴(kuò)展過去用于可執(zhí)行內(nèi)容的已公布的 microsoft pe 和公共對象文件格式 (coff)。這種文件格式包含 msil 或本機(jī)代碼以及元數(shù)據(jù),使得操作系統(tǒng)能夠識別公共語言運(yùn)行庫映像。文件中的元數(shù)據(jù)以及 msil 的存在使代碼能夠描述自身,這意味著不再需要類型庫或接口定義語言 (idl)。運(yùn)行庫在執(zhí)行過

15、程中根據(jù)需要從該文件中查找并提取元數(shù)據(jù)。程序集*程序集可以是靜態(tài)的或動態(tài)的。靜態(tài)程序集可以包括 .net framework 類型(接口和類),以及該程序集的資源(位圖、jpeg 文件、資源文件等)。靜態(tài)程序集存儲在磁盤上的可移植可執(zhí)行 (pe) 文件中。您還可以使用 .net framework 來創(chuàng)建動態(tài)程序集,動態(tài)程序集直接從內(nèi)存運(yùn)行并且在執(zhí)行前不存儲到磁盤上。您可以在執(zhí)行動態(tài)程序集后將它們保存在磁盤上。程序集(assembly)是.net程序的最小組成單位。每個程序集都有自己的名稱、版本等信息。程序集通常表現(xiàn)為一個文件(.exe或.dll文件),這樣的程序集被稱為單文件程序集,這種程序

16、集是最常見的。程序集也可以由多個文件組成,每個文件都是一個模塊文件或者是一個資源文件,這樣的程序集被稱為多文件程序集單文件程序集的生成這是最常見的程序集,使用 visual studio 只能生成單文件程序集。使用 csc.exe 能夠很輕松地生成單文件程序集:csc.exe /target:library /resource:hello.jpg hello.cs上述命令執(zhí)行后,會生成一個名為 hello.dll 的文件,該文件組成了單文件程序集。這個文件是一個托管模塊,存儲了類型元數(shù)據(jù)和中間語言,還嵌入了資源文件 hello.jpg 的內(nèi)容(通過使用 /resource 選項(xiàng))。類型元數(shù)據(jù)描

17、述了模塊中定義的類型及其成員,中間語言是編譯后的托管代碼。程序集本身其實(shí)是一個邏輯概念,對于自身的描述是通過程序集清單來實(shí)現(xiàn)的。程序集清單是一種元數(shù)據(jù),描述了程序集的名稱、版本、區(qū)域性和強(qiáng)名稱信息,還包括組成程序集的文件的列表和資源信息,以及其他信息。在單文件程序集中,程序集清單的元數(shù)據(jù)直接保存在主模塊文件中。在本例中,程序集中的名稱是hello,版本沒有提供,默認(rèn)為,區(qū)域性為語言中立,強(qiáng)名稱信息為空,文件列表只有hello.exe,托管資源為hello.jpg。.net框架類庫.net framework 類庫是一個由 microsoft .net framework sdk

18、中包含的類、接口和值類型組成的庫。該庫提供對系統(tǒng)功能的訪問,是建立 .net framework 應(yīng)用程序、組件和控件的基礎(chǔ)。system.web 提供支持瀏覽器/服務(wù)器通信的類和接口。此命名空間包括 httprequest 類(它提供有關(guān)當(dāng)前 http 請求的大量信息),httpresponse 類(它管理 http 到客戶端的輸出)和 httpserverutility 對象(它提供對服務(wù)器端實(shí)用工具和進(jìn)程的訪問)。system.web 還包括用于 cookie 操作、文件傳輸、異常信息和輸出緩存控制的類。system.data 基本上由構(gòu)成 ado.net 結(jié)構(gòu)的類組成。ado.net

19、結(jié)構(gòu)使您可以生成可用于有效管理來自多個數(shù)據(jù)源的數(shù)據(jù)的組件。在斷開連接的方案(如 internet)中,ado.net 提供了一些可以在多層系統(tǒng)中請求、更新和協(xié)調(diào)數(shù)據(jù)的工具。ado.net 結(jié)構(gòu)也可以在客戶端應(yīng)用程序(如 windows 窗體)或 asp.net 創(chuàng)建的 html 頁中實(shí)現(xiàn)。system.enterpriseservices 為企業(yè)級應(yīng)用程序提供重要的基礎(chǔ)結(jié)構(gòu)。com+ 為企業(yè)級環(huán)境中部署的組件編程模型提供服務(wù)結(jié)構(gòu)。此命名空間為 .net framework 對象提供了對 com+ 服務(wù)的訪問,從而使 .net framework 對象更適用于企業(yè)級應(yīng)用程序。system.win

20、dows.forms 包含用于創(chuàng)建基于 windows 的應(yīng)用程序的類,這些應(yīng)用程序可以充分利用 microsoft windows 操作系統(tǒng)中的豐富用戶界面功能。system.xml 提供基于標(biāo)準(zhǔn)的 xml 處理支持。system.collections命名空間arraylist使用大小可按需動態(tài)增加的數(shù)組實(shí)現(xiàn) ilist 接口。bitarray管理位值的壓縮數(shù)組,該值表示為布爾值,其中 true 表示位是打開的 (1),false 表示位是關(guān)閉的 (0)。caseinsensitivecomparer比較兩個對象是否相等,比較時忽略字符串的大小寫。caseinsensitivehashco

21、deprovider使用忽略字符串大小寫的哈希算法,為對象提供哈希代碼。collectionbase為強(qiáng)類型集合提供 abstract 基類。comparer比較兩個對象是否相等,其中字符串比較是區(qū)分大小寫的。dictionarybase為鍵/值對的強(qiáng)類型集合提供 abstract 基類。hashtable表示鍵/值對的集合,這些鍵/值對根據(jù)鍵的哈希代碼進(jìn)行組織。queue表示對象的先進(jìn)先出集合。readonlycollectionbase為強(qiáng)類型非泛型只讀集合提供 abstract 基類。sortedlist表示鍵/值對的集合,這些鍵值對按鍵排序并可按照鍵和索引訪問。stack表示對象的簡單

22、的后進(jìn)先出非泛型集合。system.io命名空間binaryreader用特定的編碼將基元數(shù)據(jù)類型讀作二進(jìn)制值。binarywriter以二進(jìn)制形式將基元類型寫入流,并支持用特定的編碼寫入字符串。bufferedstream給另一流上的讀操作添加一個緩沖層。無法繼承此類。directory公開用于創(chuàng)建、移動和枚舉通過目錄和子目錄的靜態(tài)方法。無法繼承此類。directoryinfo公開用于創(chuàng)建、移動和枚舉目錄和子目錄的實(shí)例方法。無法繼承此類。directorynotfoundexception當(dāng)找不到文件或目錄的一部分時所引發(fā)的異常。driveinfo提供對有關(guān)驅(qū)動器的信息的訪問。driveno

23、tfoundexception當(dāng)嘗試訪問的驅(qū)動器或共享不可用時引發(fā)的異常。endofstreamexception讀操作試圖超出流的末尾時引發(fā)的異常。erroreventargs為 error 事件提供數(shù)據(jù)。file提供用于創(chuàng)建、復(fù)制、刪除、移動和打開文件的靜態(tài)方法,并協(xié)助創(chuàng)建 filestream 對象。fileinfo提供創(chuàng)建、復(fù)制、刪除、移動和打開文件的實(shí)例方法,并且?guī)椭鷦?chuàng)建 filestream 對象。無法繼承此類。fileloadexception當(dāng)找到托管程序集卻不能加載它時引發(fā)的異常。filenotfoundexception試圖訪問磁盤上不存在的文件失敗時引發(fā)的異常。files

24、tream公開以文件為主的 stream,既支持同步讀寫操作,也支持異步讀寫操作。filesystemeventargs提供目錄事件的數(shù)據(jù):changed、created、deleted。filesysteminfo為 fileinfo 和 directoryinfo 對象提供基類。filesystemwatcher偵聽文件系統(tǒng)更改通知,并在目錄或目錄中的文件發(fā)生更改時引發(fā)事件。internalbufferoverflowexception內(nèi)部緩沖區(qū)溢出時引發(fā)的異常。invaliddataexception在數(shù)據(jù)流的格式無效時引發(fā)的異常。iodescriptionattribute設(shè)置可視化設(shè)

25、計(jì)器在引用事件、擴(kuò)展程序或?qū)傩詴r可顯示的說明。ioexception發(fā)生 i/o 錯誤時引發(fā)的異常。memorystream創(chuàng)建其支持存儲區(qū)為內(nèi)存的流。path對包含文件或目錄路徑信息的 string 實(shí)例執(zhí)行操作。這些操作是以跨平臺的方式執(zhí)行的。pathtoolongexception當(dāng)路徑名或文件名超過系統(tǒng)定義的最大長度時引發(fā)的異常。renamedeventargs為 renamed 事件提供數(shù)據(jù)。stream提供字節(jié)序列的一般視圖。streamreader實(shí)現(xiàn)一個 textreader,使其以一種特定的編碼從字節(jié)流中讀取字符。streamwriter實(shí)現(xiàn)一個 textwriter,使其以

26、一種特定的編碼向流中寫入字符。stringreader實(shí)現(xiàn)從字符串進(jìn)行讀取的 textreader。stringwriter實(shí)現(xiàn)一個用于將信息寫入字符串的 textwriter。該信息存儲在基礎(chǔ) stringbuilder 中。textreader表示可讀取連續(xù)字符系列的讀取器。textwriter表示可以編寫一個有序字符系列的編寫器。該類為抽象類。unmanagedmemorystream提供從托管代碼訪問非托管內(nèi)存塊的能力。system.drawing命名空間bitmap封裝 gdi+ 位圖,此位圖由圖形圖像及其屬性的像素?cái)?shù)據(jù)組成。bitmap 是用于處理由像素?cái)?shù)據(jù)定義的圖像的對象。bru

27、sh定義用于填充圖形形狀(如矩形、橢圓、餅形、多邊形和封閉路徑)的內(nèi)部的對象。brushes所有標(biāo)準(zhǔn)顏色的畫筆。無法繼承此類。bufferedgraphics為雙緩沖提供圖形緩沖區(qū)。bufferedgraphicscontext提供創(chuàng)建圖形緩沖區(qū)的方法,該緩沖區(qū)可用于雙緩沖。bufferedgraphicsmanager提供對應(yīng)用程序域的主緩沖圖形上下文對象的訪問。colorconverter將顏色從一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型。通過 typedescriptor 訪問此類。colortranslator將顏色翻譯成 gdi+ color 結(jié)構(gòu)并從該結(jié)構(gòu)翻譯顏色。無法繼承此類。font定義

28、特定的文本格式,包括字體、字號和字形屬性。無法繼承此類。fontconverter將 font 對象從一種數(shù)據(jù)類型轉(zhuǎn)換成另一種數(shù)據(jù)類型。 fontconverter.fontnameconverterfontconverter.fontnameconverter 是一個類型轉(zhuǎn)換器,用于在字體名稱與其他各種表示形式之間進(jìn)行轉(zhuǎn)換。fontconverter.fontunitconverter轉(zhuǎn)換字體單位類型。fontfamily定義有著相似的基本設(shè)計(jì)但在形式上有某些差異的一組字樣。無法繼承此類。graphics封裝一個 gdi+ 繪圖圖面。無法繼承此類。icon表示 windows 圖標(biāo),它是用于

29、表示對象的小位圖圖像。盡管圖標(biāo)的大小由系統(tǒng)決定,但仍可將其視為透明的位圖。iconconverter將 icon 對象從一種數(shù)據(jù)類型轉(zhuǎn)換到另一種數(shù)據(jù)類型。通過 typedescriptor 對象訪問此類。image為源自 bitmap 和 metafile 的類提供功能的抽象基類。imageanimator動畫處理包含基于時間的幀的圖像。imageconverterimageconverter 是一個類,可用于將 image 對象從一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型。通過 typedescriptor 對象訪問此類。imageformatconverterimageformatconverter

30、 是用于將顏色從一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型的類。通過 typedescriptor 對象訪問此類。pen定義用于繪制直線和曲線的對象。無法繼承此類。pens所有標(biāo)準(zhǔn)顏色的鋼筆。無法繼承此類。pointconverter將 point 對象從一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型。通過 typedescriptor 對象訪問此類。rectangleconverter將矩形從一種數(shù)據(jù)類型轉(zhuǎn)換為另一種數(shù)據(jù)類型。通過 typedescriptor 訪問此類。region指示由矩形和由路徑構(gòu)成的圖形形狀的內(nèi)部。無法繼承此類。sizeconvertersizeconverter 類用于從一種數(shù)據(jù)類型轉(zhuǎn)換為

31、另一種類型。通過 typedescriptor 對象訪問此類。sizefconverter將 sizef 對象從一種類型轉(zhuǎn)換成另一種類型。solidbrush定義單色畫筆。畫筆用于填充圖形形狀,如矩形、橢圓、扇形、多邊形和封閉路徑。無法繼承此類。stringformat封裝文本布局信息(如對齊、文字方向和 tab ??课唬?,顯示操作(如省略號插入和國家標(biāo)準(zhǔn) (national) 數(shù)字替換)和 opentype 功能。無法繼承此類。systembrushessystembrushes 類的每個屬性都是一個 solidbrush,它是 windows 顯示元素的顏色。systemcolorssys

32、temcolors 類的每個屬性都是 color 結(jié)構(gòu),這種結(jié)構(gòu)是 windows 顯示元素的顏色。systemfonts指定用于在 windows 顯示元素中顯示文本的字體。systemiconssystemicons 類的每個屬性都是 windows 系統(tǒng)級圖標(biāo)的 icon 對象。無法繼承此類。systempenssystempens 類的每個屬性都是一個 pen,它是 windows 顯示元素的顏色,寬度為 1 個像素。texturebrushtexturebrush 類的每個屬性都是 brush 對象,這種對象使用圖像來填充形狀的內(nèi)部。無法繼承此類。toolboxbitmapattri

33、bute這使您可以指定一個圖標(biāo)來表示容器的控件,例如 microsoft visual studio 窗體設(shè)計(jì)器。iisiis是internet information services的縮寫,是一個world wide web server。gopher server和ftp server全部包容在里面。 iis意味著你能發(fā)布網(wǎng)頁,并且有asp(active server pages)、java、vbscript產(chǎn)生頁面,有著一些擴(kuò)展功能。iis支持一些有趣的東西,象有編輯環(huán)境的界面(frontpage)、有全文檢索功能的(index server)、有多媒體功能的(net show) 其次

34、,iis是隨windows nt server 4.0一起提供的文件和應(yīng)用程序服務(wù)器,是在windows nt server上建立internet服務(wù)器的基本組件。它與windows nt server完全集成,允許使用windows nt server內(nèi)置的安全性以及ntfs文件系統(tǒng)建立強(qiáng)大靈活的internetintranet站點(diǎn)。iis(internet information server,互聯(lián)網(wǎng)信息服務(wù))是一種web(網(wǎng)頁)服務(wù)組件,其中包括web服務(wù)器、ftp服務(wù)器、nntp服務(wù)器和smtp服務(wù)器,分別用于網(wǎng)頁瀏覽、文件傳輸、新聞服務(wù)和郵件發(fā)送等方面,它使得在網(wǎng)絡(luò)(包括互聯(lián)網(wǎng)和局域

35、網(wǎng))上發(fā)布信息成了一件很容易的事。iis的作用在同一時間內(nèi)允許打開的網(wǎng)站頁面數(shù),打開一個頁面占一個iis,打開一個站內(nèi)框架頁面占2到3個iis;若圖片等被盜鏈,在其它網(wǎng)站打開本站圖片同樣占一個iis。假若設(shè)置參數(shù)為50個iis,則這個站允許同時有50個頁面被打開。但要在同一時間(極短的時間)有50個頁面被打開,需要50個人同時操作,這個概率還是比較低的。所以,100個iis支持日ip1000(同時訪問網(wǎng)站人數(shù)必定遠(yuǎn)低于1000人)以上都不是很大問題,除非網(wǎng)站被盜鏈或框架引發(fā)其它消耗。iis之web服務(wù)器安裝步驟1、插入windows xp安裝光盤,打開控制面板,然后打開其中的“添加/刪除程序”

36、2、在添加或刪除程序窗口左邊點(diǎn)擊“添加/刪除windows組建”13、捎帶片刻系統(tǒng)會啟動windows組建向?qū)?,在internet信息服務(wù)(iis)前面選勾,點(diǎn)擊下一步:4、系統(tǒng)安裝成功,系統(tǒng)會自動在系統(tǒng)盤新建網(wǎng)站目錄,默認(rèn)目錄為:c:inetpubwwwroot5、打開控制面板性能和維護(hù)管理工具internet 信息服務(wù):6、在默認(rèn)網(wǎng)站上點(diǎn)擊右鍵選擇屬性:7、點(diǎn)擊主目錄:在本地路輸入框后點(diǎn)擊瀏覽可以更改網(wǎng)站所在文件位置,默認(rèn)目錄為:c:inetpubwwwroot在執(zhí)行權(quán)限后面點(diǎn)擊配置調(diào)試教本錯誤信息,選中:向客戶端發(fā)送文本錯誤信息:處理 url 時服務(wù)器出錯。請與系統(tǒng)管理員聯(lián)系。點(diǎn)擊文檔:

37、可以設(shè)置網(wǎng)站默認(rèn)首頁,推薦刪除iisstart.asp,添加index.asp和index.htm點(diǎn)擊目錄安全性:點(diǎn)擊編輯可以對服務(wù)器訪問權(quán)限進(jìn)行設(shè)置8、把凡人網(wǎng)絡(luò)購物系統(tǒng)v7.0文件復(fù)制到你選擇的網(wǎng)站目錄下,假設(shè)你選擇的目錄為為默認(rèn)目錄:c:inetpubwwwroot9、把frshop.rar解壓之后的文件復(fù)制到c:inetpubwwwrootshop下即可10、您可以通過以下方式訪問商城:http:/localhost/shop/ 或 /shop/ 或 http:/計(jì)算機(jī)名/shop/ 或 http:/本機(jī)ip地址/shop/ 訪問其它人可以通過http:/

38、計(jì)算機(jī)名/shop/ 或 http:/本機(jī)ip地址/shop/ 訪問11、如果您有域名,把域名解析到本地ip地址,即可通過http:/域名/shop/is之web服務(wù)器建立一、建立第一個web站點(diǎn)比如本機(jī)的ip地址為,自己的網(wǎng)頁放在d:wy目錄下,網(wǎng)頁的首頁文件名為index.htm,現(xiàn)在想根據(jù)這些建立好自己的web服務(wù)器。對于此web站點(diǎn),我們可以用現(xiàn)有的“默認(rèn)web站點(diǎn)”來做相應(yīng)的修改后,就可以輕松實(shí)現(xiàn)。請先在“默認(rèn)web站點(diǎn)”上單擊右鍵,選“屬性”,以進(jìn)入名為“默認(rèn)web站點(diǎn)屬性”設(shè)置界面。1修改綁定的ip地址:轉(zhuǎn)到“web站點(diǎn)”窗口,再在“ip地址”后的下拉菜單中

39、選擇所需用到的本機(jī)ip地址“”。2修改主目錄:轉(zhuǎn)到“主目錄”窗口,再在“本地路徑”輸入(或用“瀏覽”按鈕選擇)好自己網(wǎng)頁所在的“d:wy”目錄。3添加首頁文件名:轉(zhuǎn)到“文檔”窗口,再按“添加”按鈕,根據(jù)提示在“默認(rèn)文檔名”后輸入自己網(wǎng)頁的首頁文件名“index.htm”。4添加虛擬目錄:比如你的主目錄在“d:wy”下,而你想輸入“/test”的格式就可調(diào)出“e:all”中的網(wǎng)頁文件,這里面的“test”就是虛擬目錄。請?jiān)凇澳J(rèn)web站點(diǎn)”上單擊右鍵,選“新建虛擬目錄”,依次在“別名”處輸入“test”,在“目錄”處輸入“e:all”后再按提示操作即可

40、添加成功。5效果的測試:打開ie瀏覽器,在地址欄輸入“”之后再按回車鍵,此時就能夠調(diào)出你自己網(wǎng)頁的首頁,則說明設(shè)置成功!注:具體不同的電腦會有不同的選項(xiàng)名稱,但大體上還是可以找到了(多試一下)。 第二章 asp.net基礎(chǔ)知識2.1 asp.net概述 什么是asp.net?asp.net是一個事件驅(qū)動的、基于控件的體系結(jié)構(gòu),利用.net framework的system.web類中所描述的功能,從服務(wù)器端代碼生成內(nèi)容和動態(tài)客戶端代碼。asp.net運(yùn)行在web服務(wù)器上。它獲取頁面請求后,并執(zhí)行必要的服務(wù)器端代碼來生成web頁面,這個web頁面會在響應(yīng)中被發(fā)送到瀏覽器。a

41、sp.net是事件驅(qū)動的-asp.net頁面能夠觸發(fā)事件,我們可以編寫服務(wù)器端代碼來響應(yīng)那些事件。這些事件包括用戶輸入動作(比如用戶單擊按鈕或從頁面下拉列表中選擇一個項(xiàng)目),以及頁面生命周期中所發(fā)生的事件(比如page_load事件,加載頁面時會觸發(fā)這個事件)。asp.net是基于控件的asp.net在很大程度上依賴于具有可視功能的元素服務(wù)器控件。asp.net與asp的區(qū)別可重用 性 在寫asp應(yīng)用程序的時候,asp代碼和html混合在一起。只要有需要,就可以在任意的一個位置插入一段代碼來實(shí)現(xiàn)特定的功能。這種方法表面上看起來很方便,但在實(shí)際的工作中會產(chǎn)生大量繁瑣的頁面,很難讀懂,導(dǎo)致代碼維護(hù)

42、很困難。雖然可以使用include指令盡量讓程序模塊化,但是仍然不是一個最終徹底的解決方案。而asp.net則可以實(shí)現(xiàn)代碼和內(nèi)容的完全分離,使得前面提到的問題迎刃而解 。例: 2.1代碼量asp需要對所有的要實(shí)現(xiàn)的功能通過編寫代碼來實(shí)現(xiàn)。在asp.net中,程序員會發(fā)現(xiàn)只要預(yù)先說明,這樣的功能asp.net就可以自動實(shí)現(xiàn)。所以相對來說,要實(shí)現(xiàn)同樣的功能,使用asp.net比使用asp的代碼量要小得多。 2.2 asp.net頁的結(jié)構(gòu)code-behind技術(shù),即代碼分離(或后臺代碼模式)優(yōu)點(diǎn)頁面布局更簡單,后臺代碼邏輯清晰;發(fā)布后,后臺代碼不會暴露于頁面文件中,更有利于代碼的保密web窗體工作

43、原理當(dāng)iis收到瀏覽器對某個asp.net頁面的第一次請求時,請求會傳送給asp.net解析器,asp.net依據(jù)該頁面生成類文件,創(chuàng)建完該文件后,類文件被編譯為dll文件,然后實(shí)例化該dll文件,為該頁面的請求生成輸出,如上圖所示。下一個請求到來時,不必在創(chuàng)建dll,該請求直接實(shí)例化已創(chuàng)建的dll,,該dll發(fā)送響應(yīng)給請求者。.aspx與.aspx.cs 建立一個新程序,讓大家看到生成web窗體頁是靜態(tài)文本和控件的容器,它由兩部分組成:可視化元素(html、服務(wù)器控件和靜態(tài)文本)和該頁的編輯邏輯。visual studio.net將這兩個組成部分分別存儲在一個單獨(dú)的文件中??梢曉卦谝粋€.a

44、spx文件中創(chuàng)建,而代碼位于一個單獨(dú)的類文件中,該文件稱作代碼隱藏類文件(.aspx.vb或.aspx.cs)。根據(jù)使用的語言是visual basic.net或是visual c#.net,其擴(kuò)展名為 .aspx 或 .ascx 。asp.net 2.0的指令,使用指令可以以聲明的方式設(shè)置頁面的屬性和行為,下面是page指令的一個例子:例2.1這些指令都是編譯器編譯頁面時使用指令對頁面進(jìn)行處理。指令的格式如下:指令以結(jié)束。最好把這些指令放在頁面或控件的頂部,把多個屬性添加到指令語句中,如下所示:在asp.net頁面或用戶控件中有11個指令。指 令說 明assembly把程序集鏈接到與它相關(guān)的

45、頁面或用戶控件上control用戶控件(.ascx)使用的指令,其含義與page指令相當(dāng) implements實(shí)現(xiàn)指定的.net framework接口import在頁面或用戶控件中導(dǎo)入指定的命名空間master允許指定master頁面 在解析或編譯頁面時使用的特定屬性和值。這個指令只能與master頁面(.master)一起使用mastertype把類名與頁面關(guān)聯(lián)起來,獲得包含在特定master頁面中的強(qiáng)類型化的引用或成員outputcache控制頁面或用戶控件的輸出高速緩存策略page允許指定在解析或編譯頁面時使用的頁面特定屬性和值。這個指令只能與asp.net頁面(.aspx)一起使用p

46、reviouspagetype允許asp.net頁面處理應(yīng)用程序中另一個頁面的回送信息reference把頁面或用戶控件鏈接到當(dāng)前的頁面或用戶控件上register給命名空間和類名關(guān)聯(lián)上別名,作為定制服務(wù)器控件語法中的記號page指令屬 性說 明aspcompat若其值為true,就允許頁面在單線程的單元中執(zhí)行,這個屬性的默認(rèn)設(shè)置是false。async指定asp.net頁面是同步或異步處理autoeventwireup設(shè)置為true時,指定頁面事件自動觸發(fā)。這個屬性的默認(rèn)設(shè)置是truebuffer設(shè)置為true時,支持http響應(yīng)緩存。這個屬性的默認(rèn)設(shè)置是trueclassname指定編譯頁

47、面時綁定到頁面上的類名codefile引用與頁面相關(guān)的后臺編碼文件codepage指定響應(yīng)的代碼頁面值compileroptions編譯器字符串,指定頁面的編譯選項(xiàng)compilewith包含一個string值,指向所使用的后臺編碼文件contenttype把響應(yīng)的http內(nèi)容類型定義為標(biāo)準(zhǔn)mime類型culture指定頁面的文化設(shè)置。asp.net 2.0允許把culture 屬性的值設(shè)置為auto ,支持自動檢測需要的文化debug設(shè)置為true時,用調(diào)試符號編譯頁面description提供頁面的文本描述。asp.net解析器忽略這個屬性及其值enablesessionstate設(shè)置為tr

48、ue時,支持頁面的會話狀態(tài),其默認(rèn)設(shè)置是trueenabletheming設(shè)置為true時,頁面可以使用主題。其默認(rèn)設(shè)置是false.enableviewstate設(shè)置為true時,在頁面中維護(hù)視圖狀態(tài),其默認(rèn)設(shè)置是true enableviewstatemac設(shè)置為true時,當(dāng)用戶回送頁面時,頁面會在視圖狀態(tài)上進(jìn)行機(jī)器范圍內(nèi)的身份驗(yàn)證,其默認(rèn)設(shè)置是falseerrorpage為所有未處理的頁面異常指定用于發(fā)送信息的urlexplicit設(shè)置為true時,支持visual basic的explicit選項(xiàng)。其默認(rèn)設(shè)置是falselanguage定義內(nèi)置顯示和腳本塊所使用的語言lcid為web

49、 form的頁面定義本地標(biāo)識符linepragmasboolean值,指定得到的程序集是否使用行附注masterpagefile帶一個 string 值,指向頁面所使用的master頁面的地址。這個屬性在內(nèi)容頁面中使用maintainscrollpositiononpostback帶一個boolean 值,表示在回送頁面時,頁面是位于相同的滾動位置上,還是在最高的位置上重新生成頁面personalizationprovider帶一個 string 值,指定把個性化信息應(yīng)用于頁面時所使用的個性化提供程序名responseencoding指定頁面內(nèi)容的響應(yīng)編碼asp.net的服務(wù)器端腳本服務(wù)器腳本

50、也是頁面的一部分,但它不發(fā)送至瀏覽器,而是在請求頁面之后和在回送至瀏覽器之前由服務(wù)器處理這些腳本服務(wù)器端代碼聲明塊必須具有 runat=server 屬性2.3 page事件(頁面事件)asp.net2.0運(yùn)行機(jī)制 當(dāng)visual studio.net為web窗體頁創(chuàng)建頁和類文件時,它將生成從基page類繼承的代碼。例如,如果創(chuàng)建新的web窗體頁將其命名為webpage1,則會從system.web.ui.page派生一個名為webpage1的新類。如下圖所示,闡釋了page基類、派生的類文件和.aspx文件的關(guān)系。由于.aspx文件在用戶瀏覽該頁面時會動態(tài)地進(jìn)行編譯,它與類文件的關(guān)系將通過頁

51、頂部的腳本指令來建立。在visual studio.net中,即使將web窗體頁重命名,.aspx文件和類文件之間的關(guān)系仍會自動創(chuàng)建和維護(hù)。具體地說,page指令的inherits屬性用于指定.aspx文件派生自的類文件。當(dāng)用戶請求網(wǎng)頁時,即執(zhí)行這個類,并將產(chǎn)生的html代碼提交給瀏覽器以顯示輸出,然后將此類從內(nèi)存中刪除。(.aspx與派生類)page類表示從asp.net web應(yīng)用程序的宿主服務(wù)器請求的.aspx文件(又稱為web窗體頁)。page類成員駐留在system.web.ui命名空間中,它提供給asp.net頁許多有效的屬性和方法。每個頁面都派生自page類,并繼承這個類公開的所

52、有方法和屬性。page對象充當(dāng)頁中所有服務(wù)器控件命名容器。page類與擴(kuò)展名為.aspx的文件相關(guān)聯(lián),這些文件在運(yùn)行時編譯為page對象,并緩存在服務(wù)器內(nèi)存中。asp.net使用服務(wù)器控件和消息回送引入了事件驅(qū)動編程。web窗體中的代碼和與此窗體關(guān)聯(lián)的所有代碼隱藏類中的代碼都在運(yùn)行時被編譯到程序集中。當(dāng)執(zhí)行此程序集中的代碼時,將觸發(fā)由page類或添加至頁面的服務(wù)器控件的事件,如果應(yīng)用程序具有對應(yīng)于該事件的事件處理程序,則調(diào)用該事件處理程序。在事件處理程序完成處理后,應(yīng)用程序?qū)⒂墒录幚沓绦蚋倪^的頁回送至瀏覽器。web 窗體生命周期 窗體的生命周期就是指窗體從加載到卸載的時間段。對于web窗體

53、來說,當(dāng)瀏覽器請求頁面時,web窗體首先被加載,然后處理窗體和控件的事件,并將html的輸出內(nèi)容返回到瀏覽器,最后,窗體會從內(nèi)存中刪除或卸載。所以,web窗體在瀏覽器每次請求它時,都存在該web窗體加載存取和卸載的周期。web服務(wù)器上web窗體的生命周期包括以下幾個階段。l 配置階段:在web服務(wù)器上,web窗體生命周期的第一個階段相當(dāng)于傳統(tǒng)窗體的初始化階段。在這個階段,頁面和控件狀態(tài)被設(shè)置,然后引發(fā)加載頁面的事件。page_load事件被放置到每一個頁面中,對于web開發(fā)人員來說是一個很有用的工具,可以用來修改控件的屬性,建立數(shù)據(jù)綁定貨數(shù)據(jù)庫訪問,還可以在頁面上顯示到瀏覽器前恢復(fù)存儲信息。l

54、 事件處理階段:如果是瀏覽器第一次請求頁面,就沒有更深層的事件需要處理了。但是,如果頁面響應(yīng)一個窗體事件,那么在這個階段相應(yīng)的事件處理程序會被頁面調(diào)用,接著事件處理代碼會被運(yùn)行。l 顯示階段:在這一階段,web窗體根據(jù)事件處理階段的結(jié)果生成滿足瀏覽器要求的html,發(fā)送到客戶端。l 清除階段:在web窗體的生命周期中,這是最后一個階段,相當(dāng)于form_unload事件處理程序。在進(jìn)程結(jié)束時,web窗體會自動被刪除。清除階段通過處理程序調(diào)用page_unload事件處理由于關(guān)閉文件和連接數(shù)據(jù)庫造成的錯誤,同時釋放窗體中已經(jīng)不再使用的對象。因此,對于web窗體中每個需要處理的動作,都會發(fā)送到服務(wù)器

55、,由服務(wù)器對其進(jìn)行處理,然后再返回給瀏覽器。可以通過以下示例解釋web窗體的生命周期。下表為頁面處理各個階段引發(fā)的事件頁事件典型使用preinit頁初始化期間,可以使用頁中的控件,并將設(shè)置每個控件的 uniqueid 屬性(此屬性與 id 屬性不同,因?yàn)?uniqueid 屬性包含服務(wù)器控件命名容器的標(biāo)識符。處理頁請求時自動生成此標(biāo)識符。)。此外,任何主題都將應(yīng)用于頁。如果當(dāng)前請求是回發(fā)請求,則回發(fā)數(shù)據(jù)尚未加載,并且控件屬性值尚未還原為視圖狀態(tài)中的值。在這個頁面級的事件中,所有在設(shè)計(jì)時創(chuàng)建的控件都將被用默認(rèn)值做初始化。例如,如果你有一個text屬性值為“hello”的textbox控件,則此時這個屬性被設(shè)置。注意,我們只能在preinit()事件中動態(tài)的設(shè)置themes;如果一個頁有其相關(guān)聯(lián)的母版頁的話,那么在preinit()事件里頁中的所有控件都不會被初始化。而只有在init()事件開始之后,你才能直接訪問這些控件。使用該事件來執(zhí)行下列操作:檢查 ispostback 屬性來確定是不是第一次處理該頁。 【 if (page.isp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論