第三章 ASP.NET系统对象
上章回顾
? ? ?
HTML控件与Web服务器控件概念 标准Web控件 控件的客户端事件处理
本章内容
? ? ? ? ?
系统内置对象 页面生命周期 应用程序级别事件 状态管理 页面间数据传递
本章目标
? ? ? ? ?
掌握ASP.NET系统对象的使用 了解ASP.NET系统对象的来源 理解应用程序级别事件的处理 掌握各种状态管理技术 掌握各种页面间数据传递技术
1. ASP.NET 系统对象
1.1 系统对象
?
系统对象的来源
在ASP.NET中,有些对象不需要编写代码初始化就可以在页面的代码中直 接使用,这被称为ASP.NET的系统对象或者内置对象 ? 部分系统对象的类型见表
?
系统对象
Context Page Response Request Server Application Session Cache System.Web.UI.Page
类型
System.Web.HttpContext System.Web.HttpResponse System.Web.HttpRequest System.Web.HttpServerUtility System.Web.HttpApplicationState System.Web.SessionState.HttpSessionState System.Web.Caching.Cache
系统对象程序的初始化是在ASP.NET的执行期由系统创建的,了 解这些系统对象的来源必须进一步理解ASP.NET执行期的概念
系统对象
?
ASP.NET在执行期包括4个步骤
运行ASP.NET的进程,为应用程序创建应用程序域 ? 初始化一系列的核心对象。此时,ASP.NET将创建并初始化核心对象,包 括HttpContext、HttpResponse、HttpRequest、HttpServerUtility、Cache 等 ? 创建应用程序对象实例并启动应用程序,处理请求的会话信息。此时, ASP.
NET将创建并初始化HttpApplicationState和HttpSessionState的实例 ? 根据配置对请求进行处理。此时,对请求进行处理的HttpHandler会创建 Page类的实例
?
系统对象
?
按照对象的作用范围,可以将系统对象分为页面级对象和应用程序级对象两 个类别
对象
Context Response Request Page
在所有页面级对象中,每个页面的每次请求都会创建一个实 提供对整个当前上下文(包括请求对象)的访问,可以使用此类共享页之间的信息 例。应用程序级对象可能在多个页面间共享一个实例、整个 页面级 提供对当前页的输出流的访问,可以使用此类将文本插入到页中、编写 Cookie、 应用程序共享一个实例或者是每个会话共享一个实例 跳转页面和中止页面的执行
提供对当前页请求的访问,其中包括请求标题、Cookie、客户端证书、
查询字符 串等,可以使用此类读取浏览器已经发送的内容 提供对当前页对象的访问,其中包括当前页中的各个系统对象与页面的属性,可以 使用此类读取其他Page对象,控制页面的行为
用途
Server
Application
公开可以用于在页之间传输控件的实用工具方法,可以使用此类获取有关最新错误 的信息,对
HTML文本进行编码和解码
提供对所有会话
的应用程序范围的方法和事件的访问,还提供对可用于存储信息的 应用程序范围的缓存的访问,可以使用此类处理部分应用
程序级别的事件,保存和 读取应用程序级别的数据 应用程序级 为当前用户会话提供信息、对可用于存储信息的会话范围的缓存的访问以及控制如 何管理会话的方法,可以使用此类保存和读取会话级别的数据 提供对当前应用程序范围的缓存的访问,可以使用此类将数据添加到缓存,将数据 从缓存中移除
Session Cache
1.2 页面级别对象
?
页面级别对象主要包含
? ? ? ? ?
Page对象 Context对象 Response对象 Request对象 Server对象
页面级别对象
?
页面的生命周期
?
@Page指令与代码后置
?
所有的ASP.NET页面都是从System.Web.UI.Page类中继承出来的,所以每 个ASP.NET页面在运行时就是一个Page对象
?
创建任何一个WebForm页面后切换到源视图,第一行代码都如下
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %>
上述代码称为页面指令,使用了@Page指令来指定AS