asp.net 常用对象

32
ASP.NET ASP.NET 常常常常 常常常常

Upload: oren

Post on 05-Jan-2016

144 views

Category:

Documents


3 download

DESCRIPTION

ASP.NET 常用对象. 学习内容. Page 类 Request 对象 Response 对象 Server 对象 Session 对象 Cookie 对象 Application 对象. ASP.NET 内置对象. ASP.NET 提供了大量的对象类库,在这些类库中包含了许多封装好的内置对象,我们只需要直接使用这些对象的方法和属性,就能简单快速地完成很多的功能。 Pege 类、 Request 对象、 Response 对象和 Serve 对象主要用来连接服务器和客户端浏览器之间的联系 。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: ASP.NET 常用对象

ASP.NETASP.NET 常用对象常用对象

Page 2: ASP.NET 常用对象

学习内容学习内容

PagePage 类类 RequestRequest 对象对象 ResponseResponse 对象对象 ServerServer 对象对象 SessionSession 对象对象 CookieCookie 对象对象 ApplicationApplication 对象对象

Page 3: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 ASP.NETASP.NET 提供了大量的对象类库,在这些类库中提供了大量的对象类库,在这些类库中

包含了许多封装好的内置对象,我们只需要直接包含了许多封装好的内置对象,我们只需要直接使用这些对象的方法和属性,就能简单快速地完使用这些对象的方法和属性,就能简单快速地完成很多的功能。成很多的功能。

PegePege 类、类、 RequestRequest 对象、对象、 ResponseResponse 对象和对象和 SerServeve 对象主要用来连接服务器和客户端浏览器之间对象主要用来连接服务器和客户端浏览器之间的联系 。的联系 。

CookieCookie 对象、对象、 SessionSession 对象和对象和 ApplicationApplication 对象对象则主要用于网站状态管理。 则主要用于网站状态管理。

Page 4: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 PagePage 类类 在在 ASP.NET FrameworkASP.NET Framework 中,中, PagePage 类为类为 ASP.NEASP.NE

TT 应用程序从应用程序从 .aspx.aspx 文件构建的所有对象提供基文件构建的所有对象提供基本行为。该类在命名空间 本行为。该类在命名空间 System.Web.UISystem.Web.UI 命名命名空间中定义,从空间中定义,从 TemplateControlTemplateControl 中派生出来,中派生出来,实现了实现了 IHttpHandlerIHttpHandler 接口。接口。

PagePage 类通常与扩展名为类通常与扩展名为 .aspx.aspx 的文件相关联,这的文件相关联,这些文件在运行时被编译为些文件在运行时被编译为 PagePage 对象,并被缓存对象,并被缓存在服务器内存中。在服务器内存中。

Page 5: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 ASP.NETASP.NET 页面的工作过程:页面的工作过程:1.1. 客户端浏览器向客户端浏览器向 WebWeb 应用程应用程

序进行一个页面的请求。序进行一个页面的请求。2.2. 服务器端服务器端 WebWeb 应用程序接收应用程序接收

到这个请求,先查看这个页面到这个请求,先查看这个页面是否被编译过,如果没有被编是否被编译过,如果没有被编译过,就编译这个译过,就编译这个 WebWeb 页面,页面,然后对这个页面进行实例化产然后对这个页面进行实例化产生一个生一个 PagePage 对象。对象。

3.3. PagePage 对象根据客户请求,把对象根据客户请求,把信息返归给信息返归给 IISIIS ,然后信息由,然后信息由 IIIISS 返回给客户端浏览器。返回给客户端浏览器。

4.4. 在这个过程中,每个页面都被在这个过程中,每个页面都被编译成一个类,当有请求的时编译成一个类,当有请求的时候就对这个类进行实例化。候就对这个类进行实例化。

Page 6: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 对于页面生命周期,一共要关心对于页面生命周期,一共要关心 55 个阶段:个阶段:1.1. 页面初始化:在这个阶段,页面及其控件被初始化。页页面初始化:在这个阶段,页面及其控件被初始化。页

