網站開發(fā)設計常見問題匯總_第1頁
網站開發(fā)設計常見問題匯總_第2頁
網站開發(fā)設計常見問題匯總_第3頁
網站開發(fā)設計常見問題匯總_第4頁
網站開發(fā)設計常見問題匯總_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、常見問題匯總如果不小心雙擊了網頁,則VS2005會打開網頁后臺處理程序錄入界面(見圖2-18)。其文件名和網頁文件名相同,但擴展名為“.cs”的文件。圖2-18 網頁配套程序錄入界面遇到這種情況時,不要慌亂,也不要刪除程序網頁的任何內容,更不能單擊撤銷按鈕,程序錄入界面中的語句是與網頁配套的處理程序,其中很多是自動生成的。隨意修改、刪除或撤銷,都會導致網頁無法運行的嚴重后果。要回到網頁的設計界面,只需單擊VS2005上部的網頁標簽“注冊頁.aspx”即可。為了引起重視,可以做一次實驗:雙擊網頁,即會打開配套程序錄入頁“注冊頁.aspx.cs”,然后右擊頁標簽,選擇“關閉”或點擊 “注冊頁.as

2、px” 標簽,均能回到設計狀態(tài)。由此,我們也可以了解到,和一個網頁相關的界面有三個:一是網頁外觀設計界面,二是網頁代碼界面,即“源”界面,三是網頁后臺處理程序的錄入界面。比如一個按鈕,在設計界面上我們可以直觀的看到或設置按鈕的樣式,在“源”界面中會有此按鈕的位置/大小/顏色等描述代碼,在程序界面中可能會有單擊按鈕時要實現(xiàn)的功能語句。2.1 運行注冊頁單擊 “注冊頁.aspx” 標簽à單擊VS2005工具欄中的啟動調試(即試運行網頁)按鈕,屏幕會彈出圖2-19所示的調試對話框。圖2-19 啟動調試對話框這時應選擇第一項,啟動調試。這項功能的作用是:一個程序設計完成后運行時,如果出錯了,

3、則可以通過單步運行,或中途暫停等手段,找出錯誤,迅速排除。它是一個復雜網站設計過程中肯定會用到的一個功能。但就如同圖中的警告一樣,將來網頁真正要傳到網上時,一定不要忘記禁止此項功能,否則這項功能會大大加重服務器負擔,網頁訪問也會變得很慢。此項設置將在最后一章介紹。重要提示:單擊確定后,如果本機安裝了網絡防火墻,網絡防火墻會在屏幕右下角彈出類似圖2-20所示的詢問提示。圖2-20 詢問是否允許VS2005模仿網絡服務器的提示這時,千萬不要簡單的單擊確定按鈕,這樣就選擇了默認的“禁止”,即不允許VS2005運行網站,這將導致無法看到網頁在互聯(lián)網上被訪問時的結果。如果不小心選錯了,則需要找到防火墻的

4、設置選項,重新將此項功能設為“允許”。接下來還會有一個看似同樣的提示(見圖2-21),我們同樣需要選擇“總是允許”。圖2-21 詢問是否允許VS2005訪問互聯(lián)網的提示之后,需要等待較長時間,VS2005才會將一個圖2-22所示的空白網頁“產生”出來,顯現(xiàn)在屏幕上。這并不是因為VS2005慢或主機性能低,而是因為VS2005要在本機上模擬一臺網絡服務器。重要提示:最好不要在網頁運行時在VS2005中做任何修改,VS2005在運行網頁時會禁止修改設計界面,這時不要以為VS2005突然死機,而是正處于運行狀態(tài),還沒有回到設計狀態(tài)。在網頁運行時,“源”界面和程序界面中的內容雖然可以修改,但也無法立即

5、在正在運行的網頁中反映出修改結果,因此,在運行時如果發(fā)現(xiàn)了問題,一般應關閉正在運行的網頁,或單擊VS2005屏幕左上角工具欄內的停止按鈕,重新回到設計狀態(tài)。工具箱中的各種控件是經過分組的。單擊加粗的每組組名前的折疊按鈕“”,本組即會折疊起來,之后按鈕變成了“”樣式,單擊此按鈕,本組即會展開。所有組折疊后的結果如圖2-31所示。圖2-31 工具箱中的所有組別問題解釋:1. 為什么屬性窗口中的條目總在變化這是因為屬性窗口中列出的是選定目標的屬性。比如光標在網頁的空白處時,屬性窗口中顯示的是有關網頁的設置選項;光標放在表格內的空白處時,屬性窗口中顯示的是此單元格的屬性選項;光標放在文本框上時,屬性窗

6、口中顯示的是文本框的各種設置選項。因此,在調出屬性窗口前,一定要注意光標在哪個目標上。2. 為什么在屬性窗口中,找不到要設的項很多時候,打開屬性窗口,卻找不到要設的項。原因很多,最常見的原因是我們的鼠標沒有選定要設的目標。比如要設置單選列表控件,但光標卻在文本框上,這時就會找不到我們要設的項,即使找到了,也是兩類控件共有的項,這樣,即使能設置,也是設錯了對象。因此,在調出屬性窗口前,一定要注意光標在哪個目標上。不過,我們可以通過觀察屬性窗口上部的提示,很容易發(fā)現(xiàn)選錯了目標(見圖2-37)。在屬性窗口最上端,顯示著當前正要設置的目標的名字。 圖2-37 屬性設置窗口即使目標沒有選錯,有時也會找不

