網站的個人化信息管理_第1頁
網站的個人化信息管理_第2頁
網站的個人化信息管理_第3頁
網站的個人化信息管理_第4頁
網站的個人化信息管理_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

網站的個人化信息管理第1頁,課件共35頁,創(chuàng)作于2023年2月本章重點

創(chuàng)建個性化信息屬性實現客戶端文件上傳生成網頁記事日歷網絡數據庫開發(fā)第2頁,課件共35頁,創(chuàng)作于2023年2月學習目標通過對如何在Web.Config中創(chuàng)建個人信息進行介紹,使讀者在掌握設計個性化網頁、編輯存儲個人化信息、遷移匿名Profile設置、文件上傳等技術的基礎上,充分利用ASP.NET2.0超強的個人化信息功能,非常方便地實現用戶的個人信息的存儲并運用。網絡數據庫開發(fā)第3頁,課件共35頁,創(chuàng)作于2023年2月網站提供個性化功能的主要用途(1)識別用戶身份(2)存儲用戶相關信息(3)提供個性化經驗網絡數據庫開發(fā)第4頁,課件共35頁,創(chuàng)作于2023年2月5.1創(chuàng)建個人化信息屬性個人化信息(Profile)可以記錄每個用戶專有的信息。簡單的說,Profile使用用戶唯一標識并為每一個用戶保存其對應信息的一個工具。網絡數據庫開發(fā)第5頁,課件共35頁,創(chuàng)作于2023年2月5.1.1創(chuàng)建Profile語法Asp.Net中有一套與用戶相關聯的屬性設置,可以通過在WebConfig里配置來直接使用,它的作用是:存儲和使用唯一與用戶對應的信息展現個人化版本的Web應用程序用戶的唯一身份標識在再次訪問時識別用戶網絡數據庫開發(fā)第6頁,課件共35頁,創(chuàng)作于2023年2月5.1.1創(chuàng)建Profile語法創(chuàng)建Profile的語法如下:<profile><providers/>//保存Profile信息的數據庫連接信息

<properties><addname=“屬性名”type=“數據類型“defaultValue=”默認值"

allowAnonymous=“true/false是否允許匿名"/>

<groupname=“組名稱"><addname=“組屬性名稱"defaultValue=""

type=""

allowAnonymous="false"/></group></properties></profile>網絡數據庫開發(fā)第7頁,課件共35頁,創(chuàng)作于2023年2月5.1.1創(chuàng)建Profile語法Profile對象與Membership機制有著密切關系,因為Profile對象存儲的數據默認是針對指定會員存儲的數據,這樣,當會員登錄網站之后,系統(tǒng)才能依據登錄會員從數據庫中取出對應的Profile對象。如在Web.config文件中添加下列代碼之后,其中的<authorization>標記將限制只有會員才能執(zhí)行此目錄的ASP.NET程序,如果尚未登錄,將自動跳轉至Login.aspx文件,要求用戶先登錄網站。<system.web><authorization><denyusers="?"/></authorization></system.web>網絡數據庫開發(fā)第8頁,課件共35頁,創(chuàng)作于2023年2月5.1.1創(chuàng)建Profile語法Profile對象與Session對象的比較:Profile對象與Session對象十分相似,與Session對象相似的地方在于,Profile對象時相對一個特定的用戶的,也就是說,每個Web應用程序的用戶都有自己的Profile對象。不同的是,Profile對象是持久對象。而Session對象是臨時的,當用戶離開網站后,或者Session對象Timeouot時,Session對象中保持的信息就會消失。Profile對象如何持久保持對象中的信息不丟失?網絡數據庫開發(fā)第9頁,課件共35頁,創(chuàng)作于2023年2月5.1.1創(chuàng)建Profile語法如何保存Profile對象中的信息:(1)創(chuàng)建數據庫:aspnet_regsql-Ap-sqlexportonlyprofilesetup.sql(2)添加數據庫連接提供器<profile><providers><addname="SqlProvider"

type="System.Web.Profile.SqlProfileProvider"connectionStringName="ProfileDatabase"

