版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C# Web编程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方法输出信息及它的省略用法 掌握Response对象的Redirect方法 利用Response
2、对象的Cookies方法设置Cookies的值,利用Request对象的Cookies获取方法获取Cookies的值。 利用Session对象保存信息 利用Application对象保存信息 掌握Server对象的的HTMLencode、Mappath和Execute方法掌握发送E-mail的一般方法 对象其实就是可以重用的代码片断,类是对象的定义,对象是类的实例。对象一般有属性、方法、事件。ASP.NET能够利用成千上万的内置对象。本质上前面讲的内置函数、Web控件也都可以看作内置对象,都是类实现的。本章就讲解其中常用的几个内部对象,包括Page、Request、Response、HttpC
3、ookie、Session、Application、Server、Mail 内部函数内部函数.NET类库类库服务器控件服务器控件内部对象内部对象由System.Web.UI.Page类实现,命名空间System.Web.UI 属性: IsPostBack IsValid方法: DataBind(数据绑定)事件: Load (页面装载)5-1.aspx在第3章讲解了如何获取客户填写在表单中的信息,本节利用Request对象还可以获取更多的信息。由System.Web.HttpRequest类实现 命名空间: System.Web数据集合(获取方法): QueryString、Form、Cooki
4、es、ServerVariables、ClientCertificate、Browser 方法: TotalBytes事件: BinaryReadQueryString可以获取标识在URL后面的所有返回的变量及其值。例如,当客户端送出如下的请求时,QueryString将会得到name与age两个变量的值。 http:/temp.aspx?name=白芸&age=22后面可以有多个变量参数,参数之间用&连接。4-2.aspx4-3.aspx利用Request对象的ServerVariables数据集合可以方便地取得服务器端或客户端的环境变量信息,比如客户端的IP地址等等。语法:
5、 Request.ServerVariables(环境变量名称)4-4.aspx如果客户端浏览器支持SSL3.0或PCT1协议,可以利用ClientCertificate数据集合取回客户端浏览器的身份验证信息。语法如下: Request.ClientCertificate(关键字)如果客户端浏览器未送出身份验证信息,或服务器端也未设置向客户端浏览器要求身份验证的命令,那么将返回空值。如果有,将返回相应的身份验证信息。Request对象的Browser数据集合就可以方便地获取客户端浏览器特性,如类型、版本、是否支持背景音乐等。语法: Request.Browser (浏览器特性名称)4-5.as
6、px利用该属性可以得到客户端提交数据的字节大小,语法如下: Request.TotalBytes前面讲的5种获取方法都是直接获取数据,而此方法可以二进制方式获取客户端用Post方法提交的数据。语法如下: Request.BinaryRead(字节大小) 说明:其中字节大小是用TotalBytes属性获得的响应数据的字节大小。 在第3章中讲过利用Label标签控件向客户端输出信息。其实,也可以利用Response对象向客户端输出信息。而且,Response对象还有一些特殊功能,如重定向等。 (注意,在ASP.NET中提倡利用控件输出信息。)由System.Web.HttpResponse类实现
7、命名空间: System.Web属性: Buffer、ContentType 方法: Write、Redirect、End、Clear、Flush、BinaryWrite利用该方法就可以在客户端输出信息,效果和利用Label标签控件一样。语法: Response.Write(变量数据或字符串)例如: Response.Write(user_name &您好) user_name是一个变量,表示用户名 Response.Write(现在是: & now() ) now()是时间函数 Response.Write(业精于勤而荒于嬉) 输出字符串4-6.aspx利用该方法还可以直接在
8、HTML代码中动态输出信息,此时需要将语句用括起来,例如: Write方法示例 % Response.Write(您好,欢迎光临) Response.Write(敬请提出宝贵意见) %此时,它还有一种省略方式,例如: Write方法示例 %=敬请提出宝贵意见%使用Redirect方法就可以引导客户至另一个页面。语法如下: Response.Redirect(网址变量或字符串)例如: Response.Redirect(http:/) 引导至中国教育网 Response.Redirect(other.asp) 引导至站内其他网页 theURL=http:/ Response.Redirect(t
9、heURL) 引导至变量表示的网址4-7.aspxTest5_1.aspxBuffer属性用来设置服务器端是否将页面先输出到缓冲区。它的取值为True或False,默认为True。语法: Response.Buffer=True | False使用Response.redirect时必须保证Buffer值为True。该方法用于输出二进制信息,它不进行任何字符转换,直接输出。其语法为: Response.BinaryWrite(变量或字符串)有时侯可能在数据库里保存了二进制信息,就可以用该方法输出了。例如:从数据库中显示图片的信息就要用到该方法。 很多网站能够记住客户端的访问次数。要记住访问次数
10、可以采取多种方法,其中利用Cookie是一种可以在客户端保存信息的方法。ASP.NET提供了HttpCookie对象来处理Cookie,该对象是由System.Web.HttpCookie类实现的。 Cookie俗称甜饼,可以在客户端长期保存信息。它是服务器端发送到客户端浏览器的文本串句柄,保存在客户的硬盘上。HttpCookie对象其实是: 利用Response对象的Cookies方法设置Cookies; 利用Request对象的Cookies获取方法来获取Cookies的值。 语法如下: Response.Cookies(“CookiesName”)(关键字) | .属性=字符串(1)设置
11、不含关键字的Cookie Response.Cookies(user_name).Value=高航 (2)设置含关键字的Cookie Response.Cookies(user)(name)=高航 Response.Cookies(user )(age)=22(3)设置Cookie的有效期 Response.Cookies(user_name).Expires=#1/1/2008# 语法如下: Request.Cookies(“CookiesName”)(关键字) | .属性(1)省略关键字的用法 user_name=Request.Cookies(user_name).Value (2)有关
12、键字的用法 user_name=Request.Cookies(user)(name) age=Request.Cookies(user)(age) (3)判断Cookies关键字数目 result=Request.Cookies(CookiesName).Haskeys4-8.aspx利用Session对象 可以方便记录客户的信息。由System.Web.SessionState类实现 命名空间System.Web属性 SessionID、TimeOut方法 Abandon事件 Session_OnStart Session_OnEnd4-10.aspx4-9.aspx4-12.aspx4-
13、11.aspxSession对象有它的有效期,默认为20分钟。客户端每新打开一个浏览器窗口,就会创建一个Session对象,如果超出20分钟没有和服务器端交互或者关闭了浏览器,则该Session对象就会自动结束。修改有效期语法如下: Session.Timeout=整数(分钟)例如: Session.Timeout=90 将有效期改为90分钟Session对象到期后会自动清除,但到期前可以用Abandon方法强行清除。语法:Session.Abandon例如:Session(user_name)= 萌萌Session.AbandonResponse.Write(Session(user_nam
14、e)说明: 先将前两句复制到一个文件中执行,然后再将第3句复制到另一个ASP.NET文件中执行。 Session对象可以记载特定客户的信息,与此相反的是,Application对象可以记载所有客户信息。简而言之,不同的客户必须访问不同的Session对象,但可以访问公共的Application对象。它的最典型的应用是聊天室。由System.Web.HttpApplication类实现 方法: Lock Unlock 事件: Application _OnStart Application _OnEnd 语法: Application(Application名字)=变量、常量、字符串信息或表达式
15、例如: Application.Lock Application(user_num)=user_num Application (“city”)=“南京” Application.Unlock这是一个简单的聊天室,共分3个文件 5-13.asp 框架页文件(省略不讲) 5-14.asp 保存发言信息 5-15.asp 读取发言信息5-14.aspx4-15.aspx和Session非常类似。存储: Dim user_name(2) As String user_name(0)= 白芸 user_name(1)= 海霞 Application.Lock Application(arry_user
16、_name)=user_name Application.Unlock读取: Dim user_name () As String user_name= Application(arry_user_name) message.text=user_name(0) & 您好 & user_name(1) & 您好Server对象是专为处理服务器上的特定任务而设计的,特别是与服务器的环境和处理活动有关的任务。由System.Web.HttpServerUtility类实现命名空间:System.Web类: 属性: ScriptTimeout方法: Execute、Transf
17、er HtmlEncode、UrlEncode CreatObject该属性用来规定脚本文件执行的最长时间,默认为90秒。主要是用来防止某些可能进入死循环的错误导致服务器过载问题。修改方法如下: Server.ScriptTimeout=300该方法可以用于创建组件、应用对象或脚本对象的实例。语法如下: Server.CreateObject(ActiveX Server组件)4-16.aspx该方法用来转化字符串为URL编码。例子: Server.URLEncode(“a b”) 结果: a+b可以将虚拟路径转化为物理路径。 4-17.aspx该方法用来停止执行当前网页,转到新的网页执行,执
18、行完毕后返回原网页,继续执行Execute方法后面的语句。语法如下: Server.Execute(变量或字符串)该方法和Redirect方法的区别。 (1)Redirect语句尽管是在服务器端运行,但重定向实际发生在客户端,而Execute方法的重定向实际发生在服务器端。 (2)Redirect语句执行完新的网页后,并不返回原网页,而Execute方法却返回原页面,继续执行下面的语句。 (3)Redirect语句并不能把一些环境变量传递过去,而Execute方法却可以。 (4)Redirect方法可以转向一个网页和其他网站,而Execute方法一般只能转到同一个应用程序的其他文件。该方法和E
19、xecute方法非常相似,惟一的区别是执行完新的网页后,并不返回原网页,而是停止执行过程。语法如下: Server.Transfer(变量或字符串) 4-18.aspx4-19.aspx运行结果利用该对象可以在线发送E-mail。Mail对象由System.Web.Mail类库实现,它其实是由MailMessage、MailAttachment、SmtpMail三个类组成的 。MailMessage类用来设置E-mail的内容,如发信人地址、收信人地址等。 MailAttachment类用来添加附件 。SmtpMail类用来发送信件 。最简单的发送方式: Sub Page_Load(Sende
20、r As Object, E As EventArgs)SmtpMail.Send(,您好,祝一切顺利) End Sub说明: 此时使用本机的发信服务器,要求在IIS中启动SMTP服务。4-20.aspx下面的示例比较完整,客户可以利用表单输入信件内容,并可以选择客户端的文件作为附件发出。要注意,如果发送客户端的文件,首先要将该文件上传到服务器端,然后再发送。 4-21.aspx4-21.aspxViewState是服务器控件状态保存的基础,它是一个Hidden字段,用IE查看 Html源码,找到一个名为_VIEWSTATE的Hidden字段,其中有一大堆乱七八糟的字符,这就是页面的ViewS
21、tate。ViewState是ASP.NET中用来保存WEB控件回传时状态值一种机制.在WEB窗体(FORM)的设置为runat=“server”,这个窗体(FORM)会被附加一个隐藏的属性_VIEWSTATE。_VIEWSTATE中存放了所有控件在ViewState中的状态值.ViewState是类Control中的一个域,其他所有控件通过继承Control来获得了ViewState功能.它的类型是system.Web.UI.StateBag,一个名称/值的对象集合当请求某个页面时,ASP.NET把所有控件的状态序列化成一个字符串,然后做为窗体的隐藏属性送到客户端.当客户端把页面回传时,AS
22、P.NET分析回传的窗体属性,并赋给控件对应的值.当然这些全部是由ASP.NET负责的. 如果要使用ViewState,则在ASPX页面中必须有一个服务器端窗体标记().窗体字段是必需的,这样包含ViewState信息的隐藏字段才能回传给服务器.而且,该窗体还必须是服务器端的窗体,这样在服务器上执行该页面时,ASP.NET页面框架才能添加隐藏的字段.Page的EnableViewState属性值为true.控件的EnableViewState属性值为true.1.当存在页面回传时,不需要维持控件的值就要把ViewState禁止.2.ViewState的索引是大小写敏感的.3.ViewState
23、不是跨页面的.4.为了能保存在ViewState中,对象必须是可流化或者定义了TypeConverter.5.控件TextBox的TextMode属性设置为Password时,它的状态将不会被保存在ViewState中,这应该是出于安全性的考虑.6.在页面没有回传或重定向或在回传中转到(transfer)其他页面时不要使用ViewState.7.在动态建立控件时要小心它的ViewState.8.当禁止一个程序的ViewState时,这个程序的所有页面的ViewState也被禁止了.9.只有当页面回传自身时ViewState才是持续的.设置ViewState ViewState可以在控件,页,程
24、序,全局配置中设置.缺省情况下EnableViewState为true.如果要禁止所有页面ViewState功能,可以在程序配置中把EnableViewState设为false.1. HTML标签 测试页 2. 2. HyperLink控件 这是最常见的一种转向方法这是最常见的一种转向方法; ; 1)A 服务器端控件 属性NavigateUrl指定要跳转到的Url地址 2)NavigateUrl是可以在服务器端使用代码修改,这个区别于 3)由于HyperLink本身没有事件所以要在服务器端其它事件中设置NavigateUrl 4)代码示例 ok 3. Response.Redirect()方法
25、 1)过程:发送一个Http响应到客户端,通知客户端跳转到一个新的页面,然后客户端再发送跳转请求到服务器端。 2)页面跳转之后内部控件保存的所有信息丢失,当A跳转到B,B页面将不能访问A页面提交的数据信息。 3)使用这个方法使用这个方法跳转后浏览器地址栏的Url信息改变 4)可以使用Session Cookies Application等对象进行页面间的数据传递 5)重定向操作发生在客户端,总共涉及到两次与Web服务器的通信:一次是对原始页面的请求,另一次是重定向新页面的请求 这个跳转页面的方法跳转的速度不快,因为它要走2个来回(2次postback),但他可以跳 转到任何页面,没有站点页面限
26、制(即可以由雅虎跳到新浪),同时不能跳过登录保护4 4. . Server.Transfer()Server.Transfer()方法方法 1)实现页面跳转的同时将页面的控制权进行移交 2)页面跳转过程中Request Session等保存的信息不变,跳转之后可以使用上一个页面提交的数据 3)跳转之后浏览器地址栏的Url不变 4)这种方法的重定向请求是在服务器端的进行的,浏览器不知道页面已经发生了一次跳转 速度快,只需要一次postback ,但是它必须是在同一个站点下,因为它是server的一个方法。另外,他能跳过登录保护。5. Server.Execute() Server.Execute
27、()方法方法 1)该方法允许当前页面执行同一个Web服务器上的另一个页面 2)页面执行完毕之后重新回到原始页面发出Server.Execute()的位置。 3)这种方式类似针对页面的一次函数调用,被请求的页面可以使用原始页面的表单数据和查询字符串集合 4)被调用页面的Page指令的EnableViewStateMac属性设置为False 6. Javascript实现跳转/ 以下方式直接跳转 window.location.href = hello.html; / 以下方式定时跳转 setTimeout(javascript:location.href=hello.html, 5000); 7
28、. 7. 新页面显示新页面显示1)Respose.Write( window.open( + url + ); );2) 打开 3) 打开 private void button1_Click(object sender, EventArgs e) FrmRemoteVM fa = new FrmRemoteVM(); fa.Show(); 当需要把用户跳转到另一台服务器上的页面的时候使用redirect 当需要把用户跳转到非aspx页面时候,如html使用redirect 需要把查询字符串作为url一部分的时候保留传给服务器的时候,因为其他2种方法不能做到2次postback,把数据先带回服
29、务器使用redirect 需要aspx页面间的转换(不涉及登录) 使用transfer 当需要把aspx页面的输出结果插入到另一个aspx页面的时候使用execute方法。 如果要让用户来决定何时转换页面以及转到哪一个页面,超级链接最适合。 如果要用程序来控制转换的目标,但转换的时机由用户决定,使用Web服务器的HyperLink控件,动态设置其NavigateUrl属性。 如果要把用户连接到另一台服务器上的资源,使用Response.Redirect。 如果要将查询字符串作为URL的一部分保留,使用Response.Redirect。 如果要将执行流程转入同一Web服务器的另一个ASPX页面
30、,应当使用Server.Transfer而不是Response.Redirect,因为Server.Transfer能够避免不必要的网络通信,从而获得更好的性能和浏览效果。 如果要捕获一个ASPX页面的输出结果,然后将结果插入另一个ASPX页面的特定位置,则使用Server.Execute。 如果要确保HTML输出合法,请使用Response.Redirect,不要使用Server.Transfer或Server.Execute方法。因为ASP.NET的页面表单提交到自身,完成回传的功能,所以默认情况下不能使用POST方式进行多页面传值1 1URLURL传值传值这是经典的传值方式,这种方法的使
31、用非常简单,不过所传递的值是会显示在浏览器的地址栏上的,而且不能传递对象。所以这种方法一般用于传递的值少且安全性要求不高的情况下。在*.aspx页面开发中可以使用超级链接文本进行传值,如以下代码所示。URL传值以上链接文本将页面跳转到GetValues.aspx页面,并且通过URL传递urlvalue1变量和urlvalue2变量,其值分别为intel和amd。在*.cs的服务器端方法中也可以调用HttpResponse对象的Redirect方法,将浏览器端重定向到新页面并通过URL传值,如以下代码所示。Response.Redirect(“/GetValues.aspx?urlvalue1=
32、intel&urlvalue2=amd”);2. Session Session传值传值 这种方法将每份数据存储于服务器变量中,可以传递比较多的数据,并且安全性较高,所以常用于用户身份的验证功能中。不过,Session变量如果存储过多的数据会消耗过多的服务器资源。其使用方法如以下代码所示。SessionSessionValue = “ATI”;/也可以用索引存储Session0 = “ATI”;/在其他页面的服务器端方法中取值方式为:string str = SessionSessionValue.ToString();/也可以用索引获取string str = Session0.To
33、String();Session的可在应用程序的多个页面中以名称/值对的方式共享,直到浏览用户关闭自己的浏览器或者服务器Session超时(可设置,默认为20分钟)。3 3CookieCookie传值传值 Cookie是一种比较特殊的数据存储方式,它以文本文件的形式存在于浏览用户的磁盘中。很多登录系统就是利用Cookie实现用户自动登录。即用户登录一次的登录信息将被写入到用户电脑的Cookie文件中,下次登录时,网站自动读取该Cookie完成身份验证。通过Cookie传递数据虽然很方便,保存时间可以自由设置,但是安全性不高。ASP.NET中操作Cookie的主要类型位于System.Web命名
34、空间下,分别为HttpCookie、HttpResponse以及HttpRequest。HttpCookie可建立和操作独立Cookie的安全类型,访问HttpResponse和HttpRequest的Cookies属性可以获取HttpCookieCollection集合对象,以读取或添加HttpCookie对象。添加Cookie的方法如以下代码所示。/创建一个HttpCookie 对象,向构造函数传递名称值HttpCookie ck = new HttpCookie(CookieValue);/设置ck的“Value”属性(值)ck.Value = “Cookie值”;/设置ck的过期时间为
35、当前时间加上360s,即6分钟后失效ck.Expires = DateTime.Now.AddSeconds(360);/设置ck有效范围(域限制)ck.Domain = ;/将ck添加至HttpCookieCollection对象Response.Cookies.Add(ck);/也可为以下方法添加/Response.AppendCookie(ck);读取用户的Cookie则更为简单,只需根据名称读取HttpCookieCollection集合对象中的子项即可,如以下代码所示。string str = Request.CookiesCookieValue.Value;除此之外,还可以利用一个
36、HttpCookie存储多个名称/值对形式的Cookie信息,如以下代码所示。HttpCookie ck = new HttpCookie(CookieValue);/以名称/值对的方式添加多个Cookie信息ck.Values.Add(value1, “one”);ck.Values.Add(value2, two);读取这些Cookie如以下代码所示。string str = 值1:+Request.CookiesCookieValue.Valuesvalue1;str += 值2: + Request.CookiesCookieValue.Valuesvalue2;说明:多数浏览器支持最
37、多可达4096字节的Cookie,如果要将为数不多的几个值保存到用户计算机上,浏览器还限制了每个站点可以在用户计算机上保存的Cookie数量。大多数浏览器只允许每个站点保存20个Cookie。如果试图保存更多的Cookie,则最先保存的Cookie就会被删除。还有些浏览器会对来自所有站点的Cookie总数作出限制,这个限制通常为300个。用户可以设置自己的浏览器,拒绝接受Cookie,这种情况下只能结合其他的数据存储方式。4 4Server.TransferServer.Transfer传值传值首先通过定义一个public权限的属性,该属性可返回所需传递的值。然后在第两个页面中,使用Context.Handler属性来获得前一个页面实例对象的引用,即可通过访问自定义的属性获取需要的值。假设SendValues.aspx页面为传递数据的页面,在SendValue
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 酒店客房部经理招聘合同
- 图书馆暖气管道安装工程施工合同
- 乡镇农业技术推广员聘用合同
- 2024砂洲渔业资源租赁管理合同规范3篇
- 健身房场地租赁合同协议
- 2024生鲜农产品品牌授权与采购合同3篇
- 2024水利工程环境监理规范操作执行规范执行规范指导合同范本3篇
- 二零二五年度租赁保证金退还协议2篇
- 2024年高级猪饲料采购与销售专项协议版B版
- 二零二五年度新型建筑钢筋施工劳务合同2篇
- 心电图并发症预防及处理
- 重庆市七中学2023-2024学年数学八上期末统考模拟试题【含解析】
- 检验科lis系统需求
- 疏散楼梯安全要求全解析
- 中东及非洲空气制水机行业现状及发展机遇分析2024-2030
- DL∕T 1631-2016 并网风电场继电保护配置及整定技术规范
- PLC控制系统合同(2024版)
- 煤矿立井井筒及硐室设计规范
- 房地产项目开发合作协议书
- JJG(交通) 171-2021 超声式成孔质量检测仪检定规程
- QCT457-2023救护车技术规范
评论
0/150
提交评论