小明音樂庫(kù)管理系統(tǒng)課件06. 第6章_第1頁(yè)
小明音樂庫(kù)管理系統(tǒng)課件06. 第6章_第2頁(yè)
小明音樂庫(kù)管理系統(tǒng)課件06. 第6章_第3頁(yè)
小明音樂庫(kù)管理系統(tǒng)課件06. 第6章_第4頁(yè)
小明音樂庫(kù)管理系統(tǒng)課件06. 第6章_第5頁(yè)
已閱讀5頁(yè),還剩57頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

小明音樂庫(kù)管理系統(tǒng)第6章實(shí)現(xiàn)后臺(tái)管理學(xué)習(xí)目標(biāo)掌握數(shù)據(jù)列表頁(yè)面的設(shè)計(jì),以及增加、修改、刪除操作頁(yè)面的設(shè)計(jì)。了解網(wǎng)站頁(yè)面文件的分文件夾保存原則。理解母版頁(yè)的概念,掌握創(chuàng)建和使用母版頁(yè)的方法。理解ASP.NET中URL路徑的處理。熟練掌握SQL語(yǔ)句INSERT、UPDATE,理解SQL語(yǔ)句集合操作的特性。熟練掌握SQL語(yǔ)句DELETE,了解“主-從”記錄在刪除操作時(shí)的兩種處理方法。理解Response.Redirect()頁(yè)面重定向方法的工作原理。掌握編輯數(shù)據(jù)頁(yè)面、刪除數(shù)據(jù)頁(yè)面的ASP.NET實(shí)現(xiàn)方法,掌握ASP.NET隱藏控件HiddenField的使用技巧。了解SQL注入攻擊。掌握ASP.NET下拉框DropDownList控件的使用。掌握ASP.NET文件上傳FileUpload控件的使用,掌握上傳文件的處理方法。掌握SQLServer通過(guò)@@IDENITY獲取新增記錄ID的方法。

6.1界面設(shè)計(jì)

后臺(tái)頁(yè)面通常用于完成網(wǎng)站數(shù)據(jù)的維護(hù),也就是數(shù)據(jù)的增加、修改和刪除。對(duì)于MPMM來(lái)說(shuō),就是音樂分類和音樂資料數(shù)據(jù)的維護(hù)1.音樂分類維護(hù)頁(yè)面音樂分類維護(hù)主頁(yè)面

添加和修改音樂分類添加和修改音樂分類的頁(yè)面基本相同,統(tǒng)一到單個(gè)編輯頁(yè)面

刪除頁(yè)面和編輯頁(yè)面類似的界面增加刪除確認(rèn)提示修改按鈕標(biāo)題將文本框控件設(shè)置為只讀模式

2.音樂資料維護(hù)頁(yè)面主頁(yè)面和音樂分類維護(hù)主頁(yè)面基本相同

增加和修改音樂資料的頁(yè)面通過(guò)選擇的方式來(lái)指定音樂分類、媒體類型能上傳圖片能夠上傳對(duì)應(yīng)的音樂文件

刪除音樂頁(yè)面MusicDelete.apsx,沒有什么特別之處3.母版頁(yè)技術(shù)MPMM中頁(yè)面不多,可將所有后臺(tái)頁(yè)面保存到Admin文件夾中修改導(dǎo)航鏈接<ahref="Admin/CategoryMgr.aspx">MPMM每個(gè)頁(yè)面的整體布局都有導(dǎo)航鏈接打開每個(gè)頁(yè)面分別進(jìn)行修改ASP.NET提供了母版頁(yè)的功能使用母版頁(yè),不同的頁(yè)面可以共享同一個(gè)布局通常把使用母版頁(yè)的頁(yè)面稱為子頁(yè)面

1) 添加母版頁(yè)母版頁(yè)后臺(tái)類繼承自System.Web.UI.MasterPage類母版頁(yè)基本上就是一個(gè)ASP.NET頁(yè)面可以從Default.aspx中復(fù)制主要的頁(yè)面代碼母版頁(yè)界面代碼

2) 占位控件母版頁(yè)中使用ASP.NET控件ContentPlaceHolder替換原來(lái)的分類導(dǎo)航列表和音樂資料列表為具體頁(yè)面內(nèi)容“占位置”的“占位控件”子頁(yè)面必須有和占位控件相同數(shù)量的“內(nèi)容控件”來(lái)提供最終的實(shí)際內(nèi)容