7、到要設的項,原因可能是電腦反應比較遲鈍。這時,可以通過單擊屬性窗口右上角的下拉按鈕“”,從中找到要設的目標即可。這種方法也很常用。3. 如何快速找到要設的項屬性窗口中的條目默認是按類別分組的,幾乎所有控件都有圖2-38所示的屬性組。每個組分類依據(jù)見表2-1。分類顯示對于不熟悉其中選項的人而言,找到要設的項很不容易,有時需要從頭到尾找?guī)妆?。圖2-38 屬性分組表2-1 屬性組說明組說明布局本控件的位置、大小等可訪問性本控件和操作有關的一些設置項。如快捷鍵數(shù)據(jù)本控件和數(shù)據(jù)庫連接有關屬性外觀本控件的字體、字號、顏色等行為在后幾章用到時,自然會明白的雜項快速查找設置項的方法是單擊屬性窗口中的“”按鈕,

8、所有屬性即會按拼音順序從A到Z順序排列,這時再找條目時,就快了許多(如果單擊“”按鈕,屬性會回到按組分類狀態(tài))。如果一個條目前面有個“”(見圖2-38),則表示本條目包含多條子項設置,單擊此按鈕,可顯示出各子項。當我們設計水平到一定程度時,有時就需要展開各項,從中查找可以設置的某個功能。網頁,回到設計狀態(tài)。2.2 實現(xiàn)控件與數(shù)據(jù)庫的對接數(shù)據(jù)庫和網頁外觀都已經設計完成,但兩者之間還沒有聯(lián)系,本節(jié)將實現(xiàn)注冊頁面和數(shù)據(jù)庫的對接,為網頁和數(shù)據(jù)庫搭起橋梁,只有這樣,用戶在注冊時填寫在網頁上的數(shù)據(jù)才能存入數(shù)據(jù)庫。VS2005提供了擔當“橋梁”重任的控件,它在工具箱的數(shù)據(jù)組內,專業(yè)名稱為數(shù)據(jù)源控件。不同的數(shù)

9、據(jù)庫使用不同的數(shù)據(jù)源控件,本書所用的數(shù)據(jù)庫為Access,因此,需要使用的數(shù)據(jù)源控件為AccessDataSource(見圖2-41)。圖2-41 工具箱中的數(shù)據(jù)源通過將數(shù)據(jù)源控件添加到網頁,并通過AccessDataSource進行一些簡單設置,就可以實現(xiàn)控件與數(shù)據(jù)庫的對接(見圖2-42),這樣,當用戶單擊“提交”按鈕后,橋梁即會將用戶注冊信息從網頁內收集起來,并正確寫入數(shù)據(jù)庫中相應的列內。表內控件“橋梁”數(shù)據(jù)庫程序的寫入指令圖2-42 數(shù)據(jù)對接示意圖以下將介紹對接的設置過程,其中:環(huán)節(jié):創(chuàng)建橋梁,見2.9.1小節(jié);環(huán)節(jié):連接數(shù)據(jù)表,見.4小節(jié);環(huán)節(jié):連接網頁控件,實現(xiàn)對接。

10、見2.9.5小節(jié);環(huán)節(jié):編寫插入程序,用戶信息寫入數(shù)據(jù)庫。見2.10節(jié)。2.7.8添加比較控件注意:驗證組內的幾種控件的名稱很容易混淆,因此,添加時一定要小心。重要提示:在鍵入每個ValidationExpression屬性值時,一定要注意使用英文標點符號,一定要區(qū)分大小寫(第二行的S為大寫),總之,輸入時一定要小心,否則會使用戶即使輸入正確,也會出現(xiàn)錯誤提示,也無法提交。2.8.1 添加數(shù)據(jù)對接控件從工具箱的“數(shù)據(jù)”組中,拖出一個AccessDataSource控件到網頁的“新會員注冊”文字后面??丶先刖W頁后,網頁上會顯示其名字為AccessDataSource1(見圖2-43)。圖2-4

11、3 Access數(shù)據(jù)源控件外觀添加數(shù)據(jù)源控件后,會發(fā)現(xiàn)它占用一行位置,我們會感覺標題格變寬了,實際上在運行時,這一控件是不占位置的,它是一個運行時不可見控件,永遠不可能出現(xiàn)在瀏覽者的網頁上。如果要專心設置頁面布局,則有這個控件還是感覺很不舒服,無法讓我們更專心于網頁排版。不過VS2005已經為我們想到了這一點。單擊VS2005“視圖”菜單,單擊“非可視控件”菜單項(見圖2-44),即會去除此項的選定,并且會發(fā)現(xiàn)網頁上的數(shù)據(jù)源控件“消失”了,表格重新回到原來的狀態(tài)。再次單擊“非可視控件”菜單項,即會重新顯示出數(shù)據(jù)源控件。一般情況下,除非專門調整網頁外觀,否則一般都會讓這些起關鍵作用的非可視控件顯

