版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网站的个人化信息管理第一页,共三十五页,2022年,8月28日本章重点
创建个性化信息属性实现客户端文件上传生成网页记事日历第二页,共三十五页,2022年,8月28日网络数据库开发学习目标通过对如何在Web.Config中创建个人信息进行介绍,使读者在掌握设计个性化网页、编辑存储个人化信息、迁移匿名Profile设置、文件上传等技术的基础上,充分利用ASP.NET2.0超强的个人化信息功能,非常方便地实现用户的个人信息的存储并运用。第三页,共三十五页,2022年,8月28日网络数据库开发网站提供个性化功能的主要用途(1)识别用户身份(2)存储用户相关信息(3)提供个性化经验第四页,共三十五页,2022年,8月28日网络数据库开发5.1创建个人化信息属性个人化信息(Profile)可以记录每个用户专有的信息。简单的说,Profile使用用户唯一标识并为每一个用户保存其对应信息的一个工具。第五页,共三十五页,2022年,8月28日网络数据库开发5.1.1创建Profile语法Asp.Net中有一套与用户相关联的属性设置,可以通过在WebConfig里配置来直接使用,它的作用是:存储和使用唯一与用户对应的信息展现个人化版本的Web应用程序用户的唯一身份标识在再次访问时识别用户第六页,共三十五页,2022年,8月28日网络数据库开发5.1.1创建Profile语法创建Profile的语法如下:<profile><providers/>//保存Profile信息的数据库连接信息
<properties><addname=“属性名”type=“数据类型“defaultValue=”默认值"
allowAnonymous=“true/false是否允许匿名"/>
<groupname=“组名称"><addname=“组属性名称"defaultValue=""
type=""
allowAnonymous="false"/></group></properties></profile>第七页,共三十五页,2022年,8月28日网络数据库开发5.1.1创建Profile语法Profile对象与Membership机制有着密切关系,因为Profile对象存储的数据默认是针对指定会员存储的数据,这样,当会员登录网站之后,系统才能依据登录会员从数据库中取出对应的Profile对象。如在Web.config文件中添加下列代码之后,其中的<authorization>标记将限制只有会员才能执行此目录的ASP.NET程序,如果尚未登录,将自动跳转至Login.aspx文件,要求用户先登录网站。<system.web><authorization><denyusers="?"/></authorization></system.web>第八页,共三十五页,2022年,8月28日网络数据库开发5.1.1创建Profile语法Profile对象与Session对象的比较:Profile对象与Session对象十分相似,与Session对象相似的地方在于,Profile对象时相对一个特定的用户的,也就是说,每个Web应用程序的用户都有自己的Profile对象。不同的是,Profile对象是持久对象。而Session对象是临时的,当用户离开网站后,或者Session对象Timeouot时,Session对象中保持的信息就会消失。Profile对象如何持久保持对象中的信息不丢失?第九页,共三十五页,2022年,8月28日网络数据库开发5.1.1创建Profile语法如何保存Profile对象中的信息:(1)创建数据库: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>第十页,共三十五页,2022年,8月28日网络数据库开发5.1.2Profile对象的简单属性一个Profile对象中可以存储各种类型的信息,可以使简单的String类型,也可以使复杂的自定义类型。例如:存储用户名,购物车信息等等。Profile对象的简单属性是指存储单一信息的属性。举例:<properties><addname="username"defaultValue=""type="string"allowAnonymous="true"/></properties>第十一页,共三十五页,2022年,8月28日网络数据库开发5.1.2Profile对象的简单属性读取和存储Profile信息的方法:读取Profile对象的Name属性到lable对象中显示:Msg.text=Profile.Name把文本框的字符串写入Profile对象的Name属性值。Profile.Name=name.text第十二页,共三十五页,2022年,8月28日网络数据库开发5.1.3Profile对象的群组属性如果需要将几个profile对象属性一起工作,可以把它们放入一个组中,以方便管理。例如:<Profile>
<groupname=“student"><addname=“studentid"
type=“Int32"/>
<addname=“Name"
type=“String"/
<addname=“Score"
type=“Int32"/></group></Profile>访问组中的属性:Profile.组名.属性名例如读取学号的值,第十三页,共三十五页,2022年,8月28日网络数据库开发5.1.4迁移匿名Profile设置匿名个性化是让没有登录网站的用户都能拥有个性化功能,一般是使用Cookie存储匿名用户的相关数据来实现匿名个性化的功能。Profile对象即可用于匿名用户也可以用于已认证用户,但当用户从匿名用户状态转换为已认证用户状态时,匿名用户的Profile对象的信息可以迁移至登录用户的Profile对象中。第十四页,共三十五页,2022年,8月28日网络数据库开发5.1.4迁移匿名Profile设置允许匿名使用Profile属性,并为每个匿名用户创建一个唯一标识UID第十五页,共三十五页,2022年,8月28日网络数据库开发5.1.4迁移匿名Profile设置ASP.NET的Profile对象能够存储匿名用户的相关数据(不需要登录网站),它使用GUID来识别匿名用户。在Web.config文件中启用匿名用户识别的实现代码如下:<anonymousIdentificationenabled="true"/>启用了匿名用户识别之后,就可以定义匿名用户的Profile属性了,代码如下:<addname="WishList"allowAnonymous="true"type="System.Collections.ArrayList"/>第十六页,共三十五页,2022年,8月28日网络数据库开发5.1.4迁移匿名Profile设置举例:使用匿名个性化,模拟网站购物车功能,允许用户在尚未登录网站前就可以选择商品,等到登录网站之后,再将匿名选择的清单整合到会员的Profile对象中。使用Button控件的单击事件,分别实现添加和删除客户喜欢商品清单的集合对象。第十七页,共三十五页,2022年,8月28日网络数据库开发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());}}第十八页,共三十五页,2022年,8月28日网络数据库开发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;
}第十九页,共三十五页,2022年,8月28日网络数据库开发5.1.4迁移匿名Profile设置当匿名用户登录网站时,其选择的清单就需要合并至会员的Profile属性中,在Global.asas文件中需要创建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();}第二十页,共三十五页,2022年,8月28日网络数据库开发5.1.5使用Cookies创建个性化第二十一页,共三十五页,2022年,8月28日网络数据库开发5.2实现客户端文件上传文件上传技术是一项很实用的技术,有着广泛的应用,用户可以使用上传功能来传送个性化所需的图片,文件或添加电子邮件附件。在ASP.NET程序中是使用System.IO命名空间的HttpPostedFile类来进行客户端的文件上传(文件上传的文件夹需要添加用户的写入权限才能上传文件)。第二十二页,共三十五页,2022年,8月28日网络数据库开发5.2实现客户端文件上传HtmlInputFile对象与HTML文件输入元素对应。你可用由id属性指定的名称来访问它。它有下列属性:*PostedFile:上传文件的内容。*Accept:以逗号界定的MIME类型列表,指定可能提交的文件类型。*MaxLength:要提交的文件的最长文件名长度(包括路径)。*Size:用户输入/选择上传文件的文本框宽度。以下是HTML输入控制的方法:*FileName:用户计算机上的完全合格的文件名称。它还包含上传文件的本地路径。*ContentLength:上传文件的大小(字节)。*ContentType:上传文件的MIME内容类型。*InputStream:返回一个指向上传文件的流(Stream)对象,允许你阅读文件内容。*SaveAs:方便保存上传文件的内容。第二十三页,共三十五页,2022年,8月28日网络数据库开发用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="文件已经成功的上传.....";
}第二十四页,共三十五页,2022年,8月28日网络数据库开发显示上传文件信息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();第二十五页,共三十五页,2022年,8月28日网络数据库开发5.2用HtmlInputFile控件实现文件上传上传图片还应该考虑上传的文件类型和文件大小的限制。文件类型的限制通过扩展名的匹配可以完成文件大小的限制:ASP.NET中默认上传文件的大小最大为4M。要改变默认值,可以修改Web.conifg文件的配置节点信息。<httpRuntimemaxRequestLength="102400"executionTimeout="600"useFullyQualifiedRedirectUrl="false"/>第二十六页,共三十五页,2022年,8月28日网络数据库开发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;}第二十七页,共三十五页,2022年,8月28日网络数据库开发5.2用HtmlInputFile控件实现文件上传//IsAllowedLength判断上传文件大小是否超过最大值IsAllowedLength判断上传文件大小是否超过最大值protectedboolIsAllowedLength(HtmlInputFilehifile){//允许上传文件大小的最大值,可以保存在xml文件中,单位为KBinti=200;//如果上传文件的大小超过最大值,返回flase,否则返回true.if(hifile.PostedFile.ContentLength>i*1024){returnfalse;}returntrue;}第二十八页,共三十五页,2022年,8月28日网络数据库开发5.2.3实现多个文件同时上传//获取网站的绝对路径Stringup_path=Server.MapPath("images");//获取HttpFileCollection对象HttpFileCollectionobjFileCollection;objFileCollection=Request.Files;HttpPostedFilefile;inti,counter;counter=0;//使用循环取出每一个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+"]个文件成功上传...";}第二十九页,共三十五页,2022年,8月28日网络数据库开发5.2.4向数据库中上传图片一、建立数据库(包含image字段)createdatabasebooksalegousebooksalegocreatetablebookinf( bookidvarchar(6)primarykey,--书号
booknamevarchar(30)notnull,--书名
bookpricemoneynotnull,--价格
bookdatedatetimenotnull,--出版日期
bookimageimage,--封面
contentypevarchar(50)--文件类型)第三十页,共三十五页,2022年,8月28日网络数据库开发5.2.4向数据库中上传图片二、设计程序界面三、编写代码1、读取上传的图片文件数据Streamimagestram=upfile.InputStream;intfilelength=upfile.ContentLength;//获取文件大小byte[]buffer=newbyte[filelength];
//定义数组imagestram.Read(buffer,0,filelength);imagestram.Close();第三十一页,共三十五页,2022年,8月28日网络数据库开发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));第三十二页,共三十五页,2022年,8月28日网络数据库开发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"].Valu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电子商务企业区域业务代表面试要点
- 世纪佳缘在线销售面试经验
- 生物医药研发人员的招聘面试技巧
- 新媒体公司在线客服专员的工作流程及规划
- 机构研究报告-消费行业市场前景及投资研究报告:亚洲消费者趋势洞察
- 铁路运输企业区域销售经理的职责与能力要求详解
- 正常分娩护理要点
- 分支行内控制度与操作规程
- 主管的沟通技巧与艺术培训资料
- 高新技术企业在中国的融资策略研究
- 超前地质预报施工质量通病、原因分析及应对措施
- 真菌课件介绍
- SF-36健康调查量表(含excel版)
- 房屋安全鉴定培训资料课件
- 学生安全员培训材料课件
- 大厦消防安全培训案例课件
- 液氧储罐安全操作规程标准版
- 资产出入库管理办法
- 水培蔬菜课件
- 2019新人教版高中英语新教材选择性必修三课文及翻译
- 金融控股公司经营管理
评论
0/150
提交评论