3) 網(wǎng)站絕對(duì)路徑母版頁(yè)被不同文件下的子頁(yè)面所使用時(shí)母版頁(yè)中的URL不能使用相對(duì)路徑(相對(duì)于子頁(yè)面,子頁(yè)面位置不固定)母版頁(yè)也不能使用絕對(duì)路徑(不適用于子站部署方式)從網(wǎng)站開始的絕對(duì)路徑表示方法嵌入頁(yè)面的ASP.NET代碼

4) 使用母版頁(yè)創(chuàng)建新ASP.NET頁(yè)面時(shí)選中“選擇母版頁(yè)”選項(xiàng)

CategoryMgr.aspx頁(yè)面

完整代碼6.2數(shù)據(jù)更新功能

SQL語(yǔ)言中,用于實(shí)現(xiàn)數(shù)據(jù)增、刪、改功能的語(yǔ)句主要就是三條:INSERT、DELETE和UPDATE,注意它們也是以集合為單位進(jìn)行操作的1.INSERT--新增1條記錄默認(rèn)字段清單自增長(zhǎng)列、時(shí)間戳列無(wú)需提供值不賦值的字段,需顯式提供NULL值指定字段清單自動(dòng)生成值、設(shè)置有默認(rèn)值、允許為空的字段可以跳過(guò)字段順序可以隨意,VALUES子句提供值順序和其保持一致

1.INSERT--批量新增記錄給Category表中每條記錄增加一個(gè)默認(rèn)下級(jí)分類查詢和新增分兩步進(jìn)行,子查詢就是標(biāo)準(zhǔn)的SELECT查詢語(yǔ)句,可以很復(fù)雜子查詢結(jié)果列可用計(jì)算列,計(jì)算列可以是很復(fù)雜的表達(dá)式INSERT語(yǔ)句只關(guān)心子查詢列的順序,不關(guān)心查詢結(jié)果的列名

2.UPDATE

省略WHERE子句,就表示更新表中所有數(shù)據(jù)2.UPDATE--表達(dá)式賦值

查詢的結(jié)果是一個(gè)唯一值,就可以將查詢當(dāng)作普通的值集合更新要小心,做試驗(yàn)時(shí),先做好數(shù)據(jù)庫(kù)備份3.DELETE

刪除表用DROPTABLE外鍵約束:在定義外鍵時(shí)選擇“拒絕刪除”方式,存在“從記錄”的情況下無(wú)法刪除“主記錄”選擇“級(jí)聯(lián)刪除”的方式,在刪除“主記錄”之前會(huì)自動(dòng)刪除所有的“從記錄”絕大部分情況下,開發(fā)人員應(yīng)該選擇“拒絕刪除”的方式省略WHERE子句,表示刪除表中所有數(shù)據(jù)6.3音樂分類管理

1.主頁(yè)面CategoryMgr.aspx頁(yè)面頁(yè)面布局通過(guò)表格實(shí)現(xiàn)第一行為“添加”按鈕第二行為一個(gè)Literal控件,用于放置代碼生成的管理列表

頁(yè)面初始化代碼頁(yè)面初始化時(shí),需要生成分類的管理列表分類的信息列表和修改、刪除的超鏈接在Page_Load()方法中調(diào)用BuildCategoryList()方法實(shí)現(xiàn)不存在處理回發(fā)請(qǐng)求的問題,所以不需要檢查IsPostBack屬性值

BuildCategoryList()方法在讀取數(shù)據(jù)前,先為表格添加了一行標(biāo)題表格標(biāo)題行也用<tr>標(biāo)記定義,但其中的列用<th>標(biāo)記定義<th>標(biāo)記和<td>標(biāo)記用法完全一樣,語(yǔ)義上前者表示標(biāo)題,后者表示內(nèi)容在MPMM中,不考慮實(shí)現(xiàn)多級(jí)音樂分類,盡管數(shù)據(jù)庫(kù)中有上下級(jí)分類的設(shè)計(jì)程序代碼中通過(guò)WHEREParent_IDISNULL將所有下級(jí)音樂分類都過(guò)濾掉描述字段的處理采用了超長(zhǎng)截?cái)嘧远x工具類CommonTools的靜態(tài)方法TrimByLength()“修改”和“刪除”超鏈接通過(guò)GET方法傳遞需要修改或刪除的分類ID字段值

頁(yè)面重定向雙擊頁(yè)面上的“添加”按鈕,在頁(yè)面類中添加用于處理單擊事件的btAdd_Click()方法