applicationName="ProfileSample"description="SampleforASP.NETprofileandProFileService"/></providers><properties>省略…………</properties></profile>網絡數據庫開發(fā)第10頁,課件共35頁,創(chuàng)作于2023年2月5.1.2Profile對象的簡單屬性一個Profile對象中可以存儲各種類型的信息,可以使簡單的String類型,也可以使復雜的自定義類型。例如:存儲用戶名,購物車信息等等。Profile對象的簡單屬性是指存儲單一信息的屬性。舉例:<properties><addname="username"defaultValue=""type="string"allowAnonymous="true"/></properties>網絡數據庫開發(fā)第11頁,課件共35頁,創(chuàng)作于2023年2月5.1.2Profile對象的簡單屬性讀取和存儲Profile信息的方法:讀取Profile對象的Name屬性到lable對象中顯示:Msg.text=Profile.Name把文本框的字符串寫入Profile對象的Name屬性值。Profile.Name=name.text網絡數據庫開發(fā)第12頁,課件共35頁,創(chuàng)作于2023年2月5.1.3Profile對象的群組屬性如果需要將幾個profile對象屬性一起工作,可以把它們放入一個組中,以方便管理。例如:<Profile>

<groupname=“student"><addname=“studentid"

type=“Int32"/>

<addname=“Name"

type=“String"/

<addname=“Score"

type=“Int32"/></group></Profile>訪問組中的屬性:Profile.組名.屬性名例如讀取學號的值,Proflie.student.Studentid網絡數據庫開發(fā)第13頁,課件共35頁,創(chuàng)作于2023年2月5.1.4遷移匿名Profile設置匿名個性化是讓沒有登錄網站的用戶都能擁有個性化功能,一般是使用Cookie存儲匿名用戶的相關數據來實現匿名個性化的功能。Profile對象即可用于匿名用戶也可以用于已認證用戶,但當用戶從匿名用戶狀態(tài)轉換為已認證用戶狀態(tài)時,匿名用戶的Profile對象的信息可以遷移至登錄用戶的Profile對象中。網絡數據庫開發(fā)第14頁,課件共35頁,創(chuàng)作于2023年2月5.1.4遷移匿名Profile設置允許匿名使用Profile屬性,并為每個匿名用戶創(chuàng)建一個唯一標識UID網絡數據庫開發(fā)第15頁,課件共35頁,創(chuàng)作于2023年2月5.1.4遷移匿名Profile設置ASP.NET的Profile對象能夠存儲匿名用戶的相關數據(不需要登錄網站),它使用GUID來識別匿名用戶。在Web.config文件中啟用匿名用戶識別的實現代碼如下:<anonymousIdentificationenabled="true"/>啟用了匿名用戶識別之后,就可以定義匿名用戶的Profile屬性了,代碼如下:<addname="WishList"allowAnonymous="true"type="System.Collections.ArrayList"/>網絡數據庫開發(fā)第16頁,課件共35頁,創(chuàng)作于2023年2月5.1.4遷移匿名Profile設置舉例:使用匿名個性化,模擬網站購物車功能,允許用戶在尚未登錄網站前就可以選擇商品,等到登錄網站之后,再將匿名選擇的清單整合到會員的Profile對象中。使用Button控件的單擊事件,分別實現添加和刪除客戶喜歡商品清單的集合對象。網絡數據庫開發(fā)第17頁,課件共35頁,創(chuàng)作于2023年2月5.1.4遷移匿名Profile設置protectedvoidbntAddwish_Click(objectsender,EventArgse)//添加喜歡的商品清單{if(txtBook.Text!=""){Profile.WishList.Remove(txtBook.Text.ToString());Profile.WishList.Add(txtBook.Text);}}protectedvoidbntDelwish_Click(objectsender,EventArgse)//刪除喜歡的商品清單{if(txtBook.Text!=""){Profile.WishList.Remove(txtBook.Text.ToString());}}網絡數據庫開發(fā)第18頁,課件共35頁,創(chuàng)作于2023年2月5.1.4遷移匿名Profile設置protectedvoidprofileInfo()

