C# Web编程--内置对象.ppt_第1页
C# Web编程--内置对象.ppt_第2页
C# Web编程--内置对象.ppt_第3页
C# Web编程--内置对象.ppt_第4页
C# Web编程--内置对象.ppt_第5页
已阅读5页,还剩84页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、ASP.NET程序设计,C# Web编程,第5讲 内部对象,5.1 ASP.NET内部对象概述 5.2 Page对象 5.3 Request对象 5.4 Response对象 5.5 HttpCookie对象 5.6 Session对象 5.7 Application对象 5.8 Server对象 5.9 Mail对象 5.10 viewstate对象,讲解提纲,利用Request对象的QueryString获取方法获取标识在URL后面的信息 利用Request对象的ServerVariables获取方法获取客户端IP地址等环境变量 利用Response对象的Write方法输出信息及它的省略用

2、法 掌握Response对象的Redirect方法 利用Response对象的Cookies方法设置Cookies的值,利用Request对象的Cookies获取方法获取Cookies的值。 利用Session对象保存信息 利用Application对象保存信息 掌握Server对象的的HTMLencode、Mappath和Execute方法 掌握发送E-mail的一般方法,本章要点,对象其实就是可以重用的代码片断,类是对象的定义,对象是类的实例。 对象一般有属性、方法、事件。 ASP.NET能够利用成千上万的内置对象。本质上前面讲的内置函数、Web控件也都可以看作内置对象,都是类实现的。 本

3、章就讲解其中常用的几个内部对象,包括Page、Request、Response、HttpCookie、Session、Application、Server、Mail,5.1 ASP.NET内部对象概述,内部对象和其它部分的关系,内部函数,.NET类库,服务器控件,内部对象,由System.Web.UI.Page类实现,命名空间System.Web.UI 属性: IsPostBack IsValid 方法: DataBind(数据绑定) 事件: Load (页面装载),5.2 Page对象,IsPostBack示例,5-1.aspx,在第3章讲解了如何获取客户填写在表单中的信息,本节利用Requ

4、est对象还可以获取更多的信息。,5.3 Request对象,由System.Web.HttpRequest类实现 命名空间: System.Web 数据集合(获取方法): QueryString、Form、Cookies、ServerVariables、ClientCertificate、Browser 方法: TotalBytes 事件: BinaryRead,5.3.1 Request对象简介,QueryString可以获取标识在URL后面的所有返回的变量及其值。例如,当客户端送出如下的请求时,QueryString将会得到name与age两个变量的值。 http:/temp.aspx?

5、name=白芸 1)A 服务器端控件 属性NavigateUrl指定要跳转到的Url地址 2)NavigateUrl是可以在服务器端使用代码修改,这个区别于 3)由于HyperLink本身没有事件所以要在服务器端其它事件中设置NavigateUrl 4)代码示例 ok,5.11 页面跳转方法,3. Response.Redirect()方法 1)过程:发送一个Http响应到客户端,通知客户端跳转到一个新的页面,然后客户端再发送跳转请求到服务器端。 2)页面跳转之后内部控件保存的所有信息丢失,当A跳转到B,B页面将不能访问A页面提交的数据信息。 3)使用这个方法使用这个方法跳转后浏览器地址栏的U

6、rl信息改变 4)可以使用Session Cookies Application等对象进行页面间的数据传递 5)重定向操作发生在客户端,总共涉及到两次与Web服务器的通信:一次是对原始页面的请求,另一次是重定向新页面的请求 这个跳转页面的方法跳转的速度不快,因为它要走2个来回(2次postback),但他可以跳 转到任何页面,没有站点页面限制(即可以由雅虎跳到新浪),同时不能跳过登录保护,5.11 页面跳转方法,4. Server.Transfer()方法 1)实现页面跳转的同时将页面的控制权进行移交 2)页面跳转过程中Request Session等保存的信息不变,跳转之后可以使用上一个页面

7、提交的数据 3)跳转之后浏览器地址栏的Url不变 4)这种方法的重定向请求是在服务器端的进行的,浏览器不知道页面已经发生了一次跳转 速度快,只需要一次postback ,但是它必须是在同一个站点下,因为它是server的一个方法。另外,他能跳过登录保护。,5.11 页面跳转方法,5. Server.Execute()方法 1)该方法允许当前页面执行同一个Web服务器上的另一个页面 2)页面执行完毕之后重新回到原始页面发出Server.Execute()的位置。 3)这种方式类似针对页面的一次函数调用,被请求的页面可以使用原始页面的表单数据和查询字符串集合 4)被调用页面的Page指令的Enab

8、leViewStateMac属性设置为False,5.11 页面跳转方法,6. Javascript实现跳转 / 以下方式直接跳转 window.location.href = hello.html; / 以下方式定时跳转 setTimeout(javascript:location.href=hello.html, 5000); ,5.11 页面跳转方法,7. 新页面显示 1)Respose.Write( window.open( + url + ); ); 2) 打开 3) 打开 private void button1_Click(object sender, EventArgs e)

9、FrmRemoteVM fa = new FrmRemoteVM(); fa.Show(); ,5.11 页面跳转方法,当需要把用户跳转到另一台服务器上的页面的时候使用redirect 当需要把用户跳转到非aspx页面时候,如html使用redirect 需要把查询字符串作为url一部分的时候保留传给服务器的时候,因为其他2种方法不能做到2次postback,把数据先带回服务器使用redirect 需要aspx页面间的转换(不涉及登录) 使用transfer 当需要把aspx页面的输出结果插入到另一个aspx页面的时候使用execute方法。 如果要让用户来决定何时转换页面以及转到哪一个页面,