Redirect()方法在返回的HTML頁(yè)面中放置一條HTML跳轉(zhuǎn)指令;瀏覽器收到HTML代碼時(shí)根據(jù)指令重新向服務(wù)器發(fā)出訪問CategoryEdit.aspx頁(yè)面的請(qǐng)求2.編輯頁(yè)面1)在Admin文件夾下添加CategoryEdit.aspx頁(yè)面頁(yè)面布局仍然通過(guò)表格實(shí)現(xiàn)第一列為L(zhǎng)able文本標(biāo)簽控件第二列是TextBox文本框控件頁(yè)面代碼輸入描述的TextBox文本框使用多行模式表格最下面兩行內(nèi)容是“保存”和“取消”按鈕,以及一個(gè)用于顯示提示信息的Lable控件

2)HiddenField控件HiddenField控件,對(duì)應(yīng)HTML表單中的隱藏域元素HiddenField控件和TextBox控件一樣,可以在發(fā)給客戶端瀏覽器的HTML代碼中保存一個(gè)值當(dāng)瀏覽器向服務(wù)器提交請(qǐng)求時(shí),作為Form表單數(shù)據(jù)的一部分發(fā)送給服務(wù)器這個(gè)控件不會(huì)顯示在瀏覽器中,所以叫做隱藏控件隱藏控件可以讓頁(yè)面攜帶一些信息,并在收到用戶發(fā)出的PostBack請(qǐng)求時(shí)取回這個(gè)信息音樂分類編輯頁(yè)面,通過(guò)ID屬性值為hideID的隱藏控件保存當(dāng)前正在編輯的音樂分類ID字段值

3)頁(yè)面初始化編輯頁(yè)面的初始化只在首次請(qǐng)求頁(yè)面時(shí)才需要進(jìn)行ASP.NET利用__ViewState隱藏控件在兩次請(qǐng)求之間保存ASP.NET控件的值,所以無(wú)需反復(fù)對(duì)回發(fā)頁(yè)面設(shè)置這些控件的值頁(yè)面中“保存”和“取消”按鈕觸發(fā)的PostBack請(qǐng)求,已經(jīng)被ASP.NET轉(zhuǎn)化為事件方式只需在相應(yīng)的事件處理方法中完成處理

頁(yè)面初始化代碼添加或修改音樂分類請(qǐng)求的區(qū)別在于查詢字符串變量id添加操作,設(shè)置hideID控件值為0修改操作,從數(shù)據(jù)庫(kù)獲取音樂分類,將其各字段值賦給對(duì)應(yīng)輸入控件,將音樂分類ID字段值保存在hideID中修改操作初始化時(shí),如果從數(shù)據(jù)庫(kù)獲取音樂分類失敗,則hideID控件值會(huì)保留為-1

4)新增和修改音樂分類編輯頁(yè)面中“取消”按鈕的功能只需要重定向(使用Redirect()方法)返回到音樂分類管理主頁(yè)面“保存”按鈕的功能根據(jù)hideID控件值判斷操作類型和需要修改的音樂分類執(zhí)行相應(yīng)的SQL語(yǔ)句代碼hideID控件值通過(guò)Value屬性獲取,通過(guò)Int32.TryParse()方法轉(zhuǎn)換成整型,保存在變量catId中通過(guò)DbCommand對(duì)象執(zhí)行SQL語(yǔ)句INSERT和UPDATE應(yīng)該調(diào)用ExcuteNoQuery()方法,通過(guò)該方法返回SQL命令影響的記錄數(shù)判斷SQL語(yǔ)句是否執(zhí)行成功

3.SQL注入攻擊當(dāng)需要把一些變量等的值嵌入到SQL語(yǔ)句中時(shí),通過(guò)拼裝字符串的方法來(lái)實(shí)現(xiàn)代碼非常簡(jiǎn)單,但存在著安全隱患在判斷網(wǎng)站可能用參數(shù)(查詢變量或表單變量)構(gòu)造SQL語(yǔ)句時(shí),通過(guò)巧妙構(gòu)造參數(shù),使得網(wǎng)站執(zhí)行特定SQL語(yǔ)句入侵者可以修改URL中傳遞的id值,將其改為以下字符串:

4.刪除頁(yè)面1) 頁(yè)面代碼刪除音樂分類頁(yè)面和編輯音樂分類頁(yè)面的布局基本相同修改TextBox控件為只讀修改“保存”按鈕標(biāo)題為“刪除”即可“刪除”按鈕以及刪除確認(rèn)提示的頁(yè)面代碼為:

2) 頁(yè)面初始化代碼和編輯頁(yè)面中處理編輯操作的代碼一模一樣考慮將其提取為一個(gè)公共方法