//顯示顧客喜歡的商品清單{stringoutput="";if(Profile.IsAnonymous==false){lblmsg.Text=Profile.Name;

}IEnumeratorenum1=Profile.WishList.GetEnumerator();while(enum1.MoveNext()){output=output+enum1.Current+"<br>";}lblLists.Text=output;

}網絡數據庫開發(fā)第19頁,課件共35頁,創(chuàng)作于2023年2月5.1.4遷移匿名Profile設置當匿名用戶登錄網站時,其選擇的清單就需要合并至會員的Profile屬性中,在Global.asas文件中需要創(chuàng)建Profile_MigrateAnonymous事件處理程序。voidProfile_MigrateAnonymous(Objects,ProfileMigrateEventArgse){ProfileCommonanonProfile=Profile.GetProfile(e.AnonymousID);if(anonProfile!=null&&anonProfile.WishList!=null){IEnumeratorenum1=anonProfile.WishList.GetEnumerator();while(enum1.MoveNext()){Profile.WishList.Remove(enum1.Current);Profile.WishList.Add(enum1.Current);}}Profile.Save();}網絡數據庫開發(fā)第20頁,課件共35頁,創(chuàng)作于2023年2月5.1.5使用Cookies創(chuàng)建個性化網絡數據庫開發(fā)第21頁,課件共35頁,創(chuàng)作于2023年2月5.2實現客戶端文件上傳文件上傳技術是一項很實用的技術,有著廣泛的應用,用戶可以使用上傳功能來傳送個性化所需的圖片,文件或添加電子郵件附件。在ASP.NET程序中是使用System.IO命名空間的HttpPostedFile類來進行客戶端的文件上傳(文件上傳的文件夾需要添加用戶的寫入權限才能上傳文件)。網絡數據庫開發(fā)第22頁,課件共35頁,創(chuàng)作于2023年2月5.2實現客戶端文件上傳HtmlInputFile對象與HTML文件輸入元素對應。你可用由id屬性指定的名稱來訪問它。它有下列屬性:*PostedFile:上傳文件的內容。*Accept:以逗號界定的MIME類型列表,指定可能提交的文件類型。*MaxLength:要提交的文件的最長文件名長度(包括路徑)。*Size:用戶輸入/選擇上傳文件的文本框寬度。以下是HTML輸入控制的方法:*FileName:用戶計算機上的完全合格的文件名稱。它還包含上傳文件的本地路徑。*ContentLength:上傳文件的大?。ㄗ止?jié))。*ContentType:上傳文件的MIME內容類型。*InputStream:返回一個指向上傳文件的流(Stream)對象,允許你閱讀文件內容。*SaveAs:方便保存上傳文件的內容。網絡數據庫開發(fā)第23頁,課件共35頁,創(chuàng)作于2023年2月5.2.1用HtmlInputFile控件實現文件上傳

stringup_path=Server.MapPath("images");//獲取HttpPostedFile對象HttpPostedFilefile=filename.PostedFile;//檢查文件是否有內容if(file.ContentLength==0){

msg.Text=“請選擇上傳文件";

}else{file.SaveAs(up_path+"/"+Path.GetFileName(file.FileName));msg.Text="文件已經成功的上傳.....";

}網絡數據庫開發(fā)第24頁,課件共35頁,創(chuàng)作于2023年2月5.2.2顯示上傳文件信息UsingSystem.Text;//使用命名空間stringfilePath=file.FileName;output.Append("文件路徑:"+filePath+"<br>");stringfile_Name=Path.GetFileName(filePath);output.Append("文件名稱:"+file_Name+"<br>");

