180 likes | 345 Views
ASP.NET 程序设计教程 ( 第 16 讲 ). 回顾. 1. Session 对象概述 2. 保存对话信息 3. 判断是否创建了新会话. 第六章 ASP.NET 内置对象应用 6.5.4 ~6.6. 知识点 1. 判断是否创建了新的会话 知识点 2. 设置会话的有效期限 知识点 3. 处理会话事件 知识点 4.Application 对象. 教学目标. 1. 掌握判断是否创建了新的会话 2. 掌握设置会话的有效期限 3. 掌握处理会话事件 4. 掌握 Application 对象语法及应用. 知识点 1. 判断是否创建了新的会话.
E N D
回顾 • 1.Session对象概述 • 2. 保存对话信息 • 3. 判断是否创建了新会话
第六章 ASP.NET内置对象应用6.5.4 ~6.6 • 知识点1.判断是否创建了新的会话 • 知识点2.设置会话的有效期限 • 知识点3.处理会话事件 • 知识点4.Application对象
教学目标 • 1.掌握判断是否创建了新的会话 • 2.掌握设置会话的有效期限 • 3.掌握处理会话事件 • 4.掌握Application对象语法及应用
知识点1.判断是否创建了新的会话 • 6.5.4 判断是否创建了新的会话 • 使用Session对象的IsNewSession属性可以判断指示会话是否是 • 与当前请求一起创建的。如果会话是与当前请求一起创建的,则 • 该属性值为True,表明创建了一个新的会话,否则为False,表明 • 仍处在先前开始的一个会话中。
案例 • 本例说明如何通过设置Session对象的Timeout,属性来控制会话的有效期限。在程序将Session.Timeout属性设置为1分钟,并创建两个会话变量。打开网页时,显示当前时间和两个会话变量的值。超过1分钟后,单击“查看会话变量”按钮,再次查看会话变量,次时会话变量树木为0,表明会话进行已经结束。
知识点2.设置会话的有效期限 • 6.5.5 设置会话的有效期限 • 每一个与Web服务器建立连接的客户端都拥有独立的会话进程W,服务器管理这些进程时需要占用一定的系统资源。在现实生活中,有些用户在浏览网页的过程中,可能要去处理其他事件而没有关闭与服务器的连接。在这种情况下,如果服务器一直在管理与此相关的会话进程,就会造成系统资源的浪费。由于这个缘故,当用户联机后在一段时间内没有刷新或请求网页,就可以考虑结束会话进程。 • 若要设置在会话状态提供程序终止会话之前各请求之间所允许的超时期限,设置Session对象的Timeout属性即可。默认值为20分钟。
案例 • 本例说明书和通过调用Session。Abandon()方法强制结束会话。在本例中公创建3个页面,包括两个aspx页面和一个HTML页面,文件名分别为WebForm—19. aspx,WebForm_9. aspx和HTMLPag6_9c.tm,分别用作登录页面,欢迎页面和注销后的页面。登录成功后进入欢迎页面,当单击“注销”连接是通过执行Session.Abandon()方法销毁Session对象,然后HTML页面。
知识点3.处理会话事件 • 6.5.6 处理会话事件 • Session对象有两个事件:即Start事件和End事件。通过对这两 • 个事件编写事件处理程序可以在会话开始和结束时执行指定的操 • 作。这些事件处理程序的代码必须包含在一个名为Global.asax的文 • 件中,每当在Visual Studio .NET中创建Web项目时总会自动创建该 • 文件。 • 1. Session_Start事件 • 当会话开始时发生Session_Start事件。因为Session对象仅用于 • 保存单个用户的信息,所以,如果在某段时间内有100个用户访问 • Web服务器,那么Session对象的Start事件就会发生100次。如果希 • 望在创建会话时就执行一段程序,将这段程序放在Session_Start事 • 件过程中即可。 • 2. Session_End事件 • 当调用Session.Abandon()方法或在指定的时间内没有请求或刷 • 新页面,便发生该事件并执行Session_End事件过程,相应的 • Session对象随之自动结束。
知识点4.Application对象 • 6.6.1 Application对象的主要属性和方法 • 常用属性 • AllKeys Contents Count • Item StaticObjects • 常用方法 • Add( name, value ) Clear() Get({name, index}) • GetKey(index) Lock() Remove() • RemoveAll() RemoveAt( index ) • Set( name, value ) UnLock() • 常用事件 • Start End • BeginRequest EndRequest • Error AuthenticateRequest • 上述事件的处理程序必须在Global.asax文件中编写。
知识点4.Application对象 • 6.6.2 保存应用程序状态 • 使用Application对象保存信息时,标准作法是首先使用Add方 • 法添加应用程序变量,然后使用Set方法更改该变量。 • 通过调用Application.Add方法将新的对象添加到应用程序状态 • 集合中,语法如下: • Application.Add("变量名", 值) • 例如,下面的语句将名为AppVar1和AppVar2的应用程序变量添加 • 到Application集合中。 • Application.Add("AppVar1", Object1) • Application.Add("AppVar2", Object2)
案例 • 使用Application对象制作页面计数器,要求当用户按F5键或单击“刷新”按钮是电击数不会增加。
知识点4.Application对象 • 6.6.3 处理应用程序事件 • 1. Start事件 • Application_Start事件在应用程序启动时发生。 • 2. End事件 • Application_End事件在应用程序结束时发生,即当Web服务器关机或 • 重新启动时发生End事件。 • 3. BeginRequest事件 • Application_BeginRequest事件在客户端向服务器端发送处理请求后发 • 生,即在ASP.NET响应请求时作为HTTP执行管线链中的第一个事件发生。 • 4. EndRequest事件 • Application_EndRequest事件在每个客户端请求处理结束时发生,即在 • ASP.NET响应请求时作为HTTP执行管线链中的最后一个事件发生。 • 5. Error事件 • Application_Error在应用程序出现错误时发生。 • 6. AuthenticateRequest事件 • Application_AuthenticateRequest在尝试进行身份验证请求时发生。
知识点4.Application对象 • 6.6.4 Global.asax文件 • Global.asax文件称为ASP.NET应用程序文件,它是一个可选文件,其 • 中包含用于响应ASP.NET或HttpModule引发的应用程序级别事件的代码。 • Global.asax文件驻留在基于ASP.NET的应用程序的根目录中。在运行时, • 分析Global.asax文件并将其编译到一个动态生成的.NET Framework类,该 • 类是从HttpApplication基类派生的。Global.asax文件本身被配置为自动拒 • 绝对它的任何直接URL请求,外部用户无法下载或查看在该文件中编写的 • 代码。 • Global.asax文件是可选的。如果不定义该文件,ASP.NET页框架假设 • 未定义任何应用程序或会话事件处理程序。 • 当将更改保存到活动Global.asax文件时,ASP.NET页框架检测到该文 • 件已被更改。它完成应用程序的所有当前请求,将Application_OnEnd事件 • 发送到任何侦听器,并重新启动应用程序域。实际上,这会重新启动应用 • 程序,关闭所有浏览器会话并刷新所有状态信息。当来自浏览器的下一个 • 传入请求到达时,ASP.NET页框架将重新分析并重新编译Global.asax文件 • 并引发Application_OnStart事件。
小结 • 1. 判断是否创建了新的会话 • 2. 设置会话的有效期限 • 3. 处理会话事件 • 4.Application对象语法及应用
案例 • 本例使用Application和Session对象统计网站当前的在线人数。在Application对象的Start事件处理程序中,添加一个名为Counter的应用程序变量;在Session对象的Start事件处理程序中;将该变量的值加1;在Session对象的End事件处理程序中,将该变量的值减1,并设置页面每隔30秒自动刷新一次。
作业 • 教材P210 19-20题。
本讲结束 谢谢大家