3) 刪除音樂分類“刪除”按鈕的處理需要構(gòu)造刪除音樂分類的SQL語(yǔ)句使用DbCommand對(duì)象的ExcuteNoQuery()方法代碼首先分析hideID隱藏控件值,獲取需要?jiǎng)h除的音樂分類ID字段值如果需要?jiǎng)h除的記錄已經(jīng)因?yàn)槟撤N原因被刪除了,那么影響的記錄數(shù)就是0,認(rèn)為刪除是成功刪除可能出現(xiàn)的外鍵約束錯(cuò)誤,通過(guò)try…catch代碼進(jìn)行捕獲,并提示用戶檢查是否存在屬于該音樂分類的音樂資料

6.4音樂資料管理

在Admin文件夾下新建音樂資料管理的主頁(yè)面MusicMgr.aspx。除了涉及的表、字段不一樣,其布局和音樂分類管理的主頁(yè)面基本相同,后臺(tái)的實(shí)現(xiàn)也基本相同1.編輯頁(yè)面初始化1) 在Admin文件夾下新建MusicEdit.aspx頁(yè)面表格布局:共設(shè)4列第1、3列為字段標(biāo)題第2、4列為輸入控件第1行的3、4列,輸入音樂資料詳細(xì)描述的TextBox控件,占據(jù)7行下拉列表:音樂資料有兩個(gè)外鍵,所屬音樂分類的Category_ID字段、媒體類型MediaType字段用下拉列表(DropDownList)控件,讓用戶選擇直觀的選項(xiàng),程序自動(dòng)轉(zhuǎn)換選項(xiàng)為數(shù)據(jù)庫(kù)中實(shí)際存儲(chǔ)的值文件上傳:圖片和媒體文件是通過(guò)上傳(FileUpload)控件來(lái)實(shí)現(xiàn)設(shè)置顯示文件信息的Label控件刪除文件的按鈕。

頁(yè)面核心代碼2) 下拉列表ddlCategory下拉列表用于音樂分類的選擇,ddlMediaType下拉列表用于媒體類別的選擇ASP.NET的DropDownList控件對(duì)應(yīng)HTML表單中的<select></select>標(biāo)記下拉列表可供選擇的清單,通過(guò)控件的Items屬性設(shè)置Items屬性是一個(gè)ListItem對(duì)象的集合創(chuàng)建ListItem對(duì)象的代碼為newListItem(text,value)text參數(shù)指定選項(xiàng)顯示內(nèi)容,value參數(shù)指定選項(xiàng)取值ddlCategory下拉列表展示音樂分類名稱,實(shí)際保存分類的ID字段值

SELECTID,NameFROMCategoryWHEREParent_IDISNULLSELECTCode,NameFROMCodeNamesWHERECodeFor='Music.MediaType'設(shè)置下拉列表的當(dāng)前選項(xiàng)音樂資料修改頁(yè)面,需要顯示音樂資料的當(dāng)前音樂分類根據(jù)音樂資料的Category_ID字段值設(shè)置ddlCatgory下拉列表的當(dāng)前項(xiàng)通過(guò)設(shè)置DropDownList控件SelectedItem屬性,根據(jù)ListItem選項(xiàng)對(duì)象或SelectedValue屬性,根據(jù)ListItem選項(xiàng)值或SelectedIndex屬性,根據(jù)ListItem索引號(hào)(從0開始)

3) 頁(yè)面初始化代碼音樂資料編輯頁(yè)面初始化和音樂分類編輯頁(yè)面初始化的原理相同具體設(shè)置相對(duì)復(fù)雜一些刪除文件的btRemovePhoto和btRemoveMediaFile按鈕,只有在存在相應(yīng)文件的時(shí)候才需要通過(guò)按鈕的Visible屬性來(lái)控制按鈕是否可見Visible=true表示控件可見;否則就是不可見控件不可見,最終生成的頁(yè)面上沒有這個(gè)控件隱藏控件是存在的,只是瀏覽器不顯示這個(gè)控件而已無(wú)法用控件的不可見來(lái)代替隱藏控件

2.上傳文件管理1) 文件上傳控件FileUpload文件上傳控件對(duì)應(yīng)HTML表單中的<inputtype="file">標(biāo)記在頁(yè)面瀏覽時(shí)展示成一個(gè)文本框和一個(gè)瀏覽按鈕單擊瀏覽按鈕打開客戶端本地的打開文件對(duì)話框選擇文件后,文本框顯示該文件的全路徑名稱此時(shí)文件并沒有上傳服務(wù)器頁(yè)面被回發(fā)時(shí)(如單擊表單保存按鈕后),文件數(shù)據(jù)才會(huì)作為表單數(shù)據(jù)的一部分和新的請(qǐng)求一起發(fā)送給Web服務(wù)器文件上傳控件頁(yè)面的后臺(tái)代碼中可以直接使用文件上傳控件的方法和屬性完成對(duì)文件數(shù)據(jù)的處理

