资源预览内容
第1页 / 共33页
第2页 / 共33页
第3页 / 共33页
第4页 / 共33页
第5页 / 共33页
第6页 / 共33页
第7页 / 共33页
第8页 / 共33页
第9页 / 共33页
第10页 / 共33页
亲,该文档总共33页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第第4章章 内置对象和状态管理内置对象和状态管理回顾回顾验证控件有哪些?每一个的作用是什么?验证控件有哪些?每一个的作用是什么?怎样实现文件上传?怎样实现文件上传?本章介绍本章介绍ResponseResponse对象和对象和RequestRequest对象对象 ServerServer对象对象 ApplicationApplication和和SessionSession对象对象 CookieCookie对象对象 ViewstateViewstate对象对象内置对象的属性与方法内置对象的属性与方法 ( (重点重点) )Response对象对象-1 HttpResponseHttpResponse对象提供对当前页面的输出流的访问,这里的对象提供对当前页面的输出流的访问,这里的输出是指用户作为对其特定请求的响应而收到的信息集合。输出是指用户作为对其特定请求的响应而收到的信息集合。HttpResponseHttpResponse类主要可用于:类主要可用于: 1 1、将文本写入到输出页面、将文本写入到输出页面 2 2、读取、读取/ /写入写入CookieCookie 3 3、将用户从请求页面重新定向到另一页面、将用户从请求页面重新定向到另一页面 4 4、为某种操作设置或获得输出内容的类型、为某种操作设置或获得输出内容的类型 5 5、检查客户端是否仍然与服务器相连、检查客户端是否仍然与服务器相连 Response对象对象-2HttpResponseHttpResponse对象的属性对象的属性 属性名称说 明ContentType 获得或指定响应的 HTTP 内容 (MIME) 类型为标准 MIME 类型(如 text/xml 或 image/gif)。默认的 MIME 类型是 text/html。客户端浏览器从输出流中指定的 MIME 类型获得内容的类型Cookie用于获得 HttpResponse 对象的 Cookie 集合Expires 指定浏览器中缓存的页面过期之前的时间(以分钟为单位)Response对象对象-3HttpResponseHttpResponse对象的方法对象的方法 方 法说 明Write用于向当前 HTTP 响应流写入文本,使其成为返回页面的一部分End停止处理至客户端的输出Redirect将用户从请求页面重新定向或带到另一页面使用使用Response对象对象 /str /str为输出文本为输出文本Response.Write(string str)Response.Write(string str) /Url /Url为定向的网址为定向的网址, ,可以为本服务器,也可以为其可以为本服务器,也可以为其它服务器地址它服务器地址Response.Redirect(string Url)Response.Redirect(string Url) / /结束流输出结束流输出Response.End() Response.End() Request对象对象-1 HttpRequestHttpRequest对象将客户端请求的信息提供给服务器对象将客户端请求的信息提供给服务器客户端请求的信息包括下列内容:客户端请求的信息包括下列内容:1 1、识别用户和浏览器的、识别用户和浏览器的HTTPHTTP变量。变量。2 2、在客户端浏览器上为网站存储的、在客户端浏览器上为网站存储的CookieCookie。3 3、作为查询字符串或网页、作为查询字符串或网页部分的部分的HTMLHTML控件值控件值添加到添加到URLURL的值。的值。4 4、如果是安全保护的网站,有关网站安全的信息、如果是安全保护的网站,有关网站安全的信息 Request对象对象-2HttpRequestHttpRequest对象的属性对象的属性 属性名称属性名称说 明明Browser 获得有关请求浏览器能力的信息Form 获得网页中定义的窗体变量的集合QueryString获得以名/值对表示的 HTTP 查询字符串变量的集合Params 获得由以名/值对表示的 QueryString、Form、Cookie 和 ServerVariables 组成的集合 Url返回有关当前请求的 URL 信息Request对象对象-3HttpRequestHttpRequest对象的方法对象的方法 方法名称方法名称说 明明MapPath 将请求 URL 中提到的虚拟路径映射到服务器上资源的实际物理路径使用使用Request对象对象 / /获取请求的浏览器获取请求的浏览器HttpRequest.Browser.BrowserHttpRequest.Browser.BrowserHttpRequest.Url /HttpRequest.Url /获取请求的获取请求的URLURL地址地址 /获取请求的获取请求的IPIP地址地址Request.UserHostAddress Request.UserHostAddress / /通过键获取浏览器传递的参数值通过键获取浏览器传递的参数值Request.QueryStringkey Request.QueryStringkey / /通过索引获取浏览器传递的参数值通过索引获取浏览器传递的参数值Request.QueryStringindexRequest.QueryStringindexServer对象对象HttpServerUtilityHttpServerUtility类包含处理类包含处理webweb请求的方法。请求的方法。Server对象的方法对象的方法-1ExecuteExecute方法和方法和TransferTransfer方法均会停止当前页面的执行,方法均会停止当前页面的执行,并转去执行用户在方法内指定的并转去执行用户在方法内指定的URLURL,同时用户的会话,同时用户的会话状态和任何当前的事务处理状态都将传送给新页面状态和任何当前的事务处理状态都将传送给新页面表列出了这两个方法的差异。表列出了这两个方法的差异。 ExecuteTransferURL 参数指定的页面处理完后,控制权会返回给先前的页面或调用此方法的页面,并且从此方法调用后的语句继续执行 URL 参数指定的页面处理完后,控制权不会返回给先前的页面,也不会返回给调用此方法的页面,并且在新页面完成执行时结束 Server对象的方法对象的方法-2HtmlEncodeHtmlEncode方法方法 : 内容原样输出内容原样输出HtmlEncode()HtmlEncode()的语法列出如下:的语法列出如下: HtmlEncode(stringHtmlEncode(string,TextWriter):TextWriter):其中其中stringstring表示表示要编码为要编码为HTTPHTTP的文本。的文本。 HtmlEncode(string):HtmlEncode(string):其中其中stringstring表示要编码的文本,表示要编码的文本,而而TextWriterTextWriter变量则用于将输出存储为变量则用于将输出存储为TextWriterTextWriter流。流。 Server对象的方法对象的方法-3UrlEncodeUrlEncode方法方法 为了在地址中传递路径符号或者不想让用户看得出为了在地址中传递路径符号或者不想让用户看得出超级链接的真实地址,我们采用超级链接的真实地址,我们采用UrlEncodeUrlEncode方法对要方法对要传送的传送的URLURL进行编码进行编码 UrlEncodeUrlEncode方法的语法列出如下:方法的语法列出如下: UrlEncodeUrlEncode(stringstring): : 其中其中stringstring表示将要编码并表示将要编码并由由HTTPHTTP传送的文本。传送的文本。 UrlEncodeUrlEncode(stringstring,TextWriterTextWriter): :其中其中stringstring表示表示将要编码并由将要编码并由HTTPHTTP传送的文本,而传送的文本,而TextWriterTextWriter对象变对象变量则用于将经过编码的输出存储为量则用于将经过编码的输出存储为TextWriterTextWriter流流 Server对象的方法对象的方法-4MapPathMapPath方法方法 借助于借助于MapPathMapPath方法,我们可以从虚拟路径得到方法,我们可以从虚拟路径得到WebWeb资资源(如源(如.aspx.aspx页面)的物理路径。页面)的物理路径。 MapPathMapPath方法该方法的语法如下:方法该方法的语法如下: MapPath(string path):MapPath(string path):其中其中stringstring表示表示WebWeb服务器上服务器上的指定虚拟路径的指定虚拟路径 状态管理概述状态管理概述 状态是任何类型的能够在一段时间内保持活跃的信状态是任何类型的能够在一段时间内保持活跃的信息。这段时期可以是整个应用程序生命周期,也可息。这段时期可以是整个应用程序生命周期,也可以是用户使用这个应用程序的时间,或者用户浏览以是用户使用这个应用程序的时间,或者用户浏览另外一个页面之前这个页面的生命周期,等等。另外一个页面之前这个页面的生命周期,等等。为什么不保留在数据库中。为什么不保留在数据库中。存储状态的位置存储状态的位置 支持支持WebWeb应用程序的应用程序的HTTPHTTP协议是无状态的。所以存储状态的位置就只协议是无状态的。所以存储状态的位置就只有两个:服务器端和客户机端有两个:服务器端和客户机端服务器端服务器端 应用程序应用程序这种数据在应用程序的整个生命周期中都可以被所用这种数据在应用程序的整个生命周期中都可以被所用用户访问用户访问 会话会话使状态和每个用户保持关联(比如购物篮)使状态和每个用户保持关联(比如购物篮)客户机端客户机端 视图状态视图状态保留和页面相关的数据,比如已填充的窗体字段保留和页面相关的数据,比如已填充的窗体字段 cookiecookie保存客户浏览上的任意数据保存客户浏览上的任意数据 查询字符串查询字符串在在URLURL自身的客户机和服务器之间进行值传递自身的客户机和服务器之间进行值传递 隐藏的窗体字段隐藏的窗体字段这种窗体字段中包含的数据可以被应用程序使这种窗体字段中包含的数据可以被应用程序使用,但这些数据却无法被用户看到用,但这些数据却无法被用户看到 应用程序状态对象应用程序状态对象-1 ApplicationApplication对象是内置的对象是内置的ASP.NETASP.NET对象,表示对象,表示ASP.NETASP.NET应用程序的实例。应用程序的实例。ApplicationApplication状态由状态由HttpApplicationStateHttpApplicationState类表示,它包括所有与应用类表示,它包括所有与应用程序相关的方法和集合。当第一个用户请求一个程序相关的方法和集合。当第一个用户请求一个ASP.NETASP.NET文件时,会启动应用程序并创建一个文件时,会启动应用程序并创建一个ApplicationApplication对象。在创建对象。在创建ApplicationApplication对象后,它对象后,它就可以在整个应用程序中使用,创建的对象将持续就可以在整个应用程序中使用,创建的对象将持续到应用程序关闭。它是应用程序级变量,所有页面到应用程序关闭。它是应用程序级变量,所有页面都可以使用该对象都可以使用该对象 应用程序状态对象应用程序状态对象-2以键以键/ /值对存储数据:值对存储数据: ApplicationKey=ValueApplicationKey=Value 例如:例如: Application“greeting”=”Application“greeting”=”欢迎访问我们的欢迎访问我们的站点站点”; ;添加方法:添加方法: Application.Add(Key,Value)Application.Add(Key,Value) Application.Add(“greeting”,” Application.Add(“greeting”,”欢迎访问我们的站点欢迎访问我们的站点”););应用程序状态对象应用程序状态对象-3在应用程序的的生命周期中,我们可以在任何时候应在应用程序的的生命周期中,我们可以在任何时候应用程序状态,对它进行检索,改变它的值等,但是因用程序状态,对它进行检索,改变它的值等,但是因为它可以同时被所有用户访问,所以我们必须考虑到为它可以同时被所有用户访问,所以我们必须考虑到并发性问题。所以当我们想要改变一个值的时候,应并发性问题。所以当我们想要改变一个值的时候,应该对该变量进行锁定。为此,该对该变量进行锁定。为此,ApplicationApplication对象提供两对象提供两个方法:个方法: Application.Lock();Application.Lock(); Application.Unlock(); Application.Unlock(); ApplicationHttpApplicationStateHttpApplicationState类提供添加和移除类提供添加和移除ApplicationApplication状状态项的方法。下表列出了态项的方法。下表列出了HttpApplicationStateHttpApplicationState中一些常中一些常用的方法用的方法 方法说明Add()向 Application 状态添加新对象。Clear()从 Application 状态中移除所有对象Remove()从 Application 集合中按名称移除项。Cookie对象对象-1 CookieCookie是一小段数据(最大为是一小段数据(最大为4KB4KB),它由客户浏览),它由客户浏览器进行保存,并在随后的每个请求中被传递到服务器进行保存,并在随后的每个请求中被传递到服务器。器。CookieCookie可为服务器存储在浏览器上的少量信息。可为服务器存储在浏览器上的少量信息。CookieCookie的主要用途是在客户端系统中保留客户端的的主要用途是在客户端系统中保留客户端的个人信息。个人信息。 Cookie对象对象-2CookieCookie可分为两类:可分为两类: 会话会话CookieCookie。 持久性持久性CookieCookie。在浏览器的处理过程中保留的在浏览器的处理过程中保留的CookieCookie称为会话称为会话CookieCookie,这种这种CookieCookie是暂时性的,当关闭浏览器后,任何会话是暂时性的,当关闭浏览器后,任何会话CookieCookie都会丢失。持久性都会丢失。持久性CookieCookie可以保存几个月甚至几可以保存几个月甚至几年。年。Cookie对象对象-3cookiecookie的缺点的缺点 由于信息保存在客户端,信息不安全,如果用户选择禁由于信息保存在客户端,信息不安全,如果用户选择禁用用cookiecookie,它的存储功能无法使用。,它的存储功能无法使用。 CookieCookie容量有限,最多存储容量有限,最多存储4k4k数据。数据。 对于单个网站,浏览器最多可以容纳对于单个网站,浏览器最多可以容纳2020个个cookie cookie 使用使用Cookie对象对象 / /实例化实例化CookieCookie对象,并赋值对象,并赋值HttpCookie objHttpCookie = new HttpCookie objHttpCookie = new HttpCookie(“UserName”,“HttpCookie(“UserName”,“张三张三); ); / /设置过期时间设置过期时间objHttpCookie.Expires = DateTime.Now.AddMinutes(2);objHttpCookie.Expires = DateTime.Now.AddMinutes(2); / /添加到输出中添加到输出中Response.Cookies.Add(objHttpCookie);Response.Cookies.Add(objHttpCookie); 获取获取CookiesCookies中的值中的值 Request.Cookies“UserName”.ValueRequest.Cookies“UserName”.ValueSession当用户在浏览站点或者执行一些多步骤任务时,比如填充购物篮,需要保留用户数据。数据不能保存在单个页面中数据必须是每个用户私有的数据必须是每个用户私有的:数据一定不能被执行同样任务的其他用户访问。SessionSession对对象象为为每每个个用用户户进进行行数数据据存存储储,以以键键/ /值值对对组合进行存储数据。组合进行存储数据。SessionSessionSession对象的属性对象的属性 属性说明SessionID包含一个唯一的用户会话标识符。它用于在整个会话过程中记录用户信息。要检索SessionID,可使用Session.SessionIDTimeout用于设置用户超时的时间。即它以分钟为单位指定Session对象在释放资源以前能够保持闲置的持续时间。默认值为20分钟。我们能通过在ASPX文件中赋值以便更改此设置。例如,IsNewSession 如果已按当前请求创建会话,那么该属性将返回TrueSession会话状态对象会话状态对象-3设置设置 SessionSession / /赋值方法赋值方法 SessionKey=ValueSessionKey=Value / /添加方法添加方法 Session.Add(Key,Value)Session.Add(Key,Value) / /设置过期时间,单位分钟设置过期时间,单位分钟 Session.Timeout=20Session.Timeout=20获取获取SessionSession string state=SessionKey.ToString(); string state=SessionKey.ToString();注:注:SessionSession可以存储对象可以存储对象Viewstate窗体状态对象窗体状态对象WebWeb开发人员以前最常遇到的问题:如何在回送过程开发人员以前最常遇到的问题:如何在回送过程中保持中保持HTMLHTML窗体状态。窗体状态中包含了选定的值、窗体状态。窗体状态中包含了选定的值、已填充的字段等。以前,这些工作必须手动完成,已填充的字段等。以前,这些工作必须手动完成,比如检索提交的值,并在页面返回时将其重置为原比如检索提交的值,并在页面返回时将其重置为原来的状态。来的状态。ASP.NETASP.NET视图状态能够处理的问题远远超视图状态能够处理的问题远远超过了这些,比如,它不仅能够记住组合框中被选中过了这些,比如,它不仅能够记住组合框中被选中的值,还能记住列表中的所有值!的值,还能记住列表中的所有值! 使用使用Viewstate对象对象保存数据保存数据 ViewState“selected”=true;ViewState“selected”=true;获取数据获取数据Bool selected=(bool)ViewState“selected”;Bool selected=(bool)ViewState“selected”;总结总结ResponseResponse对象和对象和RequestRequest对象对象 ServerServer对象对象 ApplicationApplication和和SessionSession对象对象 CookieCookie对象对象 ViewstateViewstate对象对象课后作业课后作业1 1、写写出出RequestRequest对对象象的的功功能能、常常用用属属性性和和方方法法 。2 2、描描述述ServerServer对对象象的的ExecuteExecute、TransferTransfer方方法法和和ResponseResponse对对象象的的RedirectRedirect方方法法主主要要区区别别 。3 3、写出写出ResponseResponse对象的功能对象的功能
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号