7+DataList控件、会话管理、存储过程.ppt_第1页
7+DataList控件、会话管理、存储过程.ppt_第2页
7+DataList控件、会话管理、存储过程.ppt_第3页
7+DataList控件、会话管理、存储过程.ppt_第4页
7+DataList控件、会话管理、存储过程.ppt_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

七、DataList控件、会话管理、存储过程,模块5会员购物管理,目标,DataList控件和Repearter控件的使用Session的使用使用ADO.NET调用存储过程,一、DataList控件和Repeater控件,1.1DataList控件DataList是一个可重复操作的控件,也就是说,它通过使用模板显示一个数据源的内容,而只需配置这些模板,数据会按模板中定义好的内容自动重复显示相应的内容。DataList提供了3种不同类型的模板来控制显示界面的不同方面。,(1)标题和页脚模板HeaderTemplate:定义列表标题的内容和布局FooterTemplate:定义列表脚注的内容和布局(2)项模板决定数据列表中列的内容,允许选择设置奇数行、偶数行、被选中行或者编辑行的外观,在这个模板中定义的内容,会根据有多少条数据,就重复多少次。ItemTemplate:定义列表中项目的内容和布局。必选AlternatingItemTemplate:定义交替项的内容和布局。,SelectedItemTemplate:定义列表中被选项目的内容和布局。EditItemTemplate:定义编辑项的内容和布局。(3)分隔行模板可以在数据行之间添加规则行或其他分隔符SeparatorTemplate:定义在各个项目(以及替换项)之间呈现分隔符。,操作类似GridView的模板列操作,在DataList模板中的Web服务器控件,都可以很方便的使用可视化的绑定设计工具,点击右上角的箭头符号,会弹出绑定的提示。可以设置Web服务器的控件的某个属性,例如Text和数据源中的某个字段自动进行绑定。,在页面设计的HTML源中可以看到在ItemTemplate模板中生成如下类似的代码:,凡某个属性不只是字段的显示,而是某个字符串的某种组合时,必须使用绑定表达式,这里的0表示要绑定的字段,1.2Repeater控件,Repeater控件与DataList控件的区别:没有编辑功能,其余功能与DataList一致,在布局使用上更自由灵活。,1.3使用PagedDataSource实现分页,PagedDataSource类封装了GridView控件的属性,从而使DataGrid控件可以执行分页。它是一个数据的容器,我们先把数据从数据库中读取出来放在这个容器中,然后设置容器的属性取出当前要显示的页上的部分数据,然后将此部分数据再绑定到页面上的显示控件上,可以将它用在Repeater和DataList中。下表列出了PagedDataSource类的常用属性:,PagedDataSource类进行分页的原理:创建分页的PagedDataSource对象,使之DataSource等于数据库中的表,在界面上设置HyperLink控件或Label控件显示分页导航和信息。代码见课本P136-137,任务6.1首页显示商品列表,在首页中显示横向排列的商品列表,使用分页显示。,二、会话状态(Session对象),Session又称为会话状态,是Web系统中最常用的状态,用于维护和当前浏览器实例相关的一些信息,是System.Web.SessionState.HttpSessionState类的一个实例,通过Page类的Session属性公开。举个例子来说,打电话时从拿起电话拨号到挂断电话这中间的一系列过程可以称之为一个Session。对于Web应用,则指的是从一个浏览器窗口打开到关闭这个期间。Session就是用来维护这个会话期间的值的。,Session对于每一个客户端(或者说浏览器实例)是“人手一份”,用户首次与Web服务器建立连接的时候,服务器会给用户分发一个SessionID作为标识。SessionID是一个由24个字符组成的随机字符串。用户每次提交页面,浏览器都会把这个SessionID包含在HTTP头中提交给Web服务器,这样Web服务器就能区分当前请求页面的是哪一个客户端。,例如:下面是用工具HttpWatchProfessional捕捉的HTTP请求与响应过程,当访问时,HTTP响应消息如下:,当用户登录后,页面被转向首页,这时捕捉到的HTTP请求信息为:,我们可以看出首次请求后,服务器端在客户端生成一个Cookie,这个就是会话性Cookie(SessionCookie),里面存储了服务器分配的SessionId,服务器依靠它来区分每个客户端。,生活中的实际例子:有个咖啡店,喝5杯送1杯,然而一次性消费5杯咖啡的机会微乎其微,这时就需要某种方式来纪录某位顾客的消费数量。有以下几种方案记录:(1)店员很厉害,能记住每位顾客的消费数量,只要顾客一走进咖啡店,店员就知道该怎么对待了。这种做法就是协议本身支持状态。(2)发给顾客一张卡片,上面记录着消费的数量,一般还有个有效期限。每次消费时,如果顾客出示这张卡片,则此次消费就会与以前或以后的消费相联系起来。这种做法就是在客户端保持状态。(使用Cookie)。(3)发给顾客一张会员卡(只有卡号),每次消费时出示卡片,则店员查店里的记录(使用Session)。,2.1设置和读取Session,Session可以保存任何类型的值,包括类的实例。,/添加SessionUserName=“Luolexia;/访问if(SessionUserName!=null)stringstrUsername=SessionUserName.ToString();,推荐Session中存储少于100K的数据。,Session可以保存类的实例。Usermu=newUser();mu.Age=30;mu.Name=“luolexia;SessionUserObject=mu;if(SessionUserObject!=null)Usertheuser=(User)SessionUserObject;Response.Write(+theuser.Age);Response.Write(+theuser.Name);,2.2Session的生命周期,Session是在用户第一次访问网站的时候创建的,默认情况下,Session的超时时间是20分钟,用户保持连续20分钟不访问网站,则Session被收回,如果在这20分钟内用户又访问了一次页面,那么20分钟就重新计时了,也就是说,这个超时是连续不访问的超时时间,而不是第一次访问后20分钟必过时。,可以在web.config中配置编写代码设置Session对象的Timeout属性,来设置会话状态过期时间,voidSession_Start(objectsender,EventArgse)Session.Timeout=30;,2.3删除Session,调用Session对象的Clear和RemoveAll方法来删除会话状态集合中的所有项,调用Remove和RemoveAt删除其中的某一项,如:Session.Remove(UserName);但以上方法只是从会话状态删除了缓存项,会话并没有结束,比如用户退出后,让Session保存的数据全部失效,可以使用Session.Abandon();,2.4Session的存储方式,Session中的内容是存储在服务器端的,有以下几种方式(1)InProc(默认):存储在IIS进程中(Web服务器内存),是唯一支持Session_OnEnd事件的模式。(2)StateServer:存储在独立的Windows服务进程中(3)SqlServer:存储在SqlServer数据库的表中,虽然InProc模式的Session直接存储在Web服务器IIS进程中,速度比较快,但是每次重新启动IIS都会导致Session丢失。利用后两种模式,我们就完全可以把Session从Web服务器中独立出来,从而减轻Web服务器的压力,同时减少Session丢失的概率。各模式可以在Web.config中配置。,在Web.config的system.web节中进行配置:使用stateserver模式:使用SQLServer模式:,2.5SessionID的存储模式,1.Cookie(默认):生成一个临时性的SessionCookie,但如果客户端禁止了Cookie的使用,Session也将失效。2.URL:缺点是不能再使用绝对链接了。例如:在web.config中我们可以禁止网站不使用Cookie在配置节中加入访问页面时会得到如下链接的URL:,2.6Session事件,在Global.asax文件编写用于管理用户会话的事件:Session_OnStart事件:在新会话开始时触发Session_OnEnd事件:在会话被放弃或过期时触发,任务6.2购物车功能,实现会员购物车功能,三、使用存储过程,前面讲解的数据库访问方式都是直接访问和操作数据库,这种方式比较低效,并且有可能产生安全问题。一种提高数据库安全性的方法是使用存储过程操作数据库,在执行复杂任务时,减少窗体的编码量,降低网络带宽的需求。存储过程(storedprocedure)是一组事先编译好的Transact-SQL代码。它作为一个独立的数据库对象,可以作为一个单元被用户的应用程序调用。,3.1创建存储过程的SQL命令,语法:,CREATEPROCEDURE存储过程名输入参数1数据类型,输入参数2数据类型,输出参数数据类型outputAS一组SQL命令,示例1:返回查询结果的存储过程,创建名为Proc_GetWareInfo的存储过程,实现功能:查询表T_Ware所有数据。CREATEPROCProc_GetWareInfoASSELECT*FROMT_Ware,示例2:返回值的存储过程,创建名为getCount的存储过程,实现功能:输入一个值,查找asset列符合该值的数据记录个数。CREATEPROCgetCountassetvarchar(50),countintoutputASselectcount=count(*)frommyuserwhereasset=asset,示例3:行为存储过程,创建名为insertMyuser的存储过程,实现功能:给表myuser插入一条数据。CREATEPROCinsertMyusernamevarchar(10),salaryint,assetvarchar(50)ASinsertintomyuser(name,salary,asset)values(name,salary,asset),3.2调用存储过程,设置Command对象的CommandTy

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论