處理音樂資料圖片文件HasFile屬性值SaveAs()方法,指定服務(wù)器上用于保存文件的完整路徑不能直接給出保存上傳文件的完整路徑首先將相對(duì)路徑轉(zhuǎn)換成網(wǎng)站絕對(duì)路徑,也就是在相對(duì)路徑前添加~符號(hào)調(diào)用Server對(duì)象的MapPath()方法將網(wǎng)站絕對(duì)路徑轉(zhuǎn)換成操作系統(tǒng)的完整路徑

2) 文件夾權(quán)限正確設(shè)置好操作系統(tǒng)的文件夾權(quán)限IIS_IUSRS用戶組不同版本的Windows和IIS所用的默認(rèn)用戶組有所不同權(quán)限默認(rèn)為讀取選中權(quán)限列表中的完全控制“允許”復(fù)選框

針對(duì)上傳文件夾3) 文件命名方案保留原文件名:原文件名可能重復(fù),會(huì)覆蓋其他記錄的同名文件檢查是否重名,如果重名則拒絕,用戶體驗(yàn)很差隨機(jī)生成文件名:從概率上來(lái)說(shuō)可以“保證”文件名不會(huì)重復(fù),例如GUID生成技術(shù)程序首先生成隨機(jī)文件名,然后將文件名保存到數(shù)據(jù)庫(kù)的相應(yīng)字段中根據(jù)記錄生成文件名:采用記錄關(guān)鍵字或包含記錄關(guān)鍵字的方法來(lái)生成文件名可以保證文件名不重復(fù)實(shí)現(xiàn)時(shí)需要運(yùn)用一些小技巧

根據(jù)記錄生成文件名音樂圖片文件名為photo_<id>,媒體文件名為music_<id><id>表示對(duì)應(yīng)音樂資料記錄ID主關(guān)鍵字文件上傳控件的FileName屬性獲取原文件名,然后調(diào)用System.IO.Path類的GetExtension()靜態(tài)方法獲取原文件名的擴(kuò)展名(包含有分隔符“.”)使用音樂資料的ID字段值和擴(kuò)展名拼裝出最終的文件名

CommonTools.SaveUploadFile()

CommonTools不是頁(yè)面類,無(wú)法直接使用頁(yè)面對(duì)象的Server屬性4) 新增記錄ID字段值新增記錄,自增長(zhǎng)字段的值需在新增語(yǔ)句執(zhí)行成功之后才會(huì)自動(dòng)產(chǎn)生SQLSERVER提供了一個(gè)名為@@IDENTITY的系統(tǒng)變量,可以返回最近新增的標(biāo)識(shí)字段值在程序中獲取這個(gè)新增標(biāo)識(shí)字段值,新增音樂資料方法中再介紹

由兩條SQL語(yǔ)句構(gòu)成:INSERTINTOMusic(…)VALUES(…);SELECT@@IDENTITY5) 刪除文件刪除記錄的同時(shí)也應(yīng)該刪除對(duì)應(yīng)的文件若刪除文件失敗,則不能刪除記錄,否則文件就變成了和記錄無(wú)關(guān)的“孤兒”CommonTools.DeleteFile()

3.實(shí)現(xiàn)新增和修改為了讓代碼更加清晰,新增和修改音樂資料的代碼都封裝成編輯頁(yè)面類的私有方法1) 新增音樂資料

2) 修改音樂資料修改音樂資料的EditMusic()方法實(shí)現(xiàn)根據(jù)指定音樂資料ID字段值修改對(duì)應(yīng)記錄的操作可模仿修改音樂分類的代碼

3) 處理上傳文件頁(yè)面類的私有方法SaveMusicFiles()保存圖片文件和媒體文件登記到對(duì)應(yīng)數(shù)據(jù)庫(kù)記錄中

4) 處理保存按鈕事件前述幾個(gè)方法綜合起來(lái)完成音樂資料的保存工作為btSave按鈕添加單擊事件處理代碼獲取保存在hideID隱藏控件中的音樂資料ID字段值創(chuàng)建SqlCommand對(duì)象用于多次訪問數(shù)據(jù)庫(kù)根據(jù)musicId參數(shù)值調(diào)用AddMusic()或EditMusic方法如果失?。╩usicId==-1)則提示錯(cuò)誤成功則調(diào)用SaveMusicFiles()方法保存上傳文件保存成功的話就返回音

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論