




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、常見問題匯總?cè)绻恍⌒碾p擊了網(wǎng)頁,則VS2005會(huì)打開網(wǎng)頁后臺(tái)處理程序錄入界面(見圖2-18)。其文件名和網(wǎng)頁文件名相同,但擴(kuò)展名為“.cs”的文件。圖2-18 網(wǎng)頁配套程序錄入界面遇到這種情況時(shí),不要慌亂,也不要?jiǎng)h除程序網(wǎng)頁的任何內(nèi)容,更不能單擊撤銷按鈕,程序錄入界面中的語句是與網(wǎng)頁配套的處理程序,其中很多是自動(dòng)生成的。隨意修改、刪除或撤銷,都會(huì)導(dǎo)致網(wǎng)頁無法運(yùn)行的嚴(yán)重后果。要回到網(wǎng)頁的設(shè)計(jì)界面,只需單擊VS2005上部的網(wǎng)頁標(biāo)簽“注冊(cè)頁.aspx”即可。為了引起重視,可以做一次實(shí)驗(yàn):雙擊網(wǎng)頁,即會(huì)打開配套程序錄入頁“注冊(cè)頁.aspx.cs”,然后右擊頁標(biāo)簽,選擇“關(guān)閉”或點(diǎn)擊 “注冊(cè)頁.as
2、px” 標(biāo)簽,均能回到設(shè)計(jì)狀態(tài)。由此,我們也可以了解到,和一個(gè)網(wǎng)頁相關(guān)的界面有三個(gè):一是網(wǎng)頁外觀設(shè)計(jì)界面,二是網(wǎng)頁代碼界面,即“源”界面,三是網(wǎng)頁后臺(tái)處理程序的錄入界面。比如一個(gè)按鈕,在設(shè)計(jì)界面上我們可以直觀的看到或設(shè)置按鈕的樣式,在“源”界面中會(huì)有此按鈕的位置/大小/顏色等描述代碼,在程序界面中可能會(huì)有單擊按鈕時(shí)要實(shí)現(xiàn)的功能語句。2.1 運(yùn)行注冊(cè)頁單擊 “注冊(cè)頁.aspx” 標(biāo)簽à單擊VS2005工具欄中的啟動(dòng)調(diào)試(即試運(yùn)行網(wǎng)頁)按鈕,屏幕會(huì)彈出圖2-19所示的調(diào)試對(duì)話框。圖2-19 啟動(dòng)調(diào)試對(duì)話框這時(shí)應(yīng)選擇第一項(xiàng),啟動(dòng)調(diào)試。這項(xiàng)功能的作用是:一個(gè)程序設(shè)計(jì)完成后運(yùn)行時(shí),如果出錯(cuò)了,
3、則可以通過單步運(yùn)行,或中途暫停等手段,找出錯(cuò)誤,迅速排除。它是一個(gè)復(fù)雜網(wǎng)站設(shè)計(jì)過程中肯定會(huì)用到的一個(gè)功能。但就如同圖中的警告一樣,將來網(wǎng)頁真正要傳到網(wǎng)上時(shí),一定不要忘記禁止此項(xiàng)功能,否則這項(xiàng)功能會(huì)大大加重服務(wù)器負(fù)擔(dān),網(wǎng)頁訪問也會(huì)變得很慢。此項(xiàng)設(shè)置將在最后一章介紹。重要提示:?jiǎn)螕舸_定后,如果本機(jī)安裝了網(wǎng)絡(luò)防火墻,網(wǎng)絡(luò)防火墻會(huì)在屏幕右下角彈出類似圖2-20所示的詢問提示。圖2-20 詢問是否允許VS2005模仿網(wǎng)絡(luò)服務(wù)器的提示這時(shí),千萬不要簡(jiǎn)單的單擊確定按鈕,這樣就選擇了默認(rèn)的“禁止”,即不允許VS2005運(yùn)行網(wǎng)站,這將導(dǎo)致無法看到網(wǎng)頁在互聯(lián)網(wǎng)上被訪問時(shí)的結(jié)果。如果不小心選錯(cuò)了,則需要找到防火墻的
4、設(shè)置選項(xiàng),重新將此項(xiàng)功能設(shè)為“允許”。接下來還會(huì)有一個(gè)看似同樣的提示(見圖2-21),我們同樣需要選擇“總是允許”。圖2-21 詢問是否允許VS2005訪問互聯(lián)網(wǎng)的提示之后,需要等待較長(zhǎng)時(shí)間,VS2005才會(huì)將一個(gè)圖2-22所示的空白網(wǎng)頁“產(chǎn)生”出來,顯現(xiàn)在屏幕上。這并不是因?yàn)閂S2005慢或主機(jī)性能低,而是因?yàn)閂S2005要在本機(jī)上模擬一臺(tái)網(wǎng)絡(luò)服務(wù)器。重要提示:最好不要在網(wǎng)頁運(yùn)行時(shí)在VS2005中做任何修改,VS2005在運(yùn)行網(wǎng)頁時(shí)會(huì)禁止修改設(shè)計(jì)界面,這時(shí)不要以為VS2005突然死機(jī),而是正處于運(yùn)行狀態(tài),還沒有回到設(shè)計(jì)狀態(tài)。在網(wǎng)頁運(yùn)行時(shí),“源”界面和程序界面中的內(nèi)容雖然可以修改,但也無法立即
5、在正在運(yùn)行的網(wǎng)頁中反映出修改結(jié)果,因此,在運(yùn)行時(shí)如果發(fā)現(xiàn)了問題,一般應(yīng)關(guān)閉正在運(yùn)行的網(wǎng)頁,或單擊VS2005屏幕左上角工具欄內(nèi)的停止按鈕,重新回到設(shè)計(jì)狀態(tài)。工具箱中的各種控件是經(jīng)過分組的。單擊加粗的每組組名前的折疊按鈕“”,本組即會(huì)折疊起來,之后按鈕變成了“”樣式,單擊此按鈕,本組即會(huì)展開。所有組折疊后的結(jié)果如圖2-31所示。圖2-31 工具箱中的所有組別問題解釋:1. 為什么屬性窗口中的條目總在變化這是因?yàn)閷傩源翱谥辛谐龅氖沁x定目標(biāo)的屬性。比如光標(biāo)在網(wǎng)頁的空白處時(shí),屬性窗口中顯示的是有關(guān)網(wǎng)頁的設(shè)置選項(xiàng);光標(biāo)放在表格內(nèi)的空白處時(shí),屬性窗口中顯示的是此單元格的屬性選項(xiàng);光標(biāo)放在文本框上時(shí),屬性窗
6、口中顯示的是文本框的各種設(shè)置選項(xiàng)。因此,在調(diào)出屬性窗口前,一定要注意光標(biāo)在哪個(gè)目標(biāo)上。2. 為什么在屬性窗口中,找不到要設(shè)的項(xiàng)很多時(shí)候,打開屬性窗口,卻找不到要設(shè)的項(xiàng)。原因很多,最常見的原因是我們的鼠標(biāo)沒有選定要設(shè)的目標(biāo)。比如要設(shè)置單選列表控件,但光標(biāo)卻在文本框上,這時(shí)就會(huì)找不到我們要設(shè)的項(xiàng),即使找到了,也是兩類控件共有的項(xiàng),這樣,即使能設(shè)置,也是設(shè)錯(cuò)了對(duì)象。因此,在調(diào)出屬性窗口前,一定要注意光標(biāo)在哪個(gè)目標(biāo)上。不過,我們可以通過觀察屬性窗口上部的提示,很容易發(fā)現(xiàn)選錯(cuò)了目標(biāo)(見圖2-37)。在屬性窗口最上端,顯示著當(dāng)前正要設(shè)置的目標(biāo)的名字。 圖2-37 屬性設(shè)置窗口即使目標(biāo)沒有選錯(cuò),有時(shí)也會(huì)找不
7、到要設(shè)的項(xiàng),原因可能是電腦反應(yīng)比較遲鈍。這時(shí),可以通過單擊屬性窗口右上角的下拉按鈕“”,從中找到要設(shè)的目標(biāo)即可。這種方法也很常用。3. 如何快速找到要設(shè)的項(xiàng)屬性窗口中的條目默認(rèn)是按類別分組的,幾乎所有控件都有圖2-38所示的屬性組。每個(gè)組分類依據(jù)見表2-1。分類顯示對(duì)于不熟悉其中選項(xiàng)的人而言,找到要設(shè)的項(xiàng)很不容易,有時(shí)需要從頭到尾找?guī)妆?。圖2-38 屬性分組表2-1 屬性組說明組說明布局本控件的位置、大小等可訪問性本控件和操作有關(guān)的一些設(shè)置項(xiàng)。如快捷鍵數(shù)據(jù)本控件和數(shù)據(jù)庫連接有關(guān)屬性外觀本控件的字體、字號(hào)、顏色等行為在后幾章用到時(shí),自然會(huì)明白的雜項(xiàng)快速查找設(shè)置項(xiàng)的方法是單擊屬性窗口中的“”按鈕,
8、所有屬性即會(huì)按拼音順序從A到Z順序排列,這時(shí)再找條目時(shí),就快了許多(如果單擊“”按鈕,屬性會(huì)回到按組分類狀態(tài))。如果一個(gè)條目前面有個(gè)“”(見圖2-38),則表示本條目包含多條子項(xiàng)設(shè)置,單擊此按鈕,可顯示出各子項(xiàng)。當(dāng)我們?cè)O(shè)計(jì)水平到一定程度時(shí),有時(shí)就需要展開各項(xiàng),從中查找可以設(shè)置的某個(gè)功能。網(wǎng)頁,回到設(shè)計(jì)狀態(tài)。2.2 實(shí)現(xiàn)控件與數(shù)據(jù)庫的對(duì)接數(shù)據(jù)庫和網(wǎng)頁外觀都已經(jīng)設(shè)計(jì)完成,但兩者之間還沒有聯(lián)系,本節(jié)將實(shí)現(xiàn)注冊(cè)頁面和數(shù)據(jù)庫的對(duì)接,為網(wǎng)頁和數(shù)據(jù)庫搭起橋梁,只有這樣,用戶在注冊(cè)時(shí)填寫在網(wǎng)頁上的數(shù)據(jù)才能存入數(shù)據(jù)庫。VS2005提供了擔(dān)當(dāng)“橋梁”重任的控件,它在工具箱的數(shù)據(jù)組內(nèi),專業(yè)名稱為數(shù)據(jù)源控件。不同的數(shù)
9、據(jù)庫使用不同的數(shù)據(jù)源控件,本書所用的數(shù)據(jù)庫為Access,因此,需要使用的數(shù)據(jù)源控件為AccessDataSource(見圖2-41)。圖2-41 工具箱中的數(shù)據(jù)源通過將數(shù)據(jù)源控件添加到網(wǎng)頁,并通過AccessDataSource進(jìn)行一些簡(jiǎn)單設(shè)置,就可以實(shí)現(xiàn)控件與數(shù)據(jù)庫的對(duì)接(見圖2-42),這樣,當(dāng)用戶單擊“提交”按鈕后,橋梁即會(huì)將用戶注冊(cè)信息從網(wǎng)頁內(nèi)收集起來,并正確寫入數(shù)據(jù)庫中相應(yīng)的列內(nèi)。表內(nèi)控件“橋梁”數(shù)據(jù)庫程序的寫入指令圖2-42 數(shù)據(jù)對(duì)接示意圖以下將介紹對(duì)接的設(shè)置過程,其中:環(huán)節(jié):創(chuàng)建橋梁,見2.9.1小節(jié);環(huán)節(jié):連接數(shù)據(jù)表,見.4小節(jié);環(huán)節(jié):連接網(wǎng)頁控件,實(shí)現(xiàn)對(duì)接。
10、見2.9.5小節(jié);環(huán)節(jié):編寫插入程序,用戶信息寫入數(shù)據(jù)庫。見2.10節(jié)。2.7.8添加比較控件注意:驗(yàn)證組內(nèi)的幾種控件的名稱很容易混淆,因此,添加時(shí)一定要小心。重要提示:在鍵入每個(gè)ValidationExpression屬性值時(shí),一定要注意使用英文標(biāo)點(diǎn)符號(hào),一定要區(qū)分大小寫(第二行的S為大寫),總之,輸入時(shí)一定要小心,否則會(huì)使用戶即使輸入正確,也會(huì)出現(xiàn)錯(cuò)誤提示,也無法提交。2.8.1 添加數(shù)據(jù)對(duì)接控件從工具箱的“數(shù)據(jù)”組中,拖出一個(gè)AccessDataSource控件到網(wǎng)頁的“新會(huì)員注冊(cè)”文字后面??丶先刖W(wǎng)頁后,網(wǎng)頁上會(huì)顯示其名字為AccessDataSource1(見圖2-43)。圖2-4
11、3 Access數(shù)據(jù)源控件外觀添加數(shù)據(jù)源控件后,會(huì)發(fā)現(xiàn)它占用一行位置,我們會(huì)感覺標(biāo)題格變寬了,實(shí)際上在運(yùn)行時(shí),這一控件是不占位置的,它是一個(gè)運(yùn)行時(shí)不可見控件,永遠(yuǎn)不可能出現(xiàn)在瀏覽者的網(wǎng)頁上。如果要專心設(shè)置頁面布局,則有這個(gè)控件還是感覺很不舒服,無法讓我們更專心于網(wǎng)頁排版。不過VS2005已經(jīng)為我們想到了這一點(diǎn)。單擊VS2005“視圖”菜單,單擊“非可視控件”菜單項(xiàng)(見圖2-44),即會(huì)去除此項(xiàng)的選定,并且會(huì)發(fā)現(xiàn)網(wǎng)頁上的數(shù)據(jù)源控件“消失”了,表格重新回到原來的狀態(tài)。再次單擊“非可視控件”菜單項(xiàng),即會(huì)重新顯示出數(shù)據(jù)源控件。一般情況下,除非專門調(diào)整網(wǎng)頁外觀,否則一般都會(huì)讓這些起關(guān)鍵作用的非可視控件顯
12、示在設(shè)計(jì)界面。圖2-44 非可視控件是否顯示選項(xiàng)菜單2.8.2 確認(rèn)數(shù)據(jù)庫存在在設(shè)置數(shù)據(jù)源連接數(shù)據(jù)表之前,必須先確定數(shù)據(jù)庫存在。調(diào)出解決方案管理器窗口(這個(gè)窗口一般位于屏幕右側(cè)),查看窗口內(nèi)有無已建好的數(shù)據(jù)庫名“zz數(shù)據(jù)庫.mdb”。此文件存放在App_Data文件夾內(nèi)(見圖2-45)。這是一個(gè)受系統(tǒng)保護(hù)的文件夾,網(wǎng)絡(luò)服務(wù)器會(huì)禁止任何人打開或下載這一文件夾中的任何文件。有人曾將網(wǎng)頁上的圖片放在了這一文件夾內(nèi),結(jié)果運(yùn)行網(wǎng)頁時(shí),總也無法顯示這些圖片,原因就在于他的圖片放錯(cuò)了文件夾。圖2-45 刷新網(wǎng)站重要提示:數(shù)據(jù)庫必須放在App_Data文件夾內(nèi),這是保證數(shù)據(jù)不被人非法竊取的最基本的前提。問題解
13、答:管理器窗口內(nèi)數(shù)據(jù)庫文件不存在怎么辦?1. 如果文件夾內(nèi)確實(shí)沒有,可以單擊窗口上方的刷新按鈕。2. 如果還是沒有,則說明數(shù)據(jù)庫設(shè)計(jì)時(shí),沒有保存在此文件夾內(nèi),這時(shí)就需要從“我的電腦”中,找到已設(shè)計(jì)好的數(shù)據(jù)庫,復(fù)制到“E:蜘蛛網(wǎng)App_Data”文件夾內(nèi),或重新設(shè)計(jì)并保存到此文件夾內(nèi)。3. 如果有,但是數(shù)據(jù)庫文件不在App_Data文件夾內(nèi),而是和注冊(cè)頁同在一級(jí)上,這時(shí)可以用鼠標(biāo)將其拖入App_Data文件夾。總之,只有保證數(shù)據(jù)庫存在,才能繼續(xù)以下的設(shè)計(jì)。2.9.3程序說明1. 關(guān)于顏色:語句輸入時(shí),其中的紅色字如果在紅色雙引號(hào)之內(nèi),并不表示程序有錯(cuò)誤,按照VS2005的約定,紅色為字符串、藍(lán)色
14、為VS2005專用詞,又叫關(guān)鍵字。青色是一種VS2005專用的一種稱為類的專用詞,讀者暫且無需明白什么是類。2. 本程序使用了一個(gè)組合語句try catch( ),翻譯成中文意思為:“要做一件事,做做試試;不行就找原因,聲明我做不了”。3. AccessDataSource1.Insert:執(zhí)行數(shù)據(jù)源1的插入功能;即讓數(shù)據(jù)源1插入一條記錄,將注冊(cè)信息寫入數(shù)據(jù)庫。4. 注意,AccessDataSource1的最后一個(gè)字符是數(shù)字1,不是英文字符L。5. 1和L、0和O混淆,true寫成ture是初學(xué)者特別容易出現(xiàn)的錯(cuò)誤。6. Response:中文翻譯為”回應(yīng)”,單擊后的回應(yīng)一般是一個(gè)對(duì)話框或一
15、個(gè)新網(wǎng)頁?!癛esponse.Write("<script>window.alert('重復(fù)注冊(cè)或網(wǎng)絡(luò)異常')</script>");”為一固定寫法,其功能是彈出一個(gè)對(duì)話框,框內(nèi)文字為“重復(fù)注冊(cè)或網(wǎng)絡(luò)異?!?。7. 說明:以后要編寫彈出對(duì)話框語句時(shí),只需復(fù)制此語句,然后修改框內(nèi)文字即可。8. Exception:中文翻譯為”異?!?,即外部因素引起的程序無法執(zhí)行。程序異常不是程序錯(cuò)誤,程序錯(cuò)誤是程序編寫不正確。catch (Exception ee)即捕獲異常,不讓異常擴(kuò)散。如果程序沒有57行,當(dāng)執(zhí)行插入遇到異常時(shí),網(wǎng)頁就會(huì)出現(xiàn)一長(zhǎng)篇滿是
16、英文和代號(hào)的錯(cuò)誤頁,而不是一個(gè)友好的異常提示對(duì)話框。9. 程序編寫完畢,VS2005會(huì)在屏幕底部錯(cuò)誤列表窗口中顯示如圖2-54所示內(nèi)容。圖2-54 錯(cuò)誤列表窗口本窗口中可列出的錯(cuò)誤有兩類,一類為警告“”,或者說是編程建議,這類問題不是錯(cuò)誤,而是說程序可能不夠完善,但這類問題不會(huì)影響程序運(yùn)行。另一類為程序編寫錯(cuò)誤“”,這類錯(cuò)誤一定要排除,否則網(wǎng)頁無法正常運(yùn)行。重要提示:1. 程序中的字母要區(qū)分大小寫,VS2005嚴(yán)格區(qū)分大小寫,A和a是完全不同的。一字之錯(cuò),即會(huì)導(dǎo)致程序無法運(yùn)行。2. 在運(yùn)行網(wǎng)頁之前,一定要查看“錯(cuò)誤列表”窗口中有無程序錯(cuò)誤提示,如果存在,一定要改正之后再運(yùn)行。程序書寫并檢查無誤
17、,單擊全部保存按鈕,再單擊運(yùn)行按鈕,試填寫一個(gè)注冊(cè)信息,并提交,看是否出現(xiàn)已保存提示。測(cè)試完畢,關(guān)閉網(wǎng)頁,回到設(shè)計(jì)狀態(tài)。思考題:1. 如何啟動(dòng)VS2005,并建立一個(gè)注冊(cè)頁。2. 起始頁關(guān)閉后怎么打開,或文件關(guān)閉后怎樣打開?3. 如何在網(wǎng)頁中插入表格?怎么調(diào)整表格的寬度大小?4. 如何對(duì)用戶名、姓名等選項(xiàng)進(jìn)行設(shè)置成必填項(xiàng);密碼和確認(rèn)密碼設(shè)置為不能為空并且使輸入的密碼為不可見;同時(shí)如何驗(yàn)證密碼與確認(rèn)密碼輸入的是否一致?5. 如何設(shè)置擴(kuò)充地址選項(xiàng)的寬度?6. 如何設(shè)置性別選項(xiàng),使其成為二選一按鈕。7. 如何建立數(shù)據(jù)庫與網(wǎng)頁之間的鏈接?8. 如何使用Access2003建立數(shù)據(jù)庫和數(shù)據(jù)表?1.5.4
18、 代碼改變狀態(tài)的通知文檔窗口的另一個(gè)變化是包含一個(gè)新的代碼改變通知系統(tǒng)。在處理頁面上的代碼時(shí),注意現(xiàn)在默認(rèn)包含行號(hào)。單擊任意行號(hào),就會(huì)突出顯示該行代碼。行號(hào)旁邊的是一個(gè)顏色改變欄,如圖2-7所示。圖 2-7這個(gè)顏色欄通知用戶ASP.NET頁面中的代碼發(fā)生了變化。如果某一行代碼沒有顯示顏色欄,就表示還未對(duì)該行代碼進(jìn)行修改。在對(duì)某行代碼作了修改后,該行的前面就會(huì)顯示一個(gè)黃色欄。保存了文件后,這個(gè)顏色欄會(huì)變成綠色。黃色代碼行表示已進(jìn)行了修改,但未保存到文件中。在圖2-7的黑白屏幕圖中,看不出第 13、14和15行旁邊的黃色欄,但可以看出它們的陰影有區(qū)別。顏色的差異(與其余代碼
19、行的顏色欄相比)表示這些代碼不久前進(jìn)行了修改。1.5.5 錯(cuò)誤通知和輔助在Visual Studio的以前版本中,設(shè)計(jì)期間的錯(cuò)誤檢查是IDE的一個(gè)重要特性,在輸入代碼的過程中,Visual Studio會(huì)檢查代碼中是否有錯(cuò)誤。例如,如果輸入了If Then語句(使用Visual Basic),但沒有包含End If語句,IDE就會(huì)給If Then語句加上下劃線,提醒用戶語句塊不完整。在更正錯(cuò)誤后,下劃線就會(huì)消失。在Visual Studio 2005中,如果設(shè)計(jì)期間出錯(cuò),就會(huì)在下劃線的右邊出現(xiàn)一個(gè)小方框,如圖2-8所示。圖 2-8把光標(biāo)放在該方框上,就會(huì)顯示一個(gè)錯(cuò)誤符號(hào)
20、,單擊該錯(cuò)誤符號(hào),會(huì)打開一個(gè)對(duì)話框,其中給出了更正錯(cuò)誤的選項(xiàng)。例如,如果在Visual Basic中使用了If Then語句,但沒有使用End If語句,單擊Error Notification按鈕就會(huì)在IDE中顯示一個(gè)更正對(duì)話框,如圖2-9所示。圖 2-9這個(gè)彈出的對(duì)話框首先陳述問題。在這個(gè)例子中,它說明任何打開的If語句必須包含一個(gè)閉合的End If語句。在這個(gè)錯(cuò)誤通知的下面是一個(gè)鏈接,允許進(jìn)行更正。在鏈接的下面是一個(gè)代碼示例,說明該更正會(huì)如何影響代碼。有時(shí),更正設(shè)計(jì)期間的錯(cuò)誤有多個(gè)選項(xiàng)。例如,在ASP.NET頁面中有如下代碼:Dim x As Integr其中,Integr拼
21、寫不正確;正確的拼寫是Integer。IDE通知用戶出了這個(gè)錯(cuò)誤,并打開相關(guān)的錯(cuò)誤對(duì)話框。更正這個(gè)錯(cuò)誤有3個(gè)選項(xiàng),如圖2-10所示。要更正它,可以滾動(dòng)到合適的更正選項(xiàng)上,單擊該鏈接。圖 2-10重要提示:一定不要將非數(shù)據(jù)庫文件放入“解決方案資源管理器”App_Data文件夾內(nèi),否則在瀏覽網(wǎng)頁時(shí),會(huì)無法顯示。而且一般應(yīng)在“解決方案資源管理器”內(nèi)單獨(dú)創(chuàng)建一個(gè)名為pic或img等的文件夾,將圖片一類的文件保存在此類文件夾內(nèi)。1. 確定登錄控件處于選定狀態(tài)確定方法為查看登錄控件四周是否有三個(gè)小方框(見圖3-11)。這三個(gè)小方框的作用是調(diào)整控件大小,必須用鼠標(biāo)按住三者之一,才能用鼠標(biāo)縮放控件
22、的長(zhǎng)度或?qū)挾取S捎谶@兩個(gè)控件在運(yùn)行時(shí)不可見,不會(huì)占用網(wǎng)頁空間,因此,它們?cè)诰W(wǎng)頁上的位置和順序均沒有必要考慮。程序中的兩個(gè)斜杠“/”為C#語言特有的標(biāo)志,它用以說明本行其后的文字為注釋文字,在程序中添加注釋是優(yōu)秀程序員的習(xí)慣,它可以大大提高程序的可讀性,幫助自己和其它閱讀程序的人更快的掌握程序的功能。但作為練習(xí),這兩個(gè)“/”和其后文字可以不必輸入。3.3.1 事件與編程事件,是目前流行的所有語言中的一個(gè)十分重要的概念。1. 什么是事件事件(Event),就是在某個(gè)控件(包括網(wǎng)頁本身)上發(fā)生的事情。比如一想到按鈕,人們會(huì)自然會(huì)想到在按鈕身上會(huì)有“Click”(點(diǎn)擊)事件。2. 如何知道一個(gè)控件都有
23、哪些事件以登錄框?yàn)槔壕唧w操作步驟如下:(1) 單擊VS2005上部的“Default.aspx”頁標(biāo)簽,切換到“設(shè)計(jì)”界面(見圖3-17)。(2) 單擊選中登錄控件Login1。(3) 按F4鍵,調(diào)出屬性窗口。(4) 單擊屬性窗口上部的事件按鈕。操作結(jié)果如圖3-17右側(cè)所示。圖3-17 登錄控件的“屬性/事件”窗口說明:要將屬性窗口設(shè)置回到顯示屬性方式,請(qǐng)單擊其左側(cè)的按鈕。從圖3-17所示的屬性窗口可以看出,窗口左側(cè)為事件列表,共有10種事件。其中第一個(gè)為Authenticate事件,它發(fā)生在“引發(fā)對(duì)用戶進(jìn)行身份驗(yàn)證”時(shí)刻,即單擊“登錄”按鈕時(shí)發(fā)生。在窗口的右側(cè),是事件對(duì)應(yīng)的程序,如果空白,
24、表示沒有對(duì)此事件編寫程序。圖中第一格顯示的是Login1_Authenticate,表示程序輸入窗口,即Default.aspx.cs中有一個(gè)名為L(zhǎng)ogin1_Authenticate的程序。由此可見,屬性窗口即是屬性顯示與設(shè)置窗口,又是事件顯示與選擇窗口。3. 排除事件錯(cuò)誤如果要?jiǎng)h除程序錄入界面中的某個(gè)程序,則一定要在某個(gè)控件的屬性窗口中找到此名稱,并且刪除。否則程序會(huì)運(yùn)行出錯(cuò)。為此,我們可以做一個(gè)實(shí)驗(yàn):(1) 雙擊HiddenField1控件,程序窗口中會(huì)打開并自動(dòng)生成一個(gè)名HiddenField1_ValueChanged的空程序(見圖3-18)。(2) 我們并沒有想針對(duì)HiddenFi
25、eld1編寫程序,因此,應(yīng)將圖中的22-25行刪除。(3) 單擊啟動(dòng)調(diào)試按鈕“”,運(yùn)行網(wǎng)頁,會(huì)出現(xiàn)圖3-19所示的錯(cuò)誤頁面。圖3-18 自動(dòng)產(chǎn)生的事件對(duì)程序圖3-19 缺少事件對(duì)應(yīng)程序錯(cuò)誤錯(cuò)誤頁面顯示,ID為HiddenField1的控件缺少HiddenField1_ValueChanged對(duì)應(yīng)的程序。這是因?yàn)槲覀儎倓倢⑵鋭h除。要排除這一錯(cuò)誤,需要繼續(xù)如下操作。(1) 切換到Default.aspx設(shè)計(jì)界面(見圖3-20);(2) 單擊選中HiddenField1;(3) 按F4鍵調(diào)出屬性窗口;(4) 單擊事件按鈕找到ValueChanged事件。會(huì)發(fā)現(xiàn)屬性/事件窗口中也自動(dòng)添加了一個(gè)對(duì)應(yīng)程序
26、名“HiddenField1_ValueChanged”。(5) 逐字刪除此事件對(duì)應(yīng)的程序名“HiddenField1_ValueChanged”。圖3-20 屬性/事件窗口中自動(dòng)添加的對(duì)應(yīng)程序名4. 事件是由誰規(guī)定的事件是由編寫控件的人規(guī)定的,VS2005中目前工具箱中的所有控件,都是微軟公司設(shè)計(jì)的,因此,每個(gè)控件的所有事件都是由微軟公司規(guī)定的。在使用控件事件時(shí),只有使用的權(quán)利,沒有規(guī)定一個(gè)控件是否具有哪種事件的權(quán)利。5. 事件對(duì)應(yīng)程序何時(shí)會(huì)得到執(zhí)行如果將程序?qū)懺谀撤N事件對(duì)應(yīng)的程序內(nèi),當(dāng)事件發(fā)生時(shí),就會(huì)執(zhí)行相應(yīng)的程序,如果事件總也不發(fā)生,則程序會(huì)總也得不到執(zhí)行。比如網(wǎng)頁訪問者在打開Defau
27、lt.aspx網(wǎng)頁后,總也不單擊登錄按鈕,就會(huì)總也不執(zhí)行Default.aspx.cs頁中的Login1_Authenticate程序。明白了什么是事件及事件發(fā)生的原因,就等于知道了編寫程序的時(shí)機(jī),將程序語句寫入合適的事件內(nèi),當(dāng)事件發(fā)生時(shí),就會(huì)執(zhí)行所寫程序,也就能夠得到程序員想要的結(jié)果。許多控件都有相同的事件。因此,學(xué)習(xí)時(shí)間長(zhǎng)了,自然會(huì)對(duì)控件的這些事件何時(shí)發(fā)生有更深的了解,現(xiàn)在不必急于將所有事件都明白的一清二楚。圖3-25 添加顯示明細(xì)控件通過觀察網(wǎng)頁運(yùn)行結(jié)果,讀者會(huì)發(fā)現(xiàn)如下問題:?jiǎn)栴}1:為什么網(wǎng)頁運(yùn)行后,未登錄前,顯示詳情控件內(nèi)不顯示任何數(shù)據(jù),登錄后就會(huì)顯示數(shù)據(jù)。問題解釋:顯示詳情控件的數(shù)據(jù)
28、源于數(shù)據(jù)源AccessDataSource1。數(shù)據(jù)源在取數(shù)據(jù)時(shí),有兩個(gè)限定條件(見圖3-24)一是用戶名=HiddenField1,二是密碼=HiddenField2,網(wǎng)頁剛剛運(yùn)行時(shí),這兩個(gè)隱藏輸入控件中的值全部為空,因此,數(shù)據(jù)源只能從數(shù)據(jù)庫中取得0個(gè)符合條件的數(shù)據(jù)。在登錄后,通過自編程序,為兩個(gè)隱藏輸入控件賦了值。數(shù)據(jù)源依據(jù)取數(shù)條件,從數(shù)據(jù)庫中取出了一條記錄,于是顯示詳情控件就將其顯示在了網(wǎng)頁上。問題2:雖然網(wǎng)頁上在登錄成功之后能夠顯示出已登錄者的用戶名和密碼,但有登錄框內(nèi)卻提示“登錄失敗,請(qǐng)重試”(見圖3-26)。問題解釋:按VS2005的要求,登錄框應(yīng)使用專用的數(shù)據(jù)庫存放用戶信息,而不是
29、我們的“zz數(shù)據(jù)庫.mdb”。本書沒有按照VS2005的要求設(shè)計(jì)出這樣一個(gè)數(shù)據(jù)庫,登錄框自然就無法找到登錄者信息,所以才會(huì)在登錄框內(nèi)顯示“登錄失敗,請(qǐng)重試”。但按本書的設(shè)計(jì),即便出現(xiàn)這樣的錯(cuò)誤提示,也并不表示程序有錯(cuò)。只要顯示明細(xì)內(nèi)能夠顯示出登錄者的用戶名和密碼,則表示設(shè)計(jì)正確。在完成本章設(shè)計(jì)后,讀者會(huì)發(fā)現(xiàn),網(wǎng)頁上將來不會(huì)在登錄成功會(huì)顯示這一錯(cuò)誤提示,僅僅會(huì)在用戶名或密碼輸入錯(cuò)誤后才顯示。問題3:在顯示明細(xì)控件中,密碼以明文的方式顯示,如何才能實(shí)現(xiàn)以“*”顯示。問題解釋:這只是暫時(shí)現(xiàn)象,下一節(jié)本書將會(huì)做一個(gè)小小的進(jìn)一步設(shè)計(jì),即會(huì)讓網(wǎng)頁訪問者永遠(yuǎn)都不會(huì)看到登錄者的密碼。問題4:數(shù)據(jù)表控件(Gri
30、dView)和顯示明細(xì)控件(DetailsView)兩者之間的區(qū)別有多大。問題解釋:二者最主要的是顯示數(shù)據(jù)時(shí)的排列方式不同,GridView適合于類似于Excel格式的多條記錄同時(shí)橫向顯示與編輯,而DetailsView主要用于顯示和編輯單條記錄,記錄中的各列縱向顯示。兩種控件都可以很容易的添加“插入/修改/刪除”按鈕以及添加自動(dòng)分頁功能。3.4.1 判斷結(jié)構(gòu)第2428行為一個(gè)判斷結(jié)構(gòu)。1. 判斷結(jié)構(gòu)的寫法常見的判斷結(jié)構(gòu)有三種寫法(見圖3-31)。 (1) 典型的判斷結(jié)構(gòu)(2) 簡(jiǎn)單判斷結(jié)構(gòu)(3) 復(fù)雜判斷結(jié)構(gòu)圖3-31 復(fù)雜語句類型由圖3-31可以看出:(1) 判斷結(jié)構(gòu)以“if”開始,“if
31、”是判斷結(jié)構(gòu)的關(guān)鍵詞,它的顏色為藍(lán)色,在默認(rèn)情況下,藍(lán)色為VS2005專用詞。由圖中可以看出,除了“if”外,在判斷結(jié)構(gòu)中,還可能用到的關(guān)鍵詞有“else”、“else if”。(2) 判斷條件一定要用小括號(hào)括起來。(3) 要執(zhí)行的語句如果是多條,則一定要用大括號(hào)括起來。要執(zhí)行的語句如果僅有一條,則大括號(hào)可以省略。(4) 對(duì)于大括號(hào)內(nèi)的語句,每句后面都要以分號(hào)結(jié)束。2. 判斷結(jié)構(gòu)的作用判斷結(jié)構(gòu)是程序中常用的一種語句結(jié)構(gòu)。它能根據(jù)程序運(yùn)行出現(xiàn)的不同情況,選擇執(zhí)行不同的語句。第2428行屬于簡(jiǎn)單判斷結(jié)構(gòu)。其大致的意思是:如果(if)顯示明細(xì)控件(DetailsViews1)的行數(shù)(Rows)的總數(shù)
32、(Count)大于0,則執(zhí)行其后一對(duì)大括號(hào)內(nèi)的各行語句。沒有否則(else),或者說否則什么也不執(zhí)行,即沒有符合條件的登錄人,則什么也不做。3.4.2 Session的作用程序第26行使用了Session。1. 什么是SessionSession,有人將其翻譯為“會(huì)話”,即網(wǎng)頁間互相通信。它就如同現(xiàn)實(shí)生活中的傳遞小道消息的人一樣,從一個(gè)網(wǎng)頁傳遞數(shù)據(jù)到另一個(gè)網(wǎng)頁。其實(shí)際功能是保存網(wǎng)站的各個(gè)網(wǎng)頁共用的數(shù)據(jù)。2. Session例子比如本網(wǎng)頁中,聲明了一個(gè)名為isLogin的Session,于是在所有網(wǎng)頁中,就誕生了一個(gè)名為isLogin的公共數(shù)據(jù)。如果不為isLogin指定值,則其值為null,即
33、空值?,F(xiàn)在,本網(wǎng)頁指定其值為“1”,其它網(wǎng)頁就可以根據(jù)其值是否為“1”來判斷用戶是否已登錄。當(dāng)然,其它網(wǎng)頁的程序語句也可以將其設(shè)為其它值。3. Session寫法注意:這個(gè)關(guān)鍵詞的第一個(gè)字母一定要大寫。定義一個(gè)Session的方法為:先寫出Session這個(gè)關(guān)鍵字。然后在Session一詞后用“ ”符號(hào)將數(shù)據(jù)的名字引起來,例如Session“countryName”、Session“userID”等。4. Session的排它性網(wǎng)站是供多人訪問的,一個(gè)網(wǎng)站可能有多人同時(shí)在訪問。如果這個(gè)網(wǎng)站的某個(gè)網(wǎng)頁使用了一個(gè)Session,則有多少人打開了本網(wǎng)頁,則網(wǎng)站所在服務(wù)器就會(huì)為每一個(gè)用戶單獨(dú)保存一個(gè)S
34、ession值。因此,可以說Session是屬于個(gè)人的,Session保存在網(wǎng)絡(luò)服務(wù)器內(nèi),它能夠識(shí)別不同的訪問者,兩個(gè)人即使同時(shí)訪問一個(gè)網(wǎng)站,其中的一個(gè)人也不可能得到另外一個(gè)人的Session值。5. Session的使用時(shí)限一個(gè)用戶的Session值不會(huì)在服務(wù)器上永久保存,服務(wù)器默認(rèn)某個(gè)用戶的Session自產(chǎn)生到20分鐘后,自動(dòng)清除,這也就意味著,即使正確登錄的用戶,20分鐘后,會(huì)自動(dòng)變成非法用戶,訪問者要想繼續(xù)瀏覽本網(wǎng)站,就必須重新登錄。但程序員在設(shè)計(jì)時(shí),可以根據(jù)實(shí)際需要設(shè)置Session的時(shí)限長(zhǎng)度,設(shè)置語句為:Session.Timeout=x;(x為分鐘數(shù))。很多購物網(wǎng)站考慮到用戶通
35、過網(wǎng)頁選擇商品時(shí)會(huì)花較長(zhǎng)時(shí)間,因此,會(huì)在每一個(gè)網(wǎng)頁中將Session值設(shè)置為60或更長(zhǎng)一些。這樣,每當(dāng)用戶打開新網(wǎng)頁時(shí),Session時(shí)效也就會(huì)自動(dòng)延長(zhǎng)。不要隨意使用Session在編寫網(wǎng)頁時(shí),如果大量使用Session,則一旦同時(shí)在線人數(shù)上升,可能很快導(dǎo)致服務(wù)器崩潰。這是因?yàn)槿绻粋€(gè)網(wǎng)站有100萬人在線,即有100萬臺(tái)電腦正在打開著本網(wǎng)站的網(wǎng)頁,每個(gè)人有10個(gè)Session,則服務(wù)器上就會(huì)產(chǎn)生并保存有1000萬個(gè)和Session相關(guān)的信息。3.4.3 Response的作用程序第27行使用了Response。1. 什么是ResponseResponse,響應(yīng),即用戶即將看到的下一個(gè)網(wǎng)頁。2.
36、 常用的Response命令常用的Response命令(專業(yè)術(shù)語叫方法)有兩個(gè)。一個(gè)是Redirect方法,其作用是打開下一個(gè)網(wǎng)頁。另一個(gè)是Write方法,其作用是在將要打開的網(wǎng)頁上添加文字。Redirect方法的語法格式為:Response.Redirect("網(wǎng)頁名?參數(shù)1=值1&參數(shù)2=值2&");其中網(wǎng)址格式為:例如:Response.Redirect("用戶登錄.aspx"); Response.Redirect("");Response.Redirect("歡迎.aspx?登錄人=胡家寶&
37、性別=1"); 。3. Response命令的變化形式在計(jì)算機(jī)執(zhí)行第27行語句時(shí),計(jì)算機(jī)先要取得HiddenField.Value的值,比如登錄框中輸入的是“胡家寶”,則HiddenField.Value就會(huì)首先轉(zhuǎn)變?yōu)椤昂覍殹?,然后再進(jìn)行“+”運(yùn)算。"歡迎.aspx?登錄人=" + "胡家寶"的結(jié)果即"歡迎.aspx?登錄人=胡家寶"。最后再執(zhí)行Response.Redirect("歡迎.aspx?登錄人=胡家寶");。執(zhí)行結(jié)果是打開了歡迎網(wǎng)頁。讀者可以從瀏覽器的地址欄中清晰的看出新網(wǎng)頁的網(wǎng)址。3.4.
38、4 程序工作原理圖3-32畫出了登錄過程的內(nèi)部機(jī)制。通過圖示可以看出,兩個(gè)事件程序在登錄過程中起了關(guān)鍵的作用,其它步驟都是自動(dòng)完成的。程序賦值用戶登錄數(shù)據(jù)庫隱藏輸入控件 數(shù)據(jù)源控件得到條件依據(jù)條件取數(shù)顯示詳情控件取數(shù)結(jié)果歡迎.aspx件程序判斷如果顯示數(shù)據(jù)>0條 Autenticate事件ItemCreated事件圖3-32 登錄過程3.4.5 防止非法訪問凡是要求登錄才能訪問到的網(wǎng)頁,都包含有檢查是否登錄的程序,程序判斷如果未登錄,則要么顯示空白頁并提示“禁止匿名訪問”、“無權(quán)訪問”等,要么直接回到登錄頁請(qǐng)?jiān)L者先完成登錄。這樣才能防止有些訪問者不登錄而直接訪問網(wǎng)頁,例如不登錄而直接在瀏
39、覽器的地址欄內(nèi)輸入網(wǎng)址的方法打開歡迎網(wǎng)頁。編寫防止非法訪問程序的步驟如下:1. 停止運(yùn)行程序,在設(shè)計(jì)狀態(tài)下,切換到“歡迎.aspx”網(wǎng)頁的設(shè)計(jì)界面。2. 雙擊網(wǎng)頁空白處,打開“歡迎.aspx.cs”程序錄入窗口。3. 在Page_Load事件中,輸入如圖3-33所示的第1619行程序。圖3-33 防止非法訪問網(wǎng)頁的程序設(shè)計(jì)完成后,運(yùn)行網(wǎng)頁,檢驗(yàn)所設(shè)計(jì)功能是否已實(shí)現(xiàn):試驗(yàn)輸入正確用戶名/密碼,再單擊“登錄”按鈕后,應(yīng)進(jìn)入歡迎網(wǎng)頁;之后再試驗(yàn)輸入錯(cuò)誤的用戶名/密碼,再單擊“登錄”按鈕后,應(yīng)在登錄框內(nèi)出現(xiàn)“登錄失敗,請(qǐng)重試”。至此,登錄網(wǎng)頁和登錄用戶才能訪問的網(wǎng)頁已實(shí)現(xiàn)了“基本的權(quán)限管理功能”。知識(shí)
40、點(diǎn)滴:1. 關(guān)于Page_Load網(wǎng)頁需要先生成,或者說需要先加載(Load),之后才能從服務(wù)器端發(fā)送到訪問者的機(jī)器,訪問者的瀏覽器內(nèi)才能顯示網(wǎng)頁。生成過程本身即會(huì)引發(fā)Page_Load事件,這個(gè)事件是網(wǎng)頁本身固有的,它發(fā)生在網(wǎng)頁剛剛開始生成時(shí)。在Page_Load事件內(nèi)如果禁止訪問本網(wǎng)頁,瀏覽器肯定無法獲取本網(wǎng)頁的內(nèi)容。2. 關(guān)于比較運(yùn)算符“= =”:只用于判斷語句中,比較兩側(cè)值是否相等?!? =”:只用于判斷語句中,比較兩側(cè)值是否不相等; 例如:if ( x= =3) 則意思是如果x的值和3是相等的,則執(zhí)行某些語句。除了上述兩個(gè)比較運(yùn)算符外,還有如“>”、“<”、“>=”
41、、“<=”、等。單個(gè)“=”號(hào)表示賦值。例如:int x =3; ,即讓整型變量x等于3。3. 關(guān)于判斷語句本段程序中使用了一個(gè)標(biāo)準(zhǔn)的判斷語句。由于判斷后要執(zhí)行的語句都是單條語句,因此,沒有必要使用成對(duì)的大括號(hào)。如果要執(zhí)行的是兩條或更多語句,則必須使用成對(duì)大括號(hào)將這些語句括起來。4. 關(guān)于地址欄在Default.aspx網(wǎng)頁中,“Response.Redirect("歡迎.aspx?登錄人=");”一句的作用是開一個(gè)“歡迎.aspx”網(wǎng)頁,并將登錄人的值傳給此頁。運(yùn)行Default.aspx網(wǎng)頁,完成登錄,會(huì)發(fā)現(xiàn)網(wǎng)頁跳轉(zhuǎn)至“歡迎.aspx”網(wǎng)頁,地址欄會(huì)顯示圖3-34所
42、示樣式。圖3-34 “歡迎.aspx”的地址欄圖中的地址欄一片混亂,主要原因是地址欄不可以顯示中文字符,每個(gè)中文字符到地址欄內(nèi)時(shí),需要翻譯成長(zhǎng)度不等的以%開頭的數(shù)字。圖中的真實(shí)地址應(yīng)為:http:/localhost:4464/蜘蛛網(wǎng)/歡迎.aspx?登錄人=zhang其中,前面的“http:/localhost:4464”為VS2005使用特殊的Asp.Net2.0技術(shù)在讀者電腦中模擬服務(wù)器形成的IP地址。3.4.6 Request的作用程序第19行使用了Request。1. 什么是RequestRequest的中文意思是請(qǐng)求、要求。即獲取上一個(gè)網(wǎng)頁傳給本網(wǎng)頁的信息。1、 常用的Reques
43、t常用的Request格式有四種:(1) Request.QueryString"數(shù)據(jù)名"-從地址欄內(nèi)獲得數(shù)據(jù);(2) Request. Form"控件名"-從提交網(wǎng)頁內(nèi)的某控件中獲取數(shù)據(jù);(3) Request.Cookies"數(shù)據(jù)名"-從網(wǎng)頁在本機(jī)共享消息集中獲取數(shù)據(jù);(4) Request"數(shù)據(jù)名"-從上述所有方面查找所要的數(shù)據(jù);2. 本程序中的Request本程序中,Request“登錄人”,相當(dāng)于Request.QueryString"登錄人",用于獲致地址欄中的“登錄人”的值。Req
44、uest獲取值以后,程序通過賦值語句“Label1=”使得標(biāo)簽得到“zhang”這一數(shù)據(jù),之后顯示在網(wǎng)頁上。3.4.7 Cookie的作用上一節(jié)中涉及到了一個(gè)新詞Cookie。它不常用,但很多書籍經(jīng)常提到。1. 什么是CookieCookie:小甜餅(西餐)。它的英文意義和網(wǎng)頁沒有什么關(guān)系。其真實(shí)作用是網(wǎng)頁訪問者本機(jī)上的用于一個(gè)網(wǎng)站各網(wǎng)頁間的共享數(shù)據(jù)集。而Session則是在網(wǎng)絡(luò)服務(wù)器上的為每個(gè)訪問者單獨(dú)保存的用于一個(gè)網(wǎng)站各網(wǎng)頁間的共享數(shù)據(jù)集。2. Cookie有什么作用比如郵箱的用戶名、密碼等,都有一個(gè)“記住我”的功能。這一功能都是使用Cookie實(shí)現(xiàn)的,一旦選中“記住我”功能,網(wǎng)頁就會(huì)將所
45、選中的信息寫入在訪問者的硬盤中。因此,可以說,Cookie的服務(wù)對(duì)象就是本網(wǎng)站、本機(jī)、本人。有些惡意網(wǎng)站、病毒、木馬會(huì)搜索Cookie并通過互聯(lián)網(wǎng)將其發(fā)送到“惡人”手中,很多人的QQ號(hào)、網(wǎng)上賬號(hào)等,就是通過這一途徑被盜的。因此,網(wǎng)站設(shè)計(jì)者不應(yīng)使用Cookie保存重要信息,盡量少用或不用Cookie,而用數(shù)據(jù)庫代替Cookie。讀者在使用公共電腦上網(wǎng)時(shí),也不要選中Cookie類功能。但我們沒有簡(jiǎn)單辦法了解一個(gè)網(wǎng)站是否在“悄悄地”收集和保存一個(gè)人上網(wǎng)的信息。因此,一般瀏覽器都提供有一個(gè)設(shè)置,禁止/開啟Cookie功能。3. 如何讀寫CookieVS2005考慮到了Cookie容易透漏信息的弊端,在
46、保存Cookie時(shí),采用了Advanced Encrypted Standards (AES)算法進(jìn)行加密/解密。不進(jìn)行破解就不可能看到Cookie中的真實(shí)值。本章實(shí)例沒有使用Cookie,也不推薦使用Cookie,因此,讀者沒有必要練習(xí),本書在此僅給出記住登錄框中的用戶名(即具體保存/讀出Cookie)的語句供參考:寫入(可以寫在DetailsView1_ItemCreated事件對(duì)應(yīng)程序內(nèi)):HttpCookie myCookie = new HttpCookie("userID");/新建一個(gè)代號(hào)myCookie實(shí)名為UserID的小甜餅myCookie.Value
47、= "李銀鎖" /為此小甜餅賦值Response.AppendCookie(myCookie); /保存它到個(gè)人電腦的磁盤內(nèi)讀出:(一般寫在Page_Load事件程序內(nèi))Label1.Text = Request.Cookies"username".Value.ToString();3.1 添加驗(yàn)證碼生成頁登錄網(wǎng)站時(shí),如果僅通過用戶名和密碼登錄,非法用戶使用簡(jiǎn)單手段就可以破解。因此,對(duì)于安全性要求較高、不希望經(jīng)常被攻擊、騷擾的網(wǎng)站,很有必要采取一些防護(hù)措施,其中一個(gè)常用技術(shù)即使用驗(yàn)證碼。3.5.1 什么是驗(yàn)證碼驗(yàn)證碼就是一幅小圖片,其中的數(shù)字或符號(hào)是隨機(jī)
48、產(chǎn)生,用戶可以通過肉眼識(shí)別出其中的驗(yàn)證碼信息,然后在驗(yàn)證碼輸入框中輸入驗(yàn)證碼。如果用戶名、密碼、驗(yàn)證碼全部輸入正確,才能通過登錄驗(yàn)證,成為合法用戶。驗(yàn)證碼圖片一般都會(huì)添加一些干擾因素,如顏色變化、字形變化等,以防止非法訪問者通過簡(jiǎn)單的程序即可識(shí)別出。驗(yàn)證碼技術(shù)已成為一種必需采用的網(wǎng)站安全技術(shù)。典型的如百度貼吧:要在百度發(fā)貼之前,就必須入驗(yàn)證碼(見圖3-36)。圖3-36 百度貼吧3.5.2 驗(yàn)證碼的作用驗(yàn)證碼一般是防止有人利用機(jī)器人自動(dòng)批量登錄、對(duì)特定的登錄用戶用特定程序暴力破解方式進(jìn)行不斷的登陸、灌水,甚至控制網(wǎng)絡(luò)服務(wù)器,盜取數(shù)據(jù)、篡改網(wǎng)站(即被黑)。因?yàn)轵?yàn)證碼是一個(gè)混合了數(shù)字或漢字、符號(hào)的
49、圖片,人眼識(shí)別有時(shí)都很費(fèi)力,通過計(jì)算機(jī)自動(dòng)識(shí)別就更加困難。這就為攔住惡意訪問者設(shè)立了一道較難逾越的高墻。網(wǎng)絡(luò)服務(wù)器生成驗(yàn)證碼需要加重服務(wù)器負(fù)擔(dān)并會(huì)占用訪問者一定的等待時(shí)間。但不能為了細(xì)節(jié)的良好體驗(yàn)而降低系統(tǒng)的安全性。所以,驗(yàn)證碼一定要有,但“驗(yàn)證碼”不一定要設(shè)計(jì)的過于太復(fù)雜。簡(jiǎn)單的說,驗(yàn)證碼要起到必要的驗(yàn)證和防護(hù)的作用,應(yīng)做到以下兩點(diǎn):1. 最好在45位隨機(jī)字符或數(shù)字,太少很容易被機(jī)器自動(dòng)識(shí)別或匹配出來,太多會(huì)影響用戶心情。2. 可以通過顏色、背景圖片的適度增加識(shí)別難度。3.5.3 添加驗(yàn)證碼生成頁驗(yàn)證碼不是隨機(jī)從電腦中取出的已存放在電腦中的圖片,而是由網(wǎng)頁后臺(tái)程序(即文件擴(kuò)展名為XXXX.aspx.cs中的程序)在網(wǎng)頁上逐筆“畫”出來的。因此,這種程序很復(fù)雜,普通編程人員很難掌握生成技術(shù),但互聯(lián)網(wǎng)上有大量公開的專業(yè)人員編寫的此類程序供“免費(fèi)”采用。站在專業(yè)人員的肩上,很容易做到一個(gè)普通人做不到的事情。提示:1. 運(yùn)行網(wǎng)頁后臺(tái)程序“驗(yàn)證碼.apx.cs”和運(yùn)行網(wǎng)頁界面文件“驗(yàn)證碼.aspx”結(jié)果是一樣的。每次運(yùn)行,都會(huì)產(chǎn)生一個(gè)含有4位隨機(jī)數(shù)的圖片(圖3
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國(guó)防銹干燥劑市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)鋼結(jié)構(gòu)支架市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)超級(jí)純合成發(fā)動(dòng)機(jī)油市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)自動(dòng)感應(yīng)干手器市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)紫菜米餅市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)監(jiān)控卡多媒體疊加系統(tǒng)市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)玻璃塞夾具市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)液壓下錨機(jī)市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)氮?dú)獍l(fā)生器市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)扣鎖型快速接頭市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 部編版小學(xué)語文四年級(jí)上冊(cè)第三單元整體設(shè)計(jì)交流課件
- 年產(chǎn)30萬噸水泥粉磨站建設(shè)工程可行性研究報(bào)告
- 邊際貢獻(xiàn)分析
- 2017人教版一年級(jí)語文下冊(cè)識(shí)字表
- 《高度參與的課堂 提高學(xué)生專注力的沉浸式教學(xué)》讀書筆記思維導(dǎo)圖PPT模板下載
- GB/T 28046.1-2011道路車輛電氣及電子設(shè)備的環(huán)境條件和試驗(yàn)第1部分:一般規(guī)定
- 外科病應(yīng)急預(yù)案嵌頓疝病人應(yīng)急預(yù)案
- 孤獨(dú)癥康復(fù)教育人員上崗培訓(xùn)練習(xí)題庫及答案
- 機(jī)械設(shè)備投入計(jì)劃及保證措施
- 東南大學(xué)附屬中大醫(yī)院ECMO操作記錄單
- 每月防火檢查及記錄表(每月一次)
評(píng)論
0/150
提交評(píng)論