12、示在設計界面。圖2-44 非可視控件是否顯示選項菜單2.8.2 確認數(shù)據(jù)庫存在在設置數(shù)據(jù)源連接數(shù)據(jù)表之前,必須先確定數(shù)據(jù)庫存在。調出解決方案管理器窗口(這個窗口一般位于屏幕右側),查看窗口內有無已建好的數(shù)據(jù)庫名“zz數(shù)據(jù)庫.mdb”。此文件存放在App_Data文件夾內(見圖2-45)。這是一個受系統(tǒng)保護的文件夾,網絡服務器會禁止任何人打開或下載這一文件夾中的任何文件。有人曾將網頁上的圖片放在了這一文件夾內,結果運行網頁時,總也無法顯示這些圖片,原因就在于他的圖片放錯了文件夾。圖2-45 刷新網站重要提示:數(shù)據(jù)庫必須放在App_Data文件夾內,這是保證數(shù)據(jù)不被人非法竊取的最基本的前提。問題解

13、答:管理器窗口內數(shù)據(jù)庫文件不存在怎么辦?1. 如果文件夾內確實沒有,可以單擊窗口上方的刷新按鈕。2. 如果還是沒有,則說明數(shù)據(jù)庫設計時,沒有保存在此文件夾內,這時就需要從“我的電腦”中,找到已設計好的數(shù)據(jù)庫,復制到“E:蜘蛛網App_Data”文件夾內,或重新設計并保存到此文件夾內。3. 如果有,但是數(shù)據(jù)庫文件不在App_Data文件夾內,而是和注冊頁同在一級上,這時可以用鼠標將其拖入App_Data文件夾??傊?,只有保證數(shù)據(jù)庫存在,才能繼續(xù)以下的設計。2.9.3程序說明1. 關于顏色:語句輸入時,其中的紅色字如果在紅色雙引號之內,并不表示程序有錯誤,按照VS2005的約定,紅色為字符串、藍色

14、為VS2005專用詞,又叫關鍵字。青色是一種VS2005專用的一種稱為類的專用詞,讀者暫且無需明白什么是類。2. 本程序使用了一個組合語句try catch( ),翻譯成中文意思為:“要做一件事,做做試試;不行就找原因,聲明我做不了”。3. AccessDataSource1.Insert:執(zhí)行數(shù)據(jù)源1的插入功能;即讓數(shù)據(jù)源1插入一條記錄,將注冊信息寫入數(shù)據(jù)庫。4. 注意,AccessDataSource1的最后一個字符是數(shù)字1,不是英文字符L。5. 1和L、0和O混淆,true寫成ture是初學者特別容易出現(xiàn)的錯誤。6. Response:中文翻譯為”回應”,單擊后的回應一般是一個對話框或一

15、個新網頁?!癛esponse.Write("<script>window.alert('重復注冊或網絡異常')</script>");”為一固定寫法,其功能是彈出一個對話框,框內文字為“重復注冊或網絡異?!?。7. 說明:以后要編寫彈出對話框語句時,只需復制此語句,然后修改框內文字即可。8. Exception:中文翻譯為”異?!保赐獠恳蛩匾鸬某绦驘o法執(zhí)行。程序異常不是程序錯誤,程序錯誤是程序編寫不正確。catch (Exception ee)即捕獲異常,不讓異常擴散。如果程序沒有57行,當執(zhí)行插入遇到異常時,網頁就會出現(xiàn)一長篇滿是

16、英文和代號的錯誤頁,而不是一個友好的異常提示對話框。9. 程序編寫完畢,VS2005會在屏幕底部錯誤列表窗口中顯示如圖2-54所示內容。圖2-54 錯誤列表窗口本窗口中可列出的錯誤有兩類,一類為警告“”,或者說是編程建議,這類問題不是錯誤,而是說程序可能不夠完善,但這類問題不會影響程序運行。另一類為程序編寫錯誤“”,這類錯誤一定要排除,否則網頁無法正常運行。重要提示:1. 程序中的字母要區(qū)分大小寫,VS2005嚴格區(qū)分大小寫,A和a是完全不同的。一字之錯,即會導致程序無法運行。2. 在運行網頁之前,一定要查看“錯誤列表”窗口中有無程序錯誤提示,如果存在,一定要改正之后再運行。程序書寫并檢查無誤

17、,單擊全部保存按鈕,再單擊運行按鈕,試填寫一個注冊信息,并提交,看是否出現(xiàn)已保存提示。測試完畢,關閉網頁,回到設計狀態(tài)。思考題:1. 如何啟動VS2005,并建立一個注冊頁。2. 起始頁關閉后怎么打開,或文件關閉后怎樣打開?3. 如何在網頁中插入表格?怎么調整表格的寬度大???4. 如何對用戶名、姓名等選項進行設置成必填項;密碼和確認密碼設置為不能為空并且使輸入的密碼為不可見;同時如何驗證密碼與確認密碼輸入的是否一致?5. 如何設置擴充地址選項的寬度?6. 如何設置性別選項,使其成為二選一按鈕。7. 如何建立數(shù)據(jù)庫與網頁之間的鏈接?8. 如何使用Access2003建立數(shù)據(jù)庫和數(shù)據(jù)表?1.5.4