stringfileExtension=Path.GetExtension(file_Name);output.Append("副文件名:"+fileExtension+"<br>");stringcontentInfo=file.ContentType;output.Append("ContentType:"+contentInfo+"<br>");stringsizeInfo=file.ContentLength.ToString()+"位元組";output.Append("文件尺寸:"+sizeInfo+"<br>");file.SaveAs(up_path+"/"+Path.GetFileName(file.FileName));msg.Text=output.ToString();網絡數據庫開發(fā)第25頁,課件共35頁,創(chuàng)作于2023年2月5.2用HtmlInputFile控件實現文件上傳上傳圖片還應該考慮上傳的文件類型和文件大小的限制。文件類型的限制通過擴展名的匹配可以完成文件大小的限制:ASP.NET中默認上傳文件的大小最大為4M。要改變默認值,可以修改Web.conifg文件的配置節(jié)點信息。<httpRuntimemaxRequestLength="102400"executionTimeout="600"useFullyQualifiedRedirectUrl="false"/>網絡數據庫開發(fā)第26頁,課件共35頁,創(chuàng)作于2023年2月5.2用HtmlInputFile控件實現文件上傳protectedboolIsAllowedExtension(HtmlInputFilehifile)//判斷上傳文件類型是否符合要求{stringstrOldFilePath="",strExtension="";//允許上傳的擴展名,可以改成從配置文件中讀出string[]arrExtension={".gif",".jpg",".jpeg",".bmp",".png"};if(hifile.PostedFile.FileName!=string.Empty){strOldFilePath=hifile.PostedFile.FileName;//取得上傳文件的擴展名strExtension=strOldFilePath.Substring(strOldFilePath.LastIndexOf("."));//判斷該擴展名是否合法for(inti=0;i<arrExtension.Length;i++){if(strExtension.Equals(arrExtension[i])){returntrue;}}}returnfalse;}網絡數據庫開發(fā)第27頁,課件共35頁,創(chuàng)作于2023年2月5.2用HtmlInputFile控件實現文件上傳//IsAllowedLength判斷上傳文件大小是否超過最大值IsAllowedLength判斷上傳文件大小是否超過最大值protectedboolIsAllowedLength(HtmlInputFilehifile){//允許上傳文件大小的最大值,可以保存在xml文件中,單位為KBinti=200;//如果上傳文件的大小超過最大值,返回flase,否則返回true.if(hifile.PostedFile.ContentLength>i*1024){returnfalse;}returntrue;}網絡數據庫開發(fā)第28頁,課件共35頁,創(chuàng)作于2023年2月5.2.3實現多個文件同時上傳//獲取網站的絕對路徑Stringup_path=Server.MapPath("images");//獲取HttpFileCollection對象HttpFileCollectionobjFileCollection;objFileCollection=Request.Files;HttpPostedFilefile;inti,counter;counter=0;//使用循環(huán)取出每一個HttpPostedFile對象for(i=0;i<=objFileCollection.Count-1;i++){file=objFileCollection[i];if(file.ContentLength!=0){//上傳文件file.SaveAs(up_path+"/"+Path.GetFileName(file.FileName));counter=counter+1;}msg.Text="共有["+counter+"]個文件成功上傳...";}網絡數據庫開發(fā)第29頁,課件共35頁,創(chuàng)作于2023年2月5.2.4向數據庫中上傳圖片一、建立數據庫(包含image字段)createdatabasebooksalegousebooksalegocreatetablebookinf( bookidvarchar(6)primarykey,--書號

booknamevarchar(30)notnull,--書名

bookpricemoneynotnull,--價格

bookdatedatetimenotnull,--出版日期

bookimageimage,--封面

contentypevarchar(50)--文件類型)網絡數據庫開發(fā)第30頁,課件共35頁,創(chuàng)作于2023年2月5.2.4向數據庫中上傳圖片二、設計程序界面三、編寫代碼1、讀取上傳的圖片文件數據Streamimagestram=upfile.InputStream;intfilelength=upfile.ContentLength;//獲取文件大小byte[]buffer=newbyte[filelength];

//定義數組imagestram.Read(buffer,0,filelength);imagestram.Close();網絡數據庫開發(fā)第31頁,課件共35頁,創(chuàng)作于2023年2月5.2.4向數據庫中上傳圖片2、將圖片記錄插入數據庫中(帶參數化的Insert語句)stringstrinsert="insertintobookinf(bookid,bookname,bookprice,bookdate,bookimage,contentype)values(@id,@name,@price,@date,@image,@contentype)";cmd.Parameters.Add(newSqlParameter("@id",SqlDbType.VarChar,6));cmd.Parameters.Add(newSqlParameter("@name",SqlDbType.VarChar,30));cmd.Parameters.Add(newSqlParameter("@price",SqlDbType.Money));cmd.Parameters.Add(newSqlParameter("@date",SqlDbType.DateTime));cmd.Parameters.Add(newSqlParameter("@image",SqlDbType.Image));cmd.Parameters.Add(newSqlParameter("@contentype",SqlDbType.VarChar,50));網絡數據庫開發(fā)第32頁,課件共35頁,創(chuàng)作于2023年2月5.2.4向數據庫中上傳圖片給指定參數賦值:cmd.Parameters["@id"].Value=txtid.Text;cmd.Parameters["@name"].Value=txtname.Text;cmd.Parameters["@price"].Value=txtprice.Text;cmd.Parameters["@date"].Value=txtdate.Text;cmd.Parameters["@image"

溫馨提示

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

評論

0/150

提交評論