面确定这是一个新的请求还是一个回传请求。页面事件面确定这是一个新的请求还是一个回传请求。页面事件处理器处理器 Page_PreInitPage_PreInit 和和 PageInitPageInit 被调用。另外,任何被调用。另外,任何服务器控件的服务器控件的 PreInitPreInit 和和 InitInit 被调用。被调用。

2.2. 载入:如果请求是一个回传请求,控件属性使用从视图载入:如果请求是一个回传请求,控件属性使用从视图状态和控件状态的特殊页面状态容器中恢复的信息来载状态和控件状态的特殊页面状态容器中恢复的信息来载入。页面的入。页面的 Page_LoadPage_Load 方法以及服务器控件的方法以及服务器控件的 Page_LPage_Loadoad 方法事件被调用。方法事件被调用。

3.3. 回送事件处理:如果请求是一个回传请求,任何控件的回送事件处理:如果请求是一个回传请求,任何控件的回发事件处理器被调用。回发事件处理器被调用。

4.4. 呈现:在页面呈现状态中,视图状态保存到页面,然后呈现:在页面呈现状态中,视图状态保存到页面,然后每个控件及页面都是把自己呈现给输出相应流。页面和每个控件及页面都是把自己呈现给输出相应流。页面和控件的控件的 PreRenderPreRender 和和 RenderRender 方法先后被调用。最后,方法先后被调用。最后,呈现的结果通过呈现的结果通过 HTTPHTTP 响应发送回客户机。响应发送回客户机。

5.5. 卸载:对页面使用过的资源进行最后的清除处理。控件卸载:对页面使用过的资源进行最后的清除处理。控件或页面的或页面的 UnloadUnload 方法被调用。方法被调用。

Page 7: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 PagePage 类中的常见属性和方法类中的常见属性和方法

Page 8: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 PagePage 类的常见的事件类的常见的事件

Page 9: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 由于由于 Pgae_LoadPgae_Load 在每次页面加载时运行,因此其中的在每次页面加载时运行,因此其中的

代码即使在回传的情况下也会被运行,在这个时候代码即使在回传的情况下也会被运行,在这个时候 PagPagee 的的 IsPostBackIsPostBack 属性就可以用来解决这个问题,这个属属性就可以用来解决这个问题,这个属性是用来识别性是用来识别 PagePage 对象是否处于一个回送的状态下,对象是否处于一个回送的状态下,也就弄清楚是请求页面的第一个实例,还是请求回送的也就弄清楚是请求页面的第一个实例,还是请求回送的原来的页面。可以在原来的页面。可以在 PgaePgae 类的类的 Page_LoadPage_Load 事件中使用事件中使用该属性,以便数据访问代码只在首次加载页面时运行,该属性,以便数据访问代码只在首次加载页面时运行,具体代码如下所示。具体代码如下所示。