18、  代碼改變狀態(tài)的通知文檔窗口的另一個變化是包含一個新的代碼改變通知系統(tǒng)。在處理頁面上的代碼時,注意現(xiàn)在默認包含行號。單擊任意行號,就會突出顯示該行代碼。行號旁邊的是一個顏色改變欄,如圖2-7所示。圖  2-7這個顏色欄通知用戶ASP.NET頁面中的代碼發(fā)生了變化。如果某一行代碼沒有顯示顏色欄,就表示還未對該行代碼進行修改。在對某行代碼作了修改后,該行的前面就會顯示一個黃色欄。保存了文件后,這個顏色欄會變成綠色。黃色代碼行表示已進行了修改,但未保存到文件中。在圖2-7的黑白屏幕圖中,看不出第 13、14和15行旁邊的黃色欄,但可以看出它們的陰影有區(qū)別。顏色的差異(與其余代碼

19、行的顏色欄相比)表示這些代碼不久前進行了修改。1.5.5  錯誤通知和輔助在Visual Studio的以前版本中,設計期間的錯誤檢查是IDE的一個重要特性,在輸入代碼的過程中,Visual Studio會檢查代碼中是否有錯誤。例如,如果輸入了If Then語句(使用Visual Basic),但沒有包含End If語句,IDE就會給If Then語句加上下劃線,提醒用戶語句塊不完整。在更正錯誤后,下劃線就會消失。在Visual Studio 2005中,如果設計期間出錯,就會在下劃線的右邊出現(xiàn)一個小方框,如圖2-8所示。圖  2-8把光標放在該方框上,就會顯示一個錯誤符號

20、,單擊該錯誤符號,會打開一個對話框,其中給出了更正錯誤的選項。例如,如果在Visual Basic中使用了If Then語句,但沒有使用End If語句,單擊Error Notification按鈕就會在IDE中顯示一個更正對話框,如圖2-9所示。圖  2-9這個彈出的對話框首先陳述問題。在這個例子中,它說明任何打開的If語句必須包含一個閉合的End If語句。在這個錯誤通知的下面是一個鏈接,允許進行更正。在鏈接的下面是一個代碼示例,說明該更正會如何影響代碼。有時,更正設計期間的錯誤有多個選項。例如,在ASP.NET頁面中有如下代碼:Dim x As Integr其中,Integr拼

21、寫不正確;正確的拼寫是Integer。IDE通知用戶出了這個錯誤,并打開相關的錯誤對話框。更正這個錯誤有3個選項,如圖2-10所示。要更正它,可以滾動到合適的更正選項上,單擊該鏈接。圖  2-10重要提示:一定不要將非數(shù)據(jù)庫文件放入“解決方案資源管理器”App_Data文件夾內,否則在瀏覽網頁時,會無法顯示。而且一般應在“解決方案資源管理器”內單獨創(chuàng)建一個名為pic或img等的文件夾,將圖片一類的文件保存在此類文件夾內。1. 確定登錄控件處于選定狀態(tài)確定方法為查看登錄控件四周是否有三個小方框(見圖3-11)。這三個小方框的作用是調整控件大小,必須用鼠標按住三者之一,才能用鼠標縮放控件

22、的長度或寬度。由于這兩個控件在運行時不可見,不會占用網頁空間,因此,它們在網頁上的位置和順序均沒有必要考慮。程序中的兩個斜杠“/”為C#語言特有的標志,它用以說明本行其后的文字為注釋文字,在程序中添加注釋是優(yōu)秀程序員的習慣,它可以大大提高程序的可讀性,幫助自己和其它閱讀程序的人更快的掌握程序的功能。但作為練習,這兩個“/”和其后文字可以不必輸入。3.3.1 事件與編程事件,是目前流行的所有語言中的一個十分重要的概念。1. 什么是事件事件(Event),就是在某個控件(包括網頁本身)上發(fā)生的事情。比如一想到按鈕,人們會自然會想到在按鈕身上會有“Click”(點擊)事件。2. 如何知道一個控件都有

23、哪些事件以登錄框為例:具體操作步驟如下:(1) 單擊VS2005上部的“Default.aspx”頁標簽,切換到“設計”界面(見圖3-17)。(2) 單擊選中登錄控件Login1。(3) 按F4鍵,調出屬性窗口。(4) 單擊屬性窗口上部的事件按鈕。操作結果如圖3-17右側所示。圖3-17 登錄控件的“屬性/事件”窗口說明:要將屬性窗口設置回到顯示屬性方式,請單擊其左側的按鈕。從圖3-17所示的屬性窗口可以看出,窗口左側為事件列表,共有10種事件。其中第一個為Authenticate事件,它發(fā)生在“引發(fā)對用戶進行身份驗證”時刻,即單擊“登錄”按鈕時發(fā)生。在窗口的右側,是事件對應的程序,如果空白,

