【asp源码栏目提醒】:以下是网学会员为您推荐的asp源码-ASP.NET程序设计(普通高等教育“十一五”国家级规划教材)教学PPT 作者 李德奇第14讲 内部对象 - 大学课件,希望本篇文章对您学习有所帮助。
第十四讲
ASP.NET内部对象 教学内容 一、内部对象概述 二、状态管理和ViewState 三、Application对象 四、Session对象 五、Server对象
ASP.NET程序设计 李德奇主编 教学目标 理解
ASP.NET内部对象的概念; 掌握各种内部对象的使用; 学习内部对象的应用。
ASP.NET程序设计 李德奇主编 2 一、
ASP.NET内部对象概述 1/9一内部对象
ASP.NET预定义有一些内部对象,用内部对象的键/值对,可以存取应用程序的数据。
ASP.NET的内部对象可分为客户端对象和服务器端对象两类。
客户端对象的数据存储于客户端,当页面提交时,随同页面一起提交至服务器。
服务器对象的数据存储于服务器。
ASP.NET的客户端对象包括视图状态、隐藏字段、查询字符串和Cookie,使用这些对象服务于单个页面是很方便的。
服务器端对象包括Application、Sessio、Cache、Response和Server。
ASP.NET程序设计 李德奇主编 3 一、
ASP.NET内部对象概述 2/9 二Global.asax文件 在每个应用程序项目的根目录中有一个Global.asax文件,该文件中定义了一个Global类,它派生于System.Web.HttpApplication基类。
Global类定义了一些有关本项目的全局性事件。
Global.asax文件提供的事件架构如下:protected void Application_StartObject sender EventArgs e //在此添加应用程序启动时的初始化代码 protected void Session_StartObject sender EventArgs e //在此添加会话开始时的处理代码
ASP.NET程序设计 李德奇主编 4 一、
ASP.NET内部对象概述 3/9protected void Application_BeginRequestObject sender EventArgs e //在此添加应用程序请求前的处理代码 protected void Application_EndRequestObject sender EventArgs e //在此添加应用程序请求后的处理代码 protected void Application_AuthenticateRequestObject sender EventArgs e //在此添加自定义身份验证代码
ASP.NET程序设计 李德奇主编 5 一、
ASP.NET内部对象概述 4/9protected void Application_ErrorObject sender EventArgs e //在此添加错误处理代码 protected void Session_EndObject sender EventArgs e //在此添加会话结束时的处理代码 protected void Application_EndObject sender EventArgs e //在此添加应用程序结束时的初始化代码
ASP.NET程序设计 李德奇主编 6 一、
ASP.NET内部对象概述 5/9 三全局事件激发的时机 1.Application_Start事件 Application_Start事件当应用程序启动时激发,此事件在程序的生命周期中仅被激发一次。
通常可以将供所有客户端共享的内部对象的初始化代码放在这里,以便当应用程序启动时就完成初始化。
如果将初始化代码放在首页的Page_Load事件中,那每当首页被加载时都会重新初始化那些对象,对象此前的值将丢失。
应用程序启动时也会激发一次Session_Start事件,不过Application_Start事件激发在前,而Session_Start事件激发在后。
在程序的生命周期中Application_Start事件仅被激发一次,Session_Start事件可被多次激发。
ASP.NET程序设计 李德奇主编 7 一、
ASP.NET内部对象概述 6/9 2.Application_End 事件 Application_End事件当应用程序关闭时激发,此事件在程序的生命周期中仅被激发一次。
当应用程序结束时,会自动释放应用程序的内存,若应用程序还占用了系统别的资源,要编写释放资源的代码。
3.Session_Start事件 Session_Start事件当一个新的客户端请求应用程序的某个页面时激发。
在应用程序的生命周期中,常常不断有新的客户端对应用程序提出请求,因而Session_Start事件会被反复激发。
对特定客户端在各个页面中共享的内部对象的初始化代码放适合在这里。
ASP.NET程序设计 李德奇主编 8 一、
ASP.NET内部对象概述 7/9 4.Session_End事件 Session_End事件当Session超时或Session关闭时激发。
从特定的客户端访问本应用程序开始,Session_Start事件被激发,当用户转向到其他应用程序的URL时,应用程序并不结束Session,当用户从其他应用程序返回到本应用程序中时,保存在Session中的数据仍然有效,直到用户关闭浏览器为止。
可以通过Session超时来限制用户离开本应用程序的时间间隔。
例如设置Session超时间隔为20分钟,当用户离开本应用程序20分钟后,Session_End事件就被激发。
5.Application_BeginRequest事件 Application_BeginRequest事件当客户端向应用程序发出请求后激发。
在应用程序的生命周期中,常常不断有客户端对应用程序提出各种请求,因而Application_BeginRequest事件会被反复激发。
ASP.NET程序设计 李德奇主编 9 一、
ASP.NET内部对象概述 8/9 6.Application_EndRequest事件 Application_EndRequest事件当结束客户端发出请求处理后激发。
在应用程序的生命周期中,Application_EndRequest事件也会被反复激发。
7.Application_Error事件 Application_Error事件当应用程序发生异常时激发。
可以将异常处理程序代码用try…catch格式写在估计将要引发异常的程序段中,也可以将异常处理程序代码写在Application_Error事件中。
ASP.NET程序设计 李德奇主编 10 一、
ASP.NET内部对象概述 9/9 8.Application_AuthenticateRequest事件 Application_AuthenticateRequest事件当发生身份验证请求时激发。
在这个事件中可以自定义身份验证信息。
四 编辑全局事件处理程序 若要编写上述8个事件处理程序之一,请打开解决方案资源管理器,在其中的Global.asax文件上击右键,于弹出的快捷菜单上单击【查看代码】,即可切换到全局事件处理程序编辑窗口。
ASP.NET程序设计 李德奇主编 11 二、状态管理和ViewState1/2 一状态管理
ASP.NET应用程序客户端与服务器之间的通信使用HTTP协议,那是一种无状态的通信协议。
因此,网页的环回过程中,服务器不会保存网页的状态,也就是说,当某个网页被请求时,服务器将网页代码发送至客户端后,该页面即被服务器丢弃,当该网页被再次请求时,服务器重新生成该页面并发送它到客户端。
应用程序中长久使用的数据是经常需要的,这样的数据必须保存在
ASP.NET的内部对象中。
保存在客户端对象中的数据随同页面一起环回,应用程序从页面代码中取得数据后进行处理;保存在服务器端对象中的数据当然就在服务器的内存中,应用程序可以从服务器内存中取得需要的数据。
ASP.NET程序设计 李德奇主编 12 二、状态管理和ViewState2/2 二ViewState ViewState称为视图状态,它是
ASP.NET的一个客户端内部对象,它主要用来保存一个页面内需要在多次环回间使用的数据。
当网页被处理时,网页与其控件的当前状态被汇总至一个字符串中,并以隐藏字段的形式储存于页面中。
当页面被提交时,该隐藏字段被一同提交至服务器。
使用ViewState保存数据,要指定它的键/值对。
格式为: ViewState “键名”键值; 其中键名为合法的标识符键值为该键名的数据,可为C支持的任何数据类型。
ASP.NET程序设计 李德奇主编 13 三、Application对象1/3 Application对象是HttpApplicationState类的实例,主要用于同一个
ASP.NET应用程序的所有客户端保存共享信息。
Application对象的属性和方法 Application不能在网络场(应用程序被多台服务器承载)或网络园(应用程序被同一台服务器的多个进程承载)中共享。
Count属性:获取Application中对象的个数。
Add方法:向Application中加入一项。
调用的格式为: Applicatio.AddKey,Value例如:Application.Addnumber10,其作用与初始化语句Applicationnumber10等价。
ASP.NET程序设计 李德奇主编 14 三、Application对象2/3Remove方法:按键名从Application中移除一项。
调用的格式为: Applicatio.Remove Key例如:Applicatio.Remove number的作用是将Application 中刚刚加入的number项移除。
RemoveAt方法:按索引号从Application中移除一项。
调用的格式为: Applicatio.Remove Index例如:Applicatio.Remove 0的作用是将Application中第一项 移除。
RemoveAll方法:移除Application中的所有项。
调用该方法 后,其Count属性的值为0,此前加入的所有项不复存在。
ASP.NET程序设计 李德奇主编 15 三、Application对象3/3 Clear方法:移除Application中的所有项。
当Application中的某些项或所有项不需要使用时,应移除以便释放服务器内存。
Lock方法:锁定Application防止外部争抢访问,促进访问的同步。
UnLock方法:解除对Application的锁定。
使用Application最简单的方法是直接使用它的键/值(Key/Value)对(项),键名为字符串类型,值为C支持的任何数据类型。
一般可以在Global.asax文件的Applicationn_Start事件中为Application做初始化;在Application_End事件中对Application做清理。
ASP.NET程序设计 李德奇主编 16 四、Session对象1/12 Session对象是HttpSessionState类的实例,它对特定客户端在整个会话期间有效。
所谓特定客户端的整个会话期间,指的是从一个客户端发出对某个应用程序的任何页面请求开始,直到这个客户端关闭浏览器或Session失效为止。
一 Session对象的属性和方法 Count属性:获取Session键/值对的个数。
Keys属性:获取Session所有键/值对中键的集合。
Timeout属性:获取或设置Session的超时期限(以分钟为单位),该属性默认为20分钟。
使用的格式为: int nSession.Timeout //获取Session的超时期限 或者 Session.Timeout30 //重新设置Session的超时期限为30分钟
ASP.NET程序设计 李德奇主编 17 四、Session对象2/12 从上一次请求开始,在Session.Timeout设定的期限内若未有请求发生,将激发Session_End事件,并清除所有的Session项,使得Session.Count属性值为0。
此后若再有请求发生,将重新激发Session_Start事件。
Timeout属性值太长则不利于释放内存,太短则可能由于在规定期限内未发生请求,应用程序清除了所有的Session项,导致客户端存放在Session中的数据丢失。
Add方法:向Session中加入一项。
调用的格式为: Session.AddKey,Value 例如:Session.Addnumber10,其作用与初始化语句Sessionnumber10等价。
Remove方法:按键名从Session中移除一项。
调用的格式为: Session.Remove Key 例如:Session.Remove number的作用是将Session中刚刚加入的number项移除。
ASP.NET程序设计 李德奇主编 18 四、Session对象3/12 RemoveAt方法:按索引号从Session中移除一项。
调用的格式为: Session.RemoveAtIndex 如:Session.RemoveAt0的作用是将Session中第一项移除。
RemoveAll方法:移除Session中的所有项。
调用该方法后,其Count属性的值为0,此前加入的所有项不复存在。
Clear方法:移除Session中的所有项。
当Session中的某些项或所有项不需要使用时,应调用上述方法移除,以便释放服务器内存。
使用Session最简单的方法是直接使用它的键/值(Key/Value)对(项),键名为字符串类型,值为C支持的任何数据类型。
ASP.NET程序设计 李德奇主编 19 四、Session对象4/12
ASP.NET为每个客户端保存一份Session,它的生命期为一个会话期,作用域为应用程序的所有页面及Global类。
将应用程序中需要在各个页面中流通的数据保存于Session中是个不错的选择。
一般可以在Global.asax文件的Session_Start事件中为Session做初始化;在Session_End事件中对Session做清理。
二示例 使用Session保护网页 本示例项目中有用作登录页面WebForm1.aspx和用作需要验证登陆后才允许进入的页面WebForm2.aspx两个页面。
为项目设置一个Session“Login”,其初始值为“false”,当在第一个WebForm1中验证账号和密码为合法用户后,将Session“Login”的值修改为“true”并跳转到第二个页面WebForm2。
在第二个页面WebForm2的Page_Load页面加载时检查Session“Login”的值,若为“true”,就展示该页面;若为“false”,使重定向到第一个页面WebForm1进行登录。
这样就对第二个页面WebForm2起到了保护作用。
程序设计
ASP.NET 李德奇主编 20
上一篇:
【精品】asp基础三
下一篇:
投简历到国外的公司需考虑哪些东西?