protected void Page_Loadprotected void Page_Load (( object sender,EventAge object sender,EventAge e{ e{

if(!IsPostBack){if(!IsPostBack){ BindDropDownList()BindDropDownList() } } }}

Page 10: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 RequestRequest 对象对象 Request Request 对象是对象是 System.Web.HttpRequestSystem.Web.HttpRequest 类的实例。当用户在类的实例。当用户在

客户端使用客户端使用 WebWeb 浏览器向浏览器向 WebWeb 应用程序发出请求时,就会将客户应用程序发出请求时,就会将客户端的信息发送到端的信息发送到 WebWeb 服务器。服务器。 WebWeb 服务器就接收到一个服务器就接收到一个 HTTPHTTP 请请求,它包含了所有查询字符串参数或表单参数、求,它包含了所有查询字符串参数或表单参数、 CookieCookie 数据以及数据以及浏览器的信息。在浏览器的信息。在 ASP.NETASP.NET 中运行时把这些客户端的请求信息封中运行时把这些客户端的请求信息封装成装成 RequestRequest 对象。对象。

RequestRequest 对象的常用方法 对象的常用方法 1.1. BinaryRead:BinaryRead: 执行对当前输入流进行指定字节数的二进制读取。执行对当前输入流进行指定字节数的二进制读取。2.2. MapImageCoordinates:MapImageCoordinates: 将传入图象字段窗体参数影射为适当的将传入图象字段窗体参数影射为适当的 xx

/y/y 坐标值。坐标值。3.3. MapPath:MapPath: 为当前请求将请求的为当前请求将请求的 URLURL 中的虚拟路径映射到服务器上中的虚拟路径映射到服务器上

的物理路径。的物理路径。4.4. SaveAs:SaveAs: 将将 HTTPHTTP 请求保存到磁盘。请求保存到磁盘。5.5. ValidateInput:ValidateInput: 验证由客户端浏览器提交的数据,如果存在具有潜验证由客户端浏览器提交的数据,如果存在具有潜

在危险的数据,则引发一个异常。在危险的数据,则引发一个异常。

Page 11: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 RequestRequest 对象的常用属性对象的常用属性

Page 12: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 ServerServer 对象对象 ServerServer 对象是对象是 System.Web.HttpServerUtilitySystem.Web.HttpServerUtility 类类

的实例,它包含了一些与服务器相关的信息。使的实例,它包含了一些与服务器相关的信息。使用它可以获得有关最新的错误信息、对用它可以获得有关最新的错误信息、对 HTMLHTML 文文本进行编码和解码、访问和读写服务器端的文件本进行编码和解码、访问和读写服务器端的文件等功能。等功能。

ServerServer 对象的属性 对象的属性 1.1. MachineName:MachineName: 获取服务器的计算机名称。获取服务器的计算机名称。2.2. ScriptTimeout:ScriptTimeout: 获取或设置请求超时值获取或设置请求超时值 (( 以秒计以秒计 )) 。。

Page 13: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 ServerServer 对象的方法对象的方法

Page 14: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 ResponseResponse 对象对象 ResponseResponse 对象是对象是 System.Web.HttpResponseSystem.Web.HttpResponse 类的实例,类的实例, ResponseResponse

对象封装了对象封装了 WebWeb 服务器对客户端请求的响应,它用来操作服务器对客户端请求的响应,它用来操作 HTTPHTTP 相应相应的信息,用于将结果返回给请求者。虽然的信息,用于将结果返回给请求者。虽然 ASP.NETASP.NET 中控件的输出不需要中控件的输出不需要我们去写我们去写 HTMLHTML 代码,但是在很多的时候我们希望能自己手动控制输流,代码,但是在很多的时候我们希望能自己手动控制输流,比如文件的下载、重定向、脚步输出。比如文件的下载、重定向、脚步输出。

ResponseResponse 对象的方法 对象的方法 1.1. BinaryWrite:BinaryWrite: 将一个二进制字符串写入将一个二进制字符串写入 HTTPHTTP 输出流。输出流。2.2. Clear:Clear: 清除缓冲区流中的所有内容输出。清除缓冲区流中的所有内容输出。3.3. Close:Close: 关闭到客户端的套接字连接。关闭到客户端的套接字连接。4.4. End:End: 将当前所有缓冲的输出发送到客户端,停止该页的执行,并引发 将当前所有缓冲的输出发送到客户端,停止该页的执行,并引发 AA

pplication_EndRequest pplication_EndRequest 事件。事件。5.5. Flush:Flush: 向客户端发送当前所有缓冲的输出。向客户端发送当前所有缓冲的输出。6.6. Redirect:Redirect: 将客户端重定向到新的 将客户端重定向到新的 URLURL 。。 WriteWrite 将信息写入 将信息写入 HTTP HTTP 输出输出

内容流。内容流。7.7. WriteFileWriteFile 将指定的文件直接写入将指定的文件直接写入 HTTPHTTP 内容输出流。 内容输出流。

Page 15: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 ResponseResponse 对象的常用属性对象的常用属性

Page 16: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 ASP.NETASP.NET 程序和桌面程序一个显著的区别程序和桌面程序一个显著的区别

是:对于是:对于 ASP.NETASP.NET 程序,无法保存程序运程序,无法保存程序运行的状态。由于这个原因,状态管理对于行的状态。由于这个原因,状态管理对于WebWeb 应用程序来说是非常重要的。应用程序来说是非常重要的。

ASP.NETASP.NET 提供了多种状态管理的机制,包提供了多种状态管理的机制,包括括 SessionSession 对象、对象、 ApplicationApplication 对象、对象、 CoCookieokie 对象等。对象等。

Page 17: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象

SessionSession 对象对象 SessionSession 对象实际上操作对象实际上操作 System.WebSystem.Web 命名空间中命名空间中

的的 HttpSessionStateHttpSessionState 类 。类 。 SessionSession 对象可以为每个用户的会话存储信息。对象可以为每个用户的会话存储信息。 SessionSession 对象中的信息只能被用户自己使用,而不对象中的信息只能被用户自己使用,而不

能被网站的其他用户访问,因此可以在不同的页面能被网站的其他用户访问,因此可以在不同的页面间共享数据,但是不能在用户间共享数据。间共享数据,但是不能在用户间共享数据。

利用利用 SessionSession 进行状态管理是一个进行状态管理是一个 ASP.NETASP.NET 的显著的显著特点。它允许程序员把任何类型的数据存储在服务特点。它允许程序员把任何类型的数据存储在服务器上。器上。

Page 18: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 ASP.NETASP.NET 采用一个具有采用一个具有 120120 位的标识符来跟踪位的标识符来跟踪

每一个每一个 SessionSession 。。 ASP.NETASP.NET 中利用专有算法来中利用专有算法来生成这个标识符的值,从而保证了生成这个标识符的值,从而保证了 (( 统计上的统计上的 ))这个值是独一无二的,这个特殊的标识符就被称这个值是独一无二的,这个特殊的标识符就被称为为 SessionIDSessionID

SessionIDSessionID 是传播于网络服务器和客户端之间的是传播于网络服务器和客户端之间的唯一的一个信息。当客户端出示它的唯一的一个信息。当客户端出示它的 SessionIDSessionID ,,ASP.NETASP.NET 找到相应的找到相应的 SessionSession ,从状态服务器里,从状态服务器里获得相应的序列化数据信息,从而激活该获得相应的序列化数据信息,从而激活该 SessioSessionn ,并把它放到一个可以被程序所访问的集合里。,并把它放到一个可以被程序所访问的集合里。

Page 19: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 为系统能够正常工作,客户端必须为每个请求保为系统能够正常工作,客户端必须为每个请求保

存相应的存相应的 SessionIDSessionID ,获取某个请求的,获取某个请求的 SessionISessionIDD 的方式有两种:的方式有两种:

1.1. 使用使用 CookiesCookies 。在这种情况下,当。在这种情况下,当 SessionSession 集合集合被使用时,被使用时, SessionIDSessionID 被被 ASP.NETASP.NET 自动转化一个自动转化一个特定的特定的 Cookie(Cookie( 被命名为被命名为 ASP.NET_SessionID)ASP.NET_SessionID) 。。

2.2. 使用改装的使用改装的 URLURL 。在这种情况下,。在这种情况下, SessionIDSessionID 被被转化一个特定的改装的转化一个特定的改装的 URLURL 。。 ASP.NETASP.NET 的这个的这个新特性可以让程序员在客户端禁用新特性可以让程序员在客户端禁用 CookiesCookies 时创时创建建 SessionSession 。。

Page 20: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 ASP.NETASP.NET 对于对于 SessionSession 内容的存储也提供了多种的模式:内容的存储也提供了多种的模式:1.1. InProcInProc (默认):(默认): SessionSession 存储在存储在 IISIIS 进程中(进程中( WebWeb 服务器内存)。服务器内存)。 InProcInProc 拥拥

有最好的性能,但牺牲了健壮性和伸缩性。有最好的性能,但牺牲了健壮性和伸缩性。2.2. StateServe:SessionStateServe:Session 存储在独立的存储在独立的 WindowsWindows 服务进程服务进程 asp.net_state.exeasp.net_state.exe 中(可中(可

以不是以不是 WebWeb 服务器)。服务器)。3.3. SqlServer:SessionSqlServer:Session 存储在存储在 SqlServerSqlServer 数据库的表中,可以用数据库的表中,可以用 aspnet_regsql.exeaspnet_regsql.exe

配置它(配置它( SqlServerSqlServer 服务器) 服务器)

Page 21: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 SessionSession 对象的常用方法 对象的常用方法

Page 22: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 SessionSession 对象的属性 对象的属性 1.1. CountCount :获取会话状态下:获取会话状态下 SessionSession 对象的个数。对象的个数。2.2. TimeOutSessionTimeOutSession :获取对象的生存周期。:获取对象的生存周期。3.3. SessionIDSessionID :用于标识会话的唯一编号。:用于标识会话的唯一编号。 SessionSession 对象具有两个事件:对象具有两个事件:1.1. Session_OnStartSession_OnStart 事件在创建一个事件在创建一个 SessionSession 时被时被

触发,触发,2.2. Session_OnEndSession_OnEnd 事件在用户事件在用户 SessionSession 结束时被结束时被

调用。可以在调用。可以在 Global.asaxGlobal.asax 文件中为这两个事件文件中为这两个事件增加处理代码。增加处理代码。

Page 23: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 SessionSession 对象的使用对象的使用 :: 在在 SessionSession 里存储一个里存储一个 DataSetDataSet 的示例代码的示例代码

如下:如下: Session["dataSet"] = dataSet; //dataSetSession["dataSet"] = dataSet; //dataSet 为为 DataSetDataSet 的一个实例的一个实例 可以通过如下的示例代码从可以通过如下的示例代码从 SessionSession 里取得该里取得该 DataSetDataSet :: dataset = (DataSet) Session["dataSet"];dataset = (DataSet) Session["dataSet"]; 对于当前用户来说,对于当前用户来说, SessionSession 对象是整个应用程序的一个全局变量,对象是整个应用程序的一个全局变量,

程序员在任何页面代码里都可以访问该程序员在任何页面代码里都可以访问该 SessionSession 对象。但以下情况对象。但以下情况下,下, SessionSession 对象有可能会丢失:对象有可能会丢失:

1.1. 用户关闭浏览器或重启浏览器。用户关闭浏览器或重启浏览器。2.2. 如果用户通过另一个浏览器窗口进入同样的页面,尽管当前如果用户通过另一个浏览器窗口进入同样的页面,尽管当前 SessioSessio

nn 依然存在,但在新开的浏览器窗口中将找不到原来的依然存在,但在新开的浏览器窗口中将找不到原来的 SessionSession 。。3.3. SessionSession 过期。过期。4.4. 程序员利用代码结束当前程序员利用代码结束当前 SessionSession 。。

Page 24: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 CookieCookie 对象对象 CookieCookie 对象是对象是 System.WebSystem.Web 命名空间中命名空间中 HttpCookieHttpCookie 类的类的

对象。对象。 CookieCookie 对象为对象为 WebWeb 应用程序保存用户相关信息提供了一种应用程序保存用户相关信息提供了一种

有效的方法。当用户访问某个的站点时,该站点可以利用有效的方法。当用户访问某个的站点时,该站点可以利用 CCookieookie 保存用户首选项或其他信息,这样当用户下次再访问保存用户首选项或其他信息,这样当用户下次再访问该的站点时,应用程序就可以检索以前保存的信息。该的站点时,应用程序就可以检索以前保存的信息。

当用户第一次访问某个站点时,当用户第一次访问某个站点时, WebWeb 应用程序发送给该用应用程序发送给该用户一个页面和一个包含日期和时间的户一个页面和一个包含日期和时间的 CookieCookie 。用户的浏览。用户的浏览器在获得页面的同时还得到了这个器在获得页面的同时还得到了这个 CookieCookie ,并且将它保存,并且将它保存在用户硬盘上的某个文件夹中。以后如果该用户再次访问这在用户硬盘上的某个文件夹中。以后如果该用户再次访问这个站点上的页面,浏览器就会在本地硬盘上查找与该网站相个站点上的页面,浏览器就会在本地硬盘上查找与该网站相关联的关联的 CookieCookie 。如果。如果 CookieCookie 存在,浏览器就将它与页面存在,浏览器就将它与页面请求一起发送到网站,请求一起发送到网站, WebWeb 应用程序就能确定该用户上一应用程序就能确定该用户上一次访问站点的日期和时间。 次访问站点的日期和时间。

Page 25: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 CookieCookie 中保存的信息片断以“键中保存的信息片断以“键 // 值”对的形式储存,一值”对的形式储存,一

个“键个“键 // 值”对仅仅是一条命名的数据。一个网站只能取得值”对仅仅是一条命名的数据。一个网站只能取得它放在用户的电脑中的信息,它无法从其它的它放在用户的电脑中的信息,它无法从其它的 CookiesCookies 文件文件中取得信息,也无法得到用户的电脑上的其它任何东西。中取得信息,也无法得到用户的电脑上的其它任何东西。

使用使用 CookiesCookies 的优点可以归纳如下几点:的优点可以归纳如下几点:1.1. 可配置到期规则。可配置到期规则。 CookiesCookies 可以在浏览器会话结束时到期,可以在浏览器会话结束时到期,

或者可以在客户端计算机上无限期存在。或者可以在客户端计算机上无限期存在。2.2. 不需要任何服务器资源。不需要任何服务器资源。 CookiesCookies 存储在客户端并在发送后存储在客户端并在发送后

由服务器读取。由服务器读取。3.3. 简单性。简单性。 CookiesCookies 是一种基于文本的轻量结构,包含简单的是一种基于文本的轻量结构,包含简单的键值对。键值对。

4.4. 数据持久性。数据持久性。 CookiesCookies 通常是客户端上持续时间最长的数据通常是客户端上持续时间最长的数据保留形式。保留形式。

Page 26: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 CookiesCookies 对象的属性 对象的属性 1.1. Domain:Domain: 获取或设置将此获取或设置将此 CookiesCookies 与其关联的域。与其关联的域。2.2. Expires:Expires: 获取或设置此获取或设置此 CookieCookie 的过期日期和时间。的过期日期和时间。3.3. Name:Name: 获取或设置获取或设置 CookiesCookies 的名称。的名称。4.4. Path:Path: 获取或设置输出流的获取或设置输出流的 HTTPHTTP 字符集。字符集。5.5. Secure:Secure: 获取或设置一个值,该值指示是否通过获取或设置一个值,该值指示是否通过 SSLSSL (即仅(即仅

通过通过 HTTPSHTTPS )传输)传输 CookieCookie 。。6.6. Value:Value: 获取或设置单个获取或设置单个 CookiesCookies 值。值。7.7. Values:Values: 获取在单个获取在单个 CookiesCookies 对象中包含的键值对的集合。对象中包含的键值对的集合。 CookiesCookies 对象的方法对象的方法 1.1. Add:Add: 添加一个添加一个 CookiesCookies 变量。变量。2.2. Clear:Clear: 清除清除 CookiesCookies 集合中的变量。集合中的变量。3.3. Get:Get: 通过索引或变量名得到通过索引或变量名得到 CookiesCookies 变量值。变量值。4.4. GetKey:GetKey: 以索引值获取以索引值获取 CookiesCookies 变量名称。变量名称。5.5. Remove:Remove: 通过通过 CookiesCookies 变量名称来删除变量名称来删除 CookiesCookies 变量。变量。

Page 27: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 对象对象 RequestRequest 和和 ResponseResponse 都提供了一个都提供了一个 CookiesCookies 集合。可以利用集合。可以利用 ResRes

ponseponse 对象设置对象设置 CookiesCookies 的信息,而使用的信息,而使用 RequestRequest 对象获取对象获取 CookiesCookies的信息。的信息。

为了设置一个为了设置一个 CookieCookie ,只需要创建一个,只需要创建一个 System.Web.HttpCookieSystem.Web.HttpCookie 的的实例,把信息赋予该实例,然后把它添加到当前的页面的实例,把信息赋予该实例,然后把它添加到当前的页面的 ResponseResponse 对对象里面,创建象里面,创建 HttpCookieHttpCookie 实例的代码如下:实例的代码如下:

HttpCookie cookie = new HttpCookie("test"); //HttpCookie cookie = new HttpCookie("test"); // 创建一个创建一个 cookiecookie 实实例例

cookie.Values.Add("Name","cookie.Values.Add("Name"," 张三张三 "); //"); // 添加要存储的信息,采用键添加要存储的信息,采用键 //值结合的方式值结合的方式

Response.Cookies.Add(cookie); //Response.Cookies.Add(cookie); // 把把 cookiecookie 加入当前页面的加入当前页面的 ResponsResponsee 对象里面对象里面

可以利用可以利用 CookieCookie 的名字从的名字从 Request.CookiesRequest.Cookies 集合取得信息,代码如下:集合取得信息,代码如下: HttpCookie cookie1 = Request.Cookies["test"];HttpCookie cookie1 = Request.Cookies["test"]; string name; //string name; // 声明一变量用来存储从声明一变量用来存储从 CookieCookie 里取出的信息里取出的信息 if (cookie1 != null) {//if (cookie1 != null) {// 判断判断 cookie1cookie1 是否为空是否为空 name = cookie1.Values["Name"];name = cookie1.Values["Name"]; }}

Page 28: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 删除删除 CookieCookie 是修改是修改 CookieCookie 的一种形式。由于的一种形式。由于 CookiCooki

ee 位于用户的计算机中,所以无法直接将其删除。但位于用户的计算机中,所以无法直接将其删除。但可以让浏览器来删除可以让浏览器来删除 CookieCookie 。将其有效期设置为过。将其有效期设置为过去的某个日期,就会删除这个已过期的去的某个日期,就会删除这个已过期的 CookieCookie 。。

删除一个删除一个 CookieCookie 的方式就是利用一个过期的的方式就是利用一个过期的 CookieCookie来代替它,代码如下:来代替它,代码如下:

HttpCookie cookie = new HttpCookie cookie = new HttpCookie("test");HttpCookie("test"); cookie.Expires = cookie.Expires = DateTime.Now.AddDays(-1);DateTime.Now.AddDays(-1); Response.Cookies.Add(cookie);Response.Cookies.Add(cookie);

Page 29: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 ApplicationApplication 对象对象 ApplicationApplication 对象是对象是 System.WebSystem.Web 命名空间中的命名空间中的 HttpHttp

ApplicationStateApplicationState 类的实例。类的实例。 ApplicationApplication 对象为经常使用的信息提供了一个有用对象为经常使用的信息提供了一个有用

的的 WebWeb 站点存储位置,站点存储位置, ApplicationApplication 中的信息可以被中的信息可以被网站的所有页面访问,因此可以在不同的用户间共享网站的所有页面访问,因此可以在不同的用户间共享数据。数据。

ApplicationApplication 的原理是在服务器端建立一个状态变量,的原理是在服务器端建立一个状态变量,来存储所需的信息。要注意的是,首先,这个状态变来存储所需的信息。要注意的是,首先,这个状态变量是建立在内存中的,其次是这个状态变量是可以被量是建立在内存中的,其次是这个状态变量是可以被网站的所有页面访问的。网站的所有页面访问的。

Page 30: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 ApplicationApplication 对象具有的特点:对象具有的特点:1.1. 数据可以在数据可以在 ApplicationApplication 对象内部共享。对象内部共享。2.2. 一个一个 ApplicationApplication 对象包含事件,可以触发某些对象包含事件,可以触发某些 ApplicatinApplicatin 对对

象脚本。象脚本。3.3. 个别个别 ApplicationApplication 对象可以用对象可以用 Internet Service ManagerInternet Service Manager 来设来设

置而获得不同属性。置而获得不同属性。4.4. 单独的单独的 ApplicationApplication 对象可以隔离出来在它们自己的内存中运对象可以隔离出来在它们自己的内存中运

行行 ..5.5. 可以停止一个可以停止一个 ApplicationApplication 对象(将其所有组件从内存中驱对象(将其所有组件从内存中驱

除)而不会影响到其他应用程序。除)而不会影响到其他应用程序。6.6. 一个网站可以有不止一个一个网站可以有不止一个 ApplicationApplication 对象。典型情况下,可对象。典型情况下,可

以针对个别任务的一些文件创建个别的以针对个别任务的一些文件创建个别的 ApplicationApplication 对象。对象。7.7. ApplicationApplication 对象成员在服务器运行期间持久地保存数据。对象成员在服务器运行期间持久地保存数据。 ApAp

plicationplication 对象成员的生命周期止于关闭对象成员的生命周期止于关闭 IISIIS 或使用或使用 ClearClear 方法方法清除。清除。

8.8. 因为多个用户可以共享一个因为多个用户可以共享一个 ApplicationApplication 对象,所以必须要有对象,所以必须要有 LLockock 和和 UnlockUnlock 方法,以确保多个用户无法同时改变某一属性。方法,以确保多个用户无法同时改变某一属性。

Page 31: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 ApplicationApplication 对象的属性 对象的属性 1.1. AllKeys:AllKeys: 获取获取 HttpApplicationStateHttpApplicationState 集合中的访问键。集合中的访问键。2.2. Count:Count: 获取获取 HttpApplicationStateHttpApplicationState 集合中的对象数。集合中的对象数。 ApplicationApplication 对象的方法 对象的方法

Page 32: ASP.NET 常用对象

ASP.NETASP.NET 内置对象内置对象 ApplicationApplication 对象是一个集合对象,并在整个对象是一个集合对象,并在整个 ASP.NETASP.NET 网站内网站内可用,不同的用户在不同的时间都有可能访问可用,不同的用户在不同的时间都有可能访问 ApplicationApplication 对对象的变量,因此象的变量,因此 ApplicationApplication 对象提供了对象提供了 LockLock 方法用于锁定方法用于锁定对对 HttpApplicationStateHttpApplicationState 变量的访问以避免访问同步造成的变量的访问以避免访问同步造成的问题。问题。

在对在对 ApplicationApplication 对象的变量访问完成后,需要调用对象的变量访问完成后,需要调用 ApplicatApplicationion 的的 UnLockUnLock 方法取消对方法取消对 HttpApplicationStateHttpApplicationState 变量的锁定。变量的锁定。

下面的代码通过下面的代码通过 LockLock 和和 UnLockUnLock 方法实现了对方法实现了对 ApplicationApplication变量的修改操作。变量的修改操作。

Application.Lock();Application.Lock(); Application["Online"] = 21;Application["Online"] = 21; Application["AllAccount"]=Application["AllAccount"]= Convert.ToInt32(Application["AllAccount"]) + 1;Convert.ToInt32(Application["AllAccount"]) + 1; Application.UnLock();Application.UnLock();