24、表示沒有對此事件編寫程序。圖中第一格顯示的是Login1_Authenticate,表示程序輸入窗口,即Default.aspx.cs中有一個名為Login1_Authenticate的程序。由此可見,屬性窗口即是屬性顯示與設置窗口,又是事件顯示與選擇窗口。3. 排除事件錯誤如果要刪除程序錄入界面中的某個程序,則一定要在某個控件的屬性窗口中找到此名稱,并且刪除。否則程序會運行出錯。為此,我們可以做一個實驗:(1) 雙擊HiddenField1控件,程序窗口中會打開并自動生成一個名HiddenField1_ValueChanged的空程序(見圖3-18)。(2) 我們并沒有想針對HiddenFi

25、eld1編寫程序,因此,應將圖中的22-25行刪除。(3) 單擊啟動調試按鈕“”,運行網頁,會出現(xiàn)圖3-19所示的錯誤頁面。圖3-18 自動產生的事件對程序圖3-19 缺少事件對應程序錯誤錯誤頁面顯示,ID為HiddenField1的控件缺少HiddenField1_ValueChanged對應的程序。這是因為我們剛剛將其刪除。要排除這一錯誤,需要繼續(xù)如下操作。(1) 切換到Default.aspx設計界面(見圖3-20);(2) 單擊選中HiddenField1;(3) 按F4鍵調出屬性窗口;(4) 單擊事件按鈕找到ValueChanged事件。會發(fā)現(xiàn)屬性/事件窗口中也自動添加了一個對應程序

26、名“HiddenField1_ValueChanged”。(5) 逐字刪除此事件對應的程序名“HiddenField1_ValueChanged”。圖3-20 屬性/事件窗口中自動添加的對應程序名4. 事件是由誰規(guī)定的事件是由編寫控件的人規(guī)定的,VS2005中目前工具箱中的所有控件,都是微軟公司設計的,因此,每個控件的所有事件都是由微軟公司規(guī)定的。在使用控件事件時,只有使用的權利,沒有規(guī)定一個控件是否具有哪種事件的權利。5. 事件對應程序何時會得到執(zhí)行如果將程序寫在某種事件對應的程序內,當事件發(fā)生時,就會執(zhí)行相應的程序,如果事件總也不發(fā)生,則程序會總也得不到執(zhí)行。比如網頁訪問者在打開Defau

27、lt.aspx網頁后,總也不單擊登錄按鈕,就會總也不執(zhí)行Default.aspx.cs頁中的Login1_Authenticate程序。明白了什么是事件及事件發(fā)生的原因,就等于知道了編寫程序的時機,將程序語句寫入合適的事件內,當事件發(fā)生時,就會執(zhí)行所寫程序,也就能夠得到程序員想要的結果。許多控件都有相同的事件。因此,學習時間長了,自然會對控件的這些事件何時發(fā)生有更深的了解,現(xiàn)在不必急于將所有事件都明白的一清二楚。圖3-25 添加顯示明細控件通過觀察網頁運行結果,讀者會發(fā)現(xiàn)如下問題:問題1:為什么網頁運行后,未登錄前,顯示詳情控件內不顯示任何數(shù)據(jù),登錄后就會顯示數(shù)據(jù)。問題解釋:顯示詳情控件的數(shù)據(jù)

28、源于數(shù)據(jù)源AccessDataSource1。數(shù)據(jù)源在取數(shù)據(jù)時,有兩個限定條件(見圖3-24)一是用戶名=HiddenField1,二是密碼=HiddenField2,網頁剛剛運行時,這兩個隱藏輸入控件中的值全部為空,因此,數(shù)據(jù)源只能從數(shù)據(jù)庫中取得0個符合條件的數(shù)據(jù)。在登錄后,通過自編程序,為兩個隱藏輸入控件賦了值。數(shù)據(jù)源依據(jù)取數(shù)條件,從數(shù)據(jù)庫中取出了一條記錄,于是顯示詳情控件就將其顯示在了網頁上。問題2:雖然網頁上在登錄成功之后能夠顯示出已登錄者的用戶名和密碼,但有登錄框內卻提示“登錄失敗,請重試”(見圖3-26)。問題解釋:按VS2005的要求,登錄框應使用專用的數(shù)據(jù)庫存放用戶信息,而不是

29、我們的“zz數(shù)據(jù)庫.mdb”。本書沒有按照VS2005的要求設計出這樣一個數(shù)據(jù)庫,登錄框自然就無法找到登錄者信息,所以才會在登錄框內顯示“登錄失敗,請重試”。但按本書的設計,即便出現(xiàn)這樣的錯誤提示,也并不表示程序有錯。只要顯示明細內能夠顯示出登錄者的用戶名和密碼,則表示設計正確。在完成本章設計后,讀者會發(fā)現(xiàn),網頁上將來不會在登錄成功會顯示這一錯誤提示,僅僅會在用戶名或密碼輸入錯誤后才顯示。問題3:在顯示明細控件中,密碼以明文的方式顯示,如何才能實現(xiàn)以“*”顯示。問題解釋:這只是暫時現(xiàn)象,下一節(jié)本書將會做一個小小的進一步設計,即會讓網頁訪問者永遠都不會看到登錄者的密碼。問題4:數(shù)據(jù)表控件(Gri

30、dView)和顯示明細控件(DetailsView)兩者之間的區(qū)別有多大。問題解釋:二者最主要的是顯示數(shù)據(jù)時的排列方式不同,GridView適合于類似于Excel格式的多條記錄同時橫向顯示與編輯,而DetailsView主要用于顯示和編輯單條記錄,記錄中的各列縱向顯示。兩種控件都可以很容易的添加“插入/修改/刪除”按鈕以及添加自動分頁功能。3.4.1 判斷結構第2428行為一個判斷結構。1. 判斷結構的寫法常見的判斷結構有三種寫法(見圖3-31)。 (1) 典型的判斷結構(2) 簡單判斷結構(3) 復雜判斷結構圖3-31 復雜語句類型由圖3-31可以看出:(1) 判斷結構以“if”開始,“if