10、超级链接最适合。 如果要用程序来控制转换的目标,但转换的时机由用户决定,使用Web服务器的HyperLink控件,动态设置其NavigateUrl属性。 如果要把用户连接到另一台服务器上的资源,使用Response.Redirect。 如果要将查询字符串作为URL的一部分保留,使用Response.Redirect。 如果要将执行流程转入同一Web服务器的另一个ASPX页面,应当使用Server.Transfer而不是Response.Redirect,因为Server.Transfer能够避免不必要的网络通信,从而获得更好的性能和浏览效果。 如果要捕获一个ASPX页面的输出结果,然后将结果插

11、入另一个ASPX页面的特定位置,则使用Server.Execute。 如果要确保HTML输出合法,请使用Response.Redirect,不要使用Server.Transfer或Server.Execute方法。,页面跳转小结,因为ASP.NET的页面表单提交到自身,完成回传的功能,所以默认情况下不能使用POST方式进行多页面传值 1URL传值这是经典的传值方式,这种方法的使用非常简单,不过所传递的值是会显示在浏览器的地址栏上的,而且不能传递对象。所以这种方法一般用于传递的值少且安全性要求不高的情况下。在*.aspx页面开发中可以使用超级链接文本进行传值,如以下代码所示。URL传值以上链接文

12、本将页面跳转到GetValues.aspx页面,并且通过URL传递urlvalue1变量和urlvalue2变量,其值分别为intel和amd。在*.cs的服务器端方法中也可以调用HttpResponse对象的Redirect方法,将浏览器端重定向到新页面并通过URL传值,如以下代码所示。Response.Redirect(“/GetValues.aspx?urlvalue1=intel,5.12 页面之间数据传递,2. Session传值 这种方法将每份数据存储于服务器变量中,可以传递比较多的数据,并且安全性较高,所以常用于用户身份的验证功能中。不过,Session变量如果存储过多的数据会消

13、耗过多的服务器资源。其使用方法如以下代码所示。SessionSessionValue = “ATI”;/也可以用索引存储Session0 = “ATI”;/在其他页面的服务器端方法中取值方式为:string str = SessionSessionValue.ToString();/也可以用索引获取string str = Session0.ToString();Session的可在应用程序的多个页面中以名称/值对的方式共享,直到浏览用户关闭自己的浏览器或者服务器Session超时(可设置,默认为20分钟)。,5.12 页面之间数据传递,3Cookie传值 Cookie是一种比较特殊的数据存储

14、方式,它以文本文件的形式存在于浏览用户的磁盘中。很多登录系统就是利用Cookie实现用户自动登录。即用户登录一次的登录信息将被写入到用户电脑的Cookie文件中,下次登录时,网站自动读取该Cookie完成身份验证。通过Cookie传递数据虽然很方便,保存时间可以自由设置,但是安全性不高。ASP.NET中操作Cookie的主要类型位于System.Web命名空间下,分别为HttpCookie、HttpResponse以及HttpRequest。HttpCookie可建立和操作独立Cookie的安全类型,访问HttpResponse和HttpRequest的Cookies属性可以获取HttpCoo

15、kieCollection集合对象,以读取或添加HttpCookie对象。添加Cookie的方法如以下代码所示。,5.12 页面之间数据传递,/创建一个HttpCookie 对象,向构造函数传递名称值HttpCookie ck = new HttpCookie(CookieValue);/设置ck的“Value”属性(值)ck.Value = “Cookie值”;/设置ck的过期时间为当前时间加上360s,即6分钟后失效ck.Expires = DateTime.Now.AddSeconds(360);/设置ck有效范围(域限制)ck.Domain = ;/将ck添加至HttpCookieCo

16、llection对象Response.Cookies.Add(ck);/也可为以下方法添加/Response.AppendCookie(ck);,5.12 页面之间数据传递,读取用户的Cookie则更为简单,只需根据名称读取HttpCookieCollection集合对象中的子项即可,如以下代码所示。string str = Request.CookiesCookieValue.Value;除此之外,还可以利用一个HttpCookie存储多个名称/值对形式的Cookie信息,如以下代码所示。HttpCookie ck = new HttpCookie(CookieValue);/以名称/值对的

17、方式添加多个Cookie信息ck.Values.Add(value1, “one”);ck.Values.Add(value2, two); 读取这些Cookie如以下代码所示。string str = 值1:+Request.CookiesCookieValue.Valuesvalue1;str += 值2: + Request.CookiesCookieValue.Valuesvalue2;,5.12 页面之间数据传递,说明:多数浏览器支持最多可达4096字节的Cookie,如果要将为数不多的几个值保存到用户计算机上,浏览器还限制了每个站点可以在用户计算机上保存的Cookie数量。大多数浏

18、览器只允许每个站点保存20个Cookie。如果试图保存更多的Cookie,则最先保存的Cookie就会被删除。还有些浏览器会对来自所有站点的Cookie总数作出限制,这个限制通常为300个。用户可以设置自己的浏览器,拒绝接受Cookie,这种情况下只能结合其他的数据存储方式。,5.12 页面之间数据传递,4Server.Transfer传值 首先通过定义一个public权限的属性,该属性可返回所需传递的值。 然后在第两个页面中,使用Context.Handler属性来获得前一个页面实例对象的引用,即可通过访问自定义的属性获取需要的值。,5.12 页面之间数据传递,假设SendValues.aspx页面为传递数据的页面,在SendValues.aspx.cs的页面类中定义一个public属性,通过get直接返回需要传递的值(可为页面中某个服务器控件的属性值)。public string TransferDatagetreturn VIA;,5.12 页面之间数据传递,在SendValues.aspx.cs的某个方法(如Button控件的Click事件处理方法)中调用HttpServerUtility对象的Transfer方法,如以下代码所示。Server.Transfer(/GetValues.aspx);假设GetValues.aspx为第二个页面,在GetVal

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论