蘇玉梅 孫守強(qiáng)
摘 要:ASP.NET技術(shù)因其簡(jiǎn)單、易上手,成為了很多網(wǎng)站開發(fā)者采用的開發(fā)平臺(tái)。本文以一個(gè)網(wǎng)站開發(fā)案例給出了一個(gè)快速進(jìn)行網(wǎng)站設(shè)計(jì)與制作的流程,同時(shí)講解了ASP.NET中的母版頁技術(shù)、導(dǎo)航技術(shù)、角色認(rèn)證技術(shù)、格式化數(shù)據(jù)輸入、數(shù)據(jù)加密技術(shù)、驗(yàn)證碼技術(shù)和數(shù)據(jù)庫訪問技術(shù)等。
關(guān)鍵詞:ASP.NET;網(wǎng)站開發(fā)流程;網(wǎng)站開發(fā)技術(shù)
1 前言
ASP.NET因其簡(jiǎn)單、易學(xué)成為了網(wǎng)站業(yè)余愛好者和高校網(wǎng)站開發(fā)課程普遍選擇的一個(gè)技術(shù)工具,關(guān)于這方面的書籍和資料很多,但是能使學(xué)習(xí)者快速掌握ASP.NET技術(shù)的總結(jié)資料卻很少,本文結(jié)合一個(gè)網(wǎng)站開發(fā)案例對(duì)ASP.NET中的技術(shù)進(jìn)行總結(jié),希望給閱讀者可以提供一定的幫助。
2 網(wǎng)站案例說明
本網(wǎng)站將結(jié)合SQLServer,創(chuàng)建一個(gè)數(shù)據(jù)庫(如:test),創(chuàng)建一個(gè)數(shù)據(jù)表(如:table1),字段有:學(xué)號(hào)(如:id,主鍵)、密碼(pwd)、姓名(name)、性別(sex)、角色(role,保存用戶角色信息)、身份證號(hào)(card)、照片(photo,用于保存照片存放的路徑)。
3母版頁的設(shè)計(jì)與導(dǎo)航的添加
MasterPage用于定義網(wǎng)站中不同網(wǎng)頁的相同部分,例如網(wǎng)站的格局、頁頭、頁腳、導(dǎo)航欄等,實(shí)現(xiàn)網(wǎng)站的模版功能。在Visual Studio中,通過表格可以快速的對(duì)網(wǎng)頁進(jìn)行布局;通過Menu和TreeView控件添加菜單或?qū)Ш絽^(qū)域,其中的SiteMapPath控件更是一個(gè)極為好用的獲取網(wǎng)站地圖的控件,當(dāng)然之前需要添加Web.SiteMap站點(diǎn)地圖文件,規(guī)劃網(wǎng)站中文件之間的邏輯層次。
4 角色認(rèn)證技術(shù)
本網(wǎng)站要求具備管理員和用戶兩個(gè)角色,如:admin(管理員角色)、user(注冊(cè)用戶角色)。
1)在網(wǎng)站中分別建立管理員和注冊(cè)用戶訪問的文件夾,可放置不同角色訪問的頁面、圖片、視頻、動(dòng)畫等各種資源文件。
2)在文件夾中分別創(chuàng)建Web.Config文件,如:注冊(cè)用戶文件夾中的配置文件參考代碼如下:
3)角色、用戶和權(quán)限信息不建議大家采納系統(tǒng)自帶的數(shù)據(jù)庫進(jìn)行信息的保存,訪問性太差,在Global.asax文件的Application_AuthenticateRequest事件中,將當(dāng)前用戶的標(biāo)識(shí)與當(dāng)前用戶登錄驗(yàn)證票據(jù)中保存的用戶角色進(jìn)行匹配。
5 格式化數(shù)據(jù)輸入
驗(yàn)證控件用于對(duì)指定的Web控件檢查輸入的數(shù)據(jù)是否符合某些規(guī)則(例如必須輸入非空數(shù)據(jù)、數(shù)據(jù)格式與范圍應(yīng)滿足一定的要求等)。如非空驗(yàn)證控件RequiredFieldValidator,格式驗(yàn)證控件RegularExpressionValidator,范圍驗(yàn)證控件RangeValidator,比較驗(yàn)證控件CompareValidator等。
6數(shù)據(jù)加密、驗(yàn)證碼等網(wǎng)站安全訪問技術(shù)
在上面的用戶注冊(cè)中,密碼數(shù)據(jù)在寫入數(shù)據(jù)庫之前最好要進(jìn)行加密,防止數(shù)據(jù)庫數(shù)據(jù)泄漏后的密碼泄密,在ASP.NET中對(duì)文本框數(shù)據(jù)進(jìn)行加密可以采用md5技術(shù)完成,再存儲(chǔ)到數(shù)據(jù)庫中:
FormsAuthentication.HashPasswordForStoringInConfigFile(Server.HtmlEncode(txtuserpwd.Text),"md5");
驗(yàn)證碼是一種防范Cookie數(shù)據(jù)自動(dòng)保存而引起的憑據(jù)被截取技術(shù),從自己服務(wù)器發(fā)起的表單進(jìn)行驗(yàn)證便可解決這一漏洞,隨機(jī)產(chǎn)生的驗(yàn)證碼和文本框比較來實(shí)現(xiàn),關(guān)于產(chǎn)生圖片驗(yàn)證碼的技術(shù)源碼網(wǎng)絡(luò)上的資源有很多,大家可以進(jìn)行自由下載參考。
7數(shù)據(jù)庫訪問技術(shù)
1)ADO.NET作為網(wǎng)頁與數(shù)據(jù)庫訪問的接口,提供強(qiáng)有力的對(duì)象支持,在實(shí)現(xiàn)過程中,我們可以基于以下兩種策略來實(shí)現(xiàn)。一種策略是連接對(duì)象Connection(指定數(shù)據(jù)庫信息)、命令對(duì)象Command(查詢、添加、修改、刪除)、數(shù)據(jù)讀取對(duì)象DataReader(執(zhí)行操作后的臨時(shí)數(shù)據(jù)表,給應(yīng)用程序提供執(zhí)行操作后的結(jié)果);一種策略是連接對(duì)象Connection、數(shù)據(jù)適配器對(duì)象DataAdaper(負(fù)責(zé)數(shù)據(jù)的傳輸)、數(shù)據(jù)集對(duì)象DataSet(臨時(shí)數(shù)據(jù)庫,保存執(zhí)行后的臨時(shí)數(shù)據(jù),供應(yīng)用程序訪問)。
2)從vs2005以后版本的.NET開發(fā)平臺(tái),增加了使用數(shù)據(jù)源直接操作數(shù)據(jù)庫的功能,省去了連接的過程和臨時(shí)數(shù)據(jù)操作。
3)數(shù)據(jù)批量導(dǎo)入,借助文件上傳控件導(dǎo)入EXCEL文件,借助ADO.NET實(shí)現(xiàn)數(shù)據(jù)的導(dǎo)入,借助GridView控件進(jìn)行數(shù)據(jù)的顯示,最后使用For循環(huán)實(shí)現(xiàn)數(shù)據(jù)的添加。
①文件的導(dǎo)入:filepath = Server.MapPath("~\\MSadmin\\") + "excel.xls";FileUpload1.SaveAs(filepath);
GridView1.DataSource = CreateDataSource();
②借助ADO.NET實(shí)現(xiàn)數(shù)據(jù)的導(dǎo)入,即CreateDataSource()方法實(shí)現(xiàn)數(shù)據(jù)的連接,數(shù)據(jù)適配器的設(shè)置,生成的數(shù)據(jù)集對(duì)象作為函數(shù)的返回值,以綁定到GridView控件中。
③通過For循環(huán)將GridView中的數(shù)據(jù)進(jìn)行讀取并寫入到數(shù)據(jù)庫中。
4)數(shù)據(jù)批量導(dǎo)出,借助于Gridview將查詢的結(jié)果先進(jìn)行顯示,然后將表格中的數(shù)據(jù)進(jìn)行導(dǎo)出到EXCEL中,關(guān)鍵代碼為:
Response.AppendHeader("Content-Disposition","attachment;filename=" + HttpUtility.UrlEncode("表名.xls",Encoding.UTF8).ToString());
8 結(jié)論
通過一個(gè)實(shí)際的網(wǎng)站案例,從網(wǎng)站布局設(shè)計(jì)到網(wǎng)站安全防范、網(wǎng)站技術(shù)實(shí)現(xiàn),本文給出了一個(gè)概要框架,限于篇幅的原因,很多技術(shù)細(xì)節(jié)沒有體現(xiàn);當(dāng)然,ASP.NET網(wǎng)站開發(fā)技術(shù)還有很多,本人也在學(xué)習(xí)過程中,論文所列觀點(diǎn)與技術(shù)點(diǎn)僅供參考,不恰當(dāng)之處還請(qǐng)閱讀者多多指教。
參考文獻(xiàn):
[1]孫守強(qiáng).“基于ASP.NET平臺(tái)的安全網(wǎng)站編程技術(shù)”.電子技術(shù)與軟件工程,2015.6.
[2]程不功.《ASP.NET 2.0動(dòng)態(tài)網(wǎng)站開發(fā)教程》.清華大學(xué)出版社,2008.1
[3]趙強(qiáng)、張紅中.“基于ASP.NET的網(wǎng)站系統(tǒng)安全性設(shè)計(jì)與實(shí)現(xiàn)”.計(jì)算機(jī)應(yīng)用,2008.12.