31、”是判斷結構的關鍵詞,它的顏色為藍色,在默認情況下,藍色為VS2005專用詞。由圖中可以看出,除了“if”外,在判斷結構中,還可能用到的關鍵詞有“else”、“else if”。(2) 判斷條件一定要用小括號括起來。(3) 要執(zhí)行的語句如果是多條,則一定要用大括號括起來。要執(zhí)行的語句如果僅有一條,則大括號可以省略。(4) 對于大括號內的語句,每句后面都要以分號結束。2. 判斷結構的作用判斷結構是程序中常用的一種語句結構。它能根據(jù)程序運行出現(xiàn)的不同情況,選擇執(zhí)行不同的語句。第2428行屬于簡單判斷結構。其大致的意思是:如果(if)顯示明細控件(DetailsViews1)的行數(shù)(Rows)的總數(shù)

32、(Count)大于0,則執(zhí)行其后一對大括號內的各行語句。沒有否則(else),或者說否則什么也不執(zhí)行,即沒有符合條件的登錄人,則什么也不做。3.4.2 Session的作用程序第26行使用了Session。1. 什么是SessionSession,有人將其翻譯為“會話”,即網頁間互相通信。它就如同現(xiàn)實生活中的傳遞小道消息的人一樣,從一個網頁傳遞數(shù)據(jù)到另一個網頁。其實際功能是保存網站的各個網頁共用的數(shù)據(jù)。2. Session例子比如本網頁中,聲明了一個名為isLogin的Session,于是在所有網頁中,就誕生了一個名為isLogin的公共數(shù)據(jù)。如果不為isLogin指定值,則其值為null,即

33、空值?,F(xiàn)在,本網頁指定其值為“1”,其它網頁就可以根據(jù)其值是否為“1”來判斷用戶是否已登錄。當然,其它網頁的程序語句也可以將其設為其它值。3. Session寫法注意:這個關鍵詞的第一個字母一定要大寫。定義一個Session的方法為:先寫出Session這個關鍵字。然后在Session一詞后用“ ”符號將數(shù)據(jù)的名字引起來,例如Session“countryName”、Session“userID”等。4. Session的排它性網站是供多人訪問的,一個網站可能有多人同時在訪問。如果這個網站的某個網頁使用了一個Session,則有多少人打開了本網頁,則網站所在服務器就會為每一個用戶單獨保存一個S

34、ession值。因此,可以說Session是屬于個人的,Session保存在網絡服務器內,它能夠識別不同的訪問者,兩個人即使同時訪問一個網站,其中的一個人也不可能得到另外一個人的Session值。5. Session的使用時限一個用戶的Session值不會在服務器上永久保存,服務器默認某個用戶的Session自產生到20分鐘后,自動清除,這也就意味著,即使正確登錄的用戶,20分鐘后,會自動變成非法用戶,訪問者要想繼續(xù)瀏覽本網站,就必須重新登錄。但程序員在設計時,可以根據(jù)實際需要設置Session的時限長度,設置語句為:Session.Timeout=x;(x為分鐘數(shù))。很多購物網站考慮到用戶通

35、過網頁選擇商品時會花較長時間,因此,會在每一個網頁中將Session值設置為60或更長一些。這樣,每當用戶打開新網頁時,Session時效也就會自動延長。不要隨意使用Session在編寫網頁時,如果大量使用Session,則一旦同時在線人數(shù)上升,可能很快導致服務器崩潰。這是因為如果一個網站有100萬人在線,即有100萬臺電腦正在打開著本網站的網頁,每個人有10個Session,則服務器上就會產生并保存有1000萬個和Session相關的信息。3.4.3 Response的作用程序第27行使用了Response。1. 什么是ResponseResponse,響應,即用戶即將看到的下一個網頁。2.

36、 常用的Response命令常用的Response命令(專業(yè)術語叫方法)有兩個。一個是Redirect方法,其作用是打開下一個網頁。另一個是Write方法,其作用是在將要打開的網頁上添加文字。Redirect方法的語法格式為:Response.Redirect("網頁名?參數(shù)1=值1&參數(shù)2=值2&");其中網址格式為:例如:Response.Redirect("用戶登錄.aspx"); Response.Redirect("");Response.Redirect("歡迎.aspx?登錄人=胡家寶&

37、性別=1"); 。3. Response命令的變化形式在計算機執(zhí)行第27行語句時,計算機先要取得HiddenField.Value的值,比如登錄框中輸入的是“胡家寶”,則HiddenField.Value就會首先轉變?yōu)椤昂覍殹?,然后再進行“+”運算。"歡迎.aspx?登錄人=" + "胡家寶"的結果即"歡迎.aspx?登錄人=胡家寶"。最后再執(zhí)行Response.Redirect("歡迎.aspx?登錄人=胡家寶");。執(zhí)行結果是打開了歡迎網頁。讀者可以從瀏覽器的地址欄中清晰的看出新網頁的網址。3.4.

38、4 程序工作原理圖3-32畫出了登錄過程的內部機制。通過圖示可以看出,兩個事件程序在登錄過程中起了關鍵的作用,其它步驟都是自動完成的。程序賦值用戶登錄數(shù)據(jù)庫隱藏輸入控件 數(shù)據(jù)源控件得到條件依據(jù)條件取數(shù)顯示詳情控件取數(shù)結果歡迎.aspx件程序判斷如果顯示數(shù)據(jù)>0條 Autenticate事件ItemCreated事件圖3-32 登錄過程3.4.5 防止非法訪問凡是要求登錄才能訪問到的網頁,都包含有檢查是否登錄的程序,程序判斷如果未登錄,則要么顯示空白頁并提示“禁止匿名訪問”、“無權訪問”等,要么直接回到登錄頁請訪者先完成登錄。這樣才能防止有些訪問者不登錄而直接訪問網頁,例如不登錄而直接在瀏

39、覽器的地址欄內輸入網址的方法打開歡迎網頁。編寫防止非法訪問程序的步驟如下:1. 停止運行程序,在設計狀態(tài)下,切換到“歡迎.aspx”網頁的設計界面。2. 雙擊網頁空白處,打開“歡迎.aspx.cs”程序錄入窗口。3. 在Page_Load事件中,輸入如圖3-33所示的第1619行程序。圖3-33 防止非法訪問網頁的程序設計完成后,運行網頁,檢驗所設計功能是否已實現(xiàn):試驗輸入正確用戶名/密碼,再單擊“登錄”按鈕后,應進入歡迎網頁;之后再試驗輸入錯誤的用戶名/密碼,再單擊“登錄”按鈕后,應在登錄框內出現(xiàn)“登錄失敗,請重試”。至此,登錄網頁和登錄用戶才能訪問的網頁已實現(xiàn)了“基本的權限管理功能”。知識

40、點滴:1. 關于Page_Load網頁需要先生成,或者說需要先加載(Load),之后才能從服務器端發(fā)送到訪問者的機器,訪問者的瀏覽器內才能顯示網頁。生成過程本身即會引發(fā)Page_Load事件,這個事件是網頁本身固有的,它發(fā)生在網頁剛剛開始生成時。在Page_Load事件內如果禁止訪問本網頁,瀏覽器肯定無法獲取本網頁的內容。2. 關于比較運算符“= =”:只用于判斷語句中,比較兩側值是否相等?!? =”:只用于判斷語句中,比較兩側值是否不相等; 例如:if ( x= =3) 則意思是如果x的值和3是相等的,則執(zhí)行某些語句。除了上述兩個比較運算符外,還有如“>”、“<”、“>=”

41、、“<=”、等。單個“=”號表示賦值。例如:int x =3; ,即讓整型變量x等于3。3. 關于判斷語句本段程序中使用了一個標準的判斷語句。由于判斷后要執(zhí)行的語句都是單條語句,因此,沒有必要使用成對的大括號。如果要執(zhí)行的是兩條或更多語句,則必須使用成對大括號將這些語句括起來。4. 關于地址欄在Default.aspx網頁中,“Response.Redirect("歡迎.aspx?登錄人=");”一句的作用是開一個“歡迎.aspx”網頁,并將登錄人的值傳給此頁。運行Default.aspx網頁,完成登錄,會發(fā)現(xiàn)網頁跳轉至“歡迎.aspx”網頁,地址欄會顯示圖3-34所

42、示樣式。圖3-34 “歡迎.aspx”的地址欄圖中的地址欄一片混亂,主要原因是地址欄不可以顯示中文字符,每個中文字符到地址欄內時,需要翻譯成長度不等的以%開頭的數(shù)字。圖中的真實地址應為:http:/localhost:4464/蜘蛛網/歡迎.aspx?登錄人=zhang其中,前面的“http:/localhost:4464”為VS2005使用特殊的Asp.Net2.0技術在讀者電腦中模擬服務器形成的IP地址。3.4.6 Request的作用程序第19行使用了Request。1. 什么是RequestRequest的中文意思是請求、要求。即獲取上一個網頁傳給本網頁的信息。1、 常用的Reques

43、t常用的Request格式有四種:(1) Request.QueryString"數(shù)據(jù)名"-從地址欄內獲得數(shù)據(jù);(2) Request. Form"控件名"-從提交網頁內的某控件中獲取數(shù)據(jù);(3) Request.Cookies"數(shù)據(jù)名"-從網頁在本機共享消息集中獲取數(shù)據(jù);(4) Request"數(shù)據(jù)名"-從上述所有方面查找所要的數(shù)據(jù);2. 本程序中的Request本程序中,Request“登錄人”,相當于Request.QueryString"登錄人",用于獲致地址欄中的“登錄人”的值。Req

44、uest獲取值以后,程序通過賦值語句“Label1=”使得標簽得到“zhang”這一數(shù)據(jù),之后顯示在網頁上。3.4.7 Cookie的作用上一節(jié)中涉及到了一個新詞Cookie。它不常用,但很多書籍經常提到。1. 什么是CookieCookie:小甜餅(西餐)。它的英文意義和網頁沒有什么關系。其真實作用是網頁訪問者本機上的用于一個網站各網頁間的共享數(shù)據(jù)集。而Session則是在網絡服務器上的為每個訪問者單獨保存的用于一個網站各網頁間的共享數(shù)據(jù)集。2. Cookie有什么作用比如郵箱的用戶名、密碼等,都有一個“記住我”的功能。這一功能都是使用Cookie實現(xiàn)的,一旦選中“記住我”功能,網頁就會將所

45、選中的信息寫入在訪問者的硬盤中。因此,可以說,Cookie的服務對象就是本網站、本機、本人。有些惡意網站、病毒、木馬會搜索Cookie并通過互聯(lián)網將其發(fā)送到“惡人”手中,很多人的QQ號、網上賬號等,就是通過這一途徑被盜的。因此,網站設計者不應使用Cookie保存重要信息,盡量少用或不用Cookie,而用數(shù)據(jù)庫代替Cookie。讀者在使用公共電腦上網時,也不要選中Cookie類功能。但我們沒有簡單辦法了解一個網站是否在“悄悄地”收集和保存一個人上網的信息。因此,一般瀏覽器都提供有一個設置,禁止/開啟Cookie功能。3. 如何讀寫CookieVS2005考慮到了Cookie容易透漏信息的弊端,在

46、保存Cookie時,采用了Advanced Encrypted Standards (AES)算法進行加密/解密。不進行破解就不可能看到Cookie中的真實值。本章實例沒有使用Cookie,也不推薦使用Cookie,因此,讀者沒有必要練習,本書在此僅給出記住登錄框中的用戶名(即具體保存/讀出Cookie)的語句供參考:寫入(可以寫在DetailsView1_ItemCreated事件對應程序內):HttpCookie myCookie = new HttpCookie("userID");/新建一個代號myCookie實名為UserID的小甜餅myCookie.Value

47、= "李銀鎖" /為此小甜餅賦值Response.AppendCookie(myCookie); /保存它到個人電腦的磁盤內讀出:(一般寫在Page_Load事件程序內)Label1.Text = Request.Cookies"username".Value.ToString();3.1 添加驗證碼生成頁登錄網站時,如果僅通過用戶名和密碼登錄,非法用戶使用簡單手段就可以破解。因此,對于安全性要求較高、不希望經常被攻擊、騷擾的網站,很有必要采取一些防護措施,其中一個常用技術即使用驗證碼。3.5.1 什么是驗證碼驗證碼就是一幅小圖片,其中的數(shù)字或符號是隨機

48、產生,用戶可以通過肉眼識別出其中的驗證碼信息,然后在驗證碼輸入框中輸入驗證碼。如果用戶名、密碼、驗證碼全部輸入正確,才能通過登錄驗證,成為合法用戶。驗證碼圖片一般都會添加一些干擾因素,如顏色變化、字形變化等,以防止非法訪問者通過簡單的程序即可識別出。驗證碼技術已成為一種必需采用的網站安全技術。典型的如百度貼吧:要在百度發(fā)貼之前,就必須入驗證碼(見圖3-36)。圖3-36 百度貼吧3.5.2 驗證碼的作用驗證碼一般是防止有人利用機器人自動批量登錄、對特定的登錄用戶用特定程序暴力破解方式進行不斷的登陸、灌水,甚至控制網絡服務器,盜取數(shù)據(jù)、篡改網站(即被黑)。因為驗證碼是一個混合了數(shù)字或漢字、符號的

49、圖片,人眼識別有時都很費力,通過計算機自動識別就更加困難。這就為攔住惡意訪問者設立了一道較難逾越的高墻。網絡服務器生成驗證碼需要加重服務器負擔并會占用訪問者一定的等待時間。但不能為了細節(jié)的良好體驗而降低系統(tǒng)的安全性。所以,驗證碼一定要有,但“驗證碼”不一定要設計的過于太復雜。簡單的說,驗證碼要起到必要的驗證和防護的作用,應做到以下兩點:1. 最好在45位隨機字符或數(shù)字,太少很容易被機器自動識別或匹配出來,太多會影響用戶心情。2. 可以通過顏色、背景圖片的適度增加識別難度。3.5.3 添加驗證碼生成頁驗證碼不是隨機從電腦中取出的已存放在電腦中的圖片,而是由網頁后臺程序(即文件擴展名為XXXX.aspx.cs中的程序)在網頁上逐筆“畫”出來的。因此,這種程序很復雜,普通編程人員很難掌握生成技術,但互聯(lián)網上有大量公開的專業(yè)人員編寫的此類程序供“免費”采用。站在專業(yè)人員的肩上,很容易做到一個普通人做不到的事情。提示:1. 運行網頁后臺程序“驗證碼.apx.cs”和運行網頁界面文件“驗證碼.aspx”結果是一樣的。每次運行,都會產生一個含有4位隨機數(shù)的圖片(圖3

溫馨提示

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

評論

0/150

提交評論