第四章 asp.net 对象应用

38
第第第 ASP.NET 第第第第

Upload: alfreda-dawson

Post on 01-Jan-2016

121 views

Category:

Documents


2 download

DESCRIPTION

第四章 ASP.NET 对象应用. ASP.NET 使用了内嵌的具有继承性的对象,它们均有自身的预定义功能和属性、方法和事件,构成了 ASP 发展的基础。. 本章将讲解对象的功能和应用: Request 对象的属性和方法。 Response 对象的属性和方法以及 Response 对象的使用方法。 Server 对象的属性和方法以及方法之间的区别。 Application 对象的属性和方法以及对象的用法和锁定。. 4.1 Request 对象. Request 对象主要是使服务器端取得客户端浏览器的一些数据。 - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第四章  ASP.NET 对象应用

第四章 ASP.NET 对象应用

Page 2: 第四章  ASP.NET 对象应用

ASP.NET 使用了内嵌的具有继承性的对象,它们均有自身的预定义功能和属性、方法和事件,构成了 ASP发展的基础。

本章将讲解对象的功能和应用: Request 对象的属性和方法。 Response 对象的属性和方法以及 Response 对

象的使用方法。 Server 对象的属性和方法以及方法之间的区别。 Application 对象的属性和方法以及对象的用法和

锁定。

Page 3: 第四章  ASP.NET 对象应用

4.1 Request 对象

Request 对象主要是使服务器端取得客户端浏览器的一些数据。

Request 对象的属性和方法相当多,详见教材表 4-1 和表 4-2 。

Page 4: 第四章  ASP.NET 对象应用

4.1.1 属性和方法

Request 对象的获取数据的常用方法有: Request.Form Request.QueryString Request Form 表单的有两种提交方式: Post 方式 Get 方式

Request 对象的属性和方法相当多,详见教材表 4-1 和表 4-2 。

Page 5: 第四章  ASP.NET 对象应用

4.1.2 读取对象或参数的值

Request 对象的基本用法就是读取对象或是参数的内容。

这里使用它的 Href 属性来完成参数的传递。

例 ch04_01: <Html> <A Href =“ ch04_02.aspx?data1=222"> 将资料传到另一个网页中 </A> </Html>例 ch04_02 <Html> <%Response.Write(Request("data1"))%> </Html>

单击网页传递内容

Page 6: 第四章  ASP.NET 对象应用

4.1.3 取得客户端浏览器的信息 如果想取得目前

和服务器联机的浏览器的信息,使用 Browser 属性。

Browser 属性是集合对象,使用HttpBrowserCapabilities 类型的对象变量来接收Browser 属性的返回值。

例 ch04_02:<Html><Script Language="VB" Runat="Server"> Sub Page_Load(Sender As Object,e As Eventargs) Dim bc As HttpBrowserCapabilities=Request.Browser Response.Write("<p> 浏览器信息 </p>") Response.Write(" 浏览器 ="&bc.Browser&"<br>") Response.Write(" 类型 ="&bc.Type&"<br>")。。。。。End Sub</script></html>

详见例程ch04_02

Page 7: 第四章  ASP.NET 对象应用

4.2 Response 对象 Response 对象主要是输出数据到客户端, Resp

onse 对象类别全称为 HttpResponse ,和 Request 对象一样是属于 Page 对象的成员,所以也是不用声明便可以直接使用。

4.2.1 属性和方法 Response 对象的主要功能是向浏览器输出信息。 常用的方法包括 Response.Write() 、 Response.

End() 和 Response.WriteFile() 等。 详见教材表 4.3 和表 4.4

Page 8: 第四章  ASP.NET 对象应用

4.2.2 缓冲区的使用

由于 Response 对象的 BufferOutput 属性默认为 True, 所以要输出到客户端的数据暂时都存储在缓冲区内,等到所有的事件程序以及所有的页面对象全部解释完毕,才将所有在缓冲区中的数据送到客户端的浏览器。

下面比较例程 ch04_04 和例程 ch04_05 。

例程ch04_04 例程ch04_05

Page 9: 第四章  ASP.NET 对象应用

4.2.3 地址的重新导向

Response 对象的 Redirect方法可以将连接重新导向到其他地址,使用时只要传入一个字符串类型的地址即可,传入在网址后附加参数的地址字符串也可以。

范例 ch04_06 中,使用了 TextBox Web 控件让用户输入一个地址,然后链接到新的页面,运行结果如图。

单击确定,链接到新的页面

例程ch04_06

Page 10: 第四章  ASP.NET 对象应用

4.2.4 直接输出文本文件

Response对象提供了一个直接输出文本文件的 WriteFile方法。输入文件名和地址即可。

例 ch04_08: <Html> <Script Language="VB" Runat="Server"> Sub Page_Load(Sender As Object,e As Eventargs ) Response.WriteFile(“1.txt") End Sub</Script></Html>

Page 11: 第四章  ASP.NET 对象应用

4.2.5 查看用户的联机状态

若用户停止浏览的动作, IIS 还是继续执行,则会浪费系统的有限资源。

因此,判断 Response 对象的 IsClientConnected 属性。若为 False 则代表用户已经离线,此时只要使用 Response 对象的 End 方法来结束网页的执行即可。

这样 Server 就不会执行无用的工作,可以空出更多的资源来让他人使用。

Page 12: 第四章  ASP.NET 对象应用

例 ch04_09 : <Html> <Script Language="VB" Runat="Server"> Sub Page_Load(Sender As Object, e As Ev

entargs ) Dim i As Long For i=0 To 100000 If Response.IsClientConnected=False Then

Response.End Next Response.Write(" 执行完毕 ") End Sub </Script> </Html>

Page 13: 第四章  ASP.NET 对象应用

4.3 Server 对象

Server 对象也是 Page 对象的成员之一,主要提供一些处理网页请求时所需的功能。

4.3.1 属性和方法 通过 Server 对象可以访问服务器的方法和属

性,比如得到服务器上某文件的物理路径和设置某文件的执行期限等。

详见教材表 4-5 和表 4-6 。

Page 14: 第四章  ASP.NET 对象应用

4.3.2 使用 COM 组件

COM 是一种对象的格式。凡是依照 COM 的规格所制作出来的组件,皆可以提供功能让其他程序或组件使用。要使用 COM 组件,可以使用 Server 对象的 CreateObiect 、 CreateObjectFromClsid 和 CreateObjectStatic 这 3种方法。

例如: CreateObjectStatic 方法的语法如下所示。 对象变量= Server.CreateObject("ProgId")

对象变量= Server.CreateObjectStatic("ProgId")

对象变量= Server.CreateObjectFromClsid("ClsId")

Page 15: 第四章  ASP.NET 对象应用

范例 ch04_09建立一个可以存取文件的 FileSystemObject 对象,并读取一个文本文件,文本文件内容为“使用文件系统对象来读取存在于磁盘上的文件标记,需将换行字符改成 HTML 的断行字符”。

<html> <script Language="VB" Runat="Server"></script></html> Sub Page_Load(Sender As Object,e As Eventargs) Dim Content As String Dim File As Object Dim fff As Object fff=Server.CreateObject("Scripting.FileSystemObject") File=fff.OpenTextFile(Server.MapPath("1.txt"),1, False) IfFile.AtEndOfStream=False Then Content=File.ReadAll Content=Replace(Content,Chr(13),"<Br>") Response.Write(Content) End ifEnd Sub

Page 16: 第四章  ASP.NET 对象应用

4.3.3 HtmIEncode 与 HtmIDecode

如果想在网页上显示 HTML标注,若在网页中直接输出则会被浏览器解释为 HTML 的内容,所以要透过 Server 对象的 HtmlEncode 方法将它编码再输出,而若要将编码后的结果译码回原本的内容,则使用 HtmlDecode 方法。

例程 ch04_11的运行结果:

Page 17: 第四章  ASP.NET 对象应用

例程 ch04_11 :

<html> <Script Language="VB" Runat="Server"> Sub Page_Load(Sender As Object, e As Eventargs) Dim strHtmlContent As String strHtmlContent=Server.HtmlEncode("<B> 大家好啊! </B>") Response.Write(strHtmlContent) Response.Write("<P>") strHtmlContent=Server.HtmlDecode(strHtmlContent) Response.Write(strHtmlContent) End Sub </script> </html>

Page 18: 第四章  ASP.NET 对象应用

4.3.4 UrIEncode 与 UrIDecode

在传递网页参数时是将数据附在网址后面传递,但是遇到一些如#、 & 的特殊字符会读不到这些字符之后的参数。所以在需要传递特殊字符时,只要先将欲传递的内容先以 UrlEncode 加以编码,就可以保证所传递过去的值可以被顺利读到,而 UrlDecode 方法则是将编码过的内容译码还原。

Page 19: 第四章  ASP.NET 对象应用

例 ch04_13 :使用两个 HtmlAnchor 控件来比较编码传递和未编码的结果 , 传递的参数内容是 "a#@ #b" 。

例 ch04_13:<Html> <A Href="http://127.0.0.1/CR/CH09/EX02.aspx?datal=a# @ #b">未编码的参数内容 </A><br> <AHref="http://127.0.0.1/CR/CH09/EX02.aspx?data1=<%Response.Write(Server.UrlEncode("a# @ #b"))%>" >编码过的参数内容 </A></Html>

例 ch04_13的运行效果

a. 单击【未编码的参数内容】 b. 单击【编码过的参数内容】

Page 20: 第四章  ASP.NET 对象应用

4.4 Application 对象

Application 对象是共有的对象,所有的用户都可以对某个特定的 Application 对象进行修改。

Application 对象的类别全称是 HttpApplication ,每个 Application 对象变量都是 Application 对象

集合中的对象之一,由 Application 对象统一管理。

Page 21: 第四章  ASP.NET 对象应用

4.4.1 属性和方法

严格地说, Application 对象没有自己的属性,用户可以根据自己的需要定义属性,以便保存一些共有的信息。但有些定义的属性是共有的属性。

教材表 4- 7列出了 Application 对象的常用属性。

教材表 4- 8 则列出了 Application 对象的常用方法。

Page 22: 第四章  ASP.NET 对象应用

4.4.2 Application 对象的用法

使用 Annlication 对象变量的语法如下。 Application(" 变量 ")=" 变量内容“

Application 对象变量的内容也可以是 COM 组件,产生的语法如下。

Application(" 对象名称 ")=Server.Creatobject(ProgId)

Page 23: 第四章  ASP.NET 对象应用

例 ch04_13 :

<html><Script Language="VB" Runat="Server">Private Sub Page_Load(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase.Load ' 在此处放置初始化页的用户代码 Dim tt As Short Application. Add("qq1"," 阶段一 ") Application.Add("qq2"," 阶段二 ") Application.Add("qq3"," 阶段三 ") For tt = 0 To Application.Count - 1 Response.Write(" 变量名: " & Application.GetKey(tt)) Response.Write(" 变量值: " & Application.ltem(tt) & "<P>") Next Application.Clear()End Sub</script></html>

Page 24: 第四章  ASP.NET 对象应用

4.5 Session 对象

使用 Session 对象可存储特定的用户会话所需的信息。当用户在应用程序的页面之间跳转时,存储在 Session 对象中的变量不会清除。当网页用户关掉浏览器或超过设置 Session 变量对象的有效时间时, Session 对象变量就会消失。Session 对象的类别全称是 HttpSessionState,也属于 Page 对象的成员,所以可以直接使用。

Page 25: 第四章  ASP.NET 对象应用

4.5.1 属性和方法

使用 Session 对象时首先应该了解对象的属性和方法一,如果了解了 Session 对象,就会知道 Session 对象的方法 Abandon()显式地结束一个会话,可利用属性 Timeout 设置 Session 的失效时间。

Session 对象的常用属性详见教材表 4-9 。

Page 26: 第四章  ASP.NET 对象应用

4.5.2 Session 对象的应用

Session 对象的语法如下: Session(" 变量名 ")= " 内容“

Session 也可以存放 COM 组件,其语法如下: Session(" 名称 ")= Server. CreateObject(ProgId )

Session 对象变量最常用来存放用户的状态。

Page 27: 第四章  ASP.NET 对象应用

下例代码中用户必须成功通过登录网页 2.aspx 的验证,才可以浏览 aspx 网页,否则就会提示验证失败。其验证的程序从会员数据表中判断用户所填入的名称及密码是否正确。

Private Sub Page_Load(ByVal sender As System.Object,ByVal e As System.EventArgs) Handles MyBase.Load ' 在此处放置初始化页的用户代码 conn=New SqlConnection("server=localhost;database=qq;uid=sa;pwd=sa"); conn.open(); ' openEnd SubSub btnSubmit Click(Sender As Object,e As Eventargs) Dim ds As Dataset = New DataSet Dim da As SqlDataAdapter=New SqlDataAdapter("select * from members where UserID='" + txtid.Text + "' and userpwd='" + txtpassword.Text +" ' ",conn) conn.Open() da.Fill(ds) If ds.Tables(0).Rows.Count = 0 Then Label3.Text=" 验证失败 ! 请重新输入 " Else Session("userid")=txtid.Text Response.Redirect("2.aspx") ' 将链接导向至 2.aspx End if conn.Close() ds.Clear() ds=NothingEnd SubSub btnReset Click(Sender As Object , e As Eventargs) txtid.Text = "" txtpassword.Text=""End Sub

Page 28: 第四章  ASP.NET 对象应用

4.5.3 Session 对象的有效期限

当用户超过一段时间没有动作时,就可以将 Session 释放。

要更改 Session 对象的有效期限,只要设置 TimeOut 属性即可。

TimeOut 属性的默认值是 20分钟。

Page 29: 第四章  ASP.NET 对象应用

例 ch04_15.aspx 中将 Session 对象的 TimeOut 属性设置为 1 分

钟。 <html><Form Runat="Server"> <Asp:Button Id="Button1" Text=" 显示 " OnClick="Button1_Click" Runat="Server" /> 目前时间: <Asp:Label Id="Labell" Runat="Server" /> <P> 第一个 Session 的值: <Asp:Label Id="Label2" Runat="Server" /> <Br> 第二个 Session 的值: <Asp:Label Id="Label3" Runat="Server" /><Br></Form><script Language="VB" Runat="Server"> Sub Page_Load(Sender As Object,e As Eventargs) If Not Page.IsPostBack Then Session("Sessionl")="Valuel" Session("Session2")="Value2"

Session.Timeout=1 Labell.Text=Format (Now(),"HH:MM:SS") Label2.Text=Session("Sessionl") Label3.Text=Session("Session2") End If End Sub Sub Button1_Click(Sender As Object,e As Eventargs) Labell.Text=Format(Now(),"hh:mm:ss") Label2.Text=Session("Sessionl") Label3.Text=Session("Session2") End Sub</script></html>

Page 30: 第四章  ASP.NET 对象应用

4.6 Cookies 对象

Cookies, Session 和 Application 对象类似,也是一种集合对象,都用来保存数据。

但 Cookies 和其他对象的最大不同是 Cookies将数据存放在客户端的磁盘上,

而 Application 以 Session 对象将数据存放在Server 端。

Page 31: 第四章  ASP.NET 对象应用

4.6.1 Cookies 对象的属性和方法

Cookies 对象也可以保存客户信息,而使用 Response:Cookies.Add 可以将信息发送并保存到客户端的浏览器。

Cookies 对象常用的属性详见教材表 4-11 Cookies 对象的常用方法表详见教材 4-12

Page 32: 第四章  ASP.NET 对象应用

Cookies 对象不隶属于 Page 对象,所以用法和Application 及 Session 对象不同。

Cookies 对象分别属于 Request 对象和 ·Response 对象,每一个 Cookies 变量都被 Cookies 对象所管理,它的正确对象类别名称是 HttpCookie Collection. 要存储一个 Cookie 变量,则要通过 Response 对象的 Cookies 集合;

语法如下: Response.Cookies (Name As String). Value=" 资料 "

而要取回 Cookies ,则用 Request 对象的 Cookies 集合,并将指定的 Cookies 返回;

语法如下: 变量 =Request.Cookies(Name As String).value

Page 33: 第四章  ASP.NET 对象应用

例 ch04_16 :新增两个 Cookies 变量,并利用 For---Next 循环分别利用 Cookies 集合的 Item 属性以及 Get 方法将 Cookies 变量返回<html><script Lanctuacte="VB" Runat="Server"> Sub Page_Load(Sender AS Object,e As Eventargs) Dim shtI As Short Response.Cookies("Cookie1").Value="Microsoft VisualStdio .Net" Response.Cookies("Cookie2").Value="ASP.NET" For shtI=0 To Request.Cookies.Count-1 Response. Write (" 变量名称 " & Request.Cookies.Item(shtI).Name & "<br> 变量内容: " & Request.Cookies.Get(shtI).Value & "<br>") Next 图 4.15 利用 Cookies 的属性 Response.Cookies.Clear() End Sub</script></html>

Page 34: 第四章  ASP.NET 对象应用

4.6.2 CookieCollection 及 Cookies 对象

除了使用系统默认的 Cookies 对象外,也可以自行定义属于自己的 Cookies 对象。

示例 ch04_17 的运行结果:

Page 35: 第四章  ASP.NET 对象应用

例 ch04_17的代码:<html><Script Lanquaqe="VB" Runat="Server"> Sub Page_Load(Sender As Object,e As Eventargs) Dim CookieCollection As HttpcookieCollection=New HttpCookieCollection Dim Cookie1 As HttpCookie=New HttpCookie("Cookie1") Dim Cookie2 AS HttpCookie=New HttpCookie("Cookie2") Cookiel.Value="Microsoft VisualStudio .NET" Cookie2.Value="ASP.NET" CookieCollection.Add(Cookie1) // 将 Cookie 对象加入 Cookies 集合中 CookieCollection.Add(Cookie2) Dim shtI As Short For shtI=0 To CookieCollection.Count-1 Response.Write(" 变量名称 =" & CookieCollection.Item (shtI) .Name & "<Br>") Response.Write(" 变量内容 =" & CookieCollection.Get(shtI).value & "<p>" ) Next CookieCollection.Clear() End Sub</script></html>

Page 36: 第四章  ASP.NET 对象应用

4.6.3 Cookies 变量的生命周期

系统默认给 Cookies 变量的有效时间是 10000分钟,不过可以在程序中自行设置有效日期。

方法是指定 Cookies 变量的 Expires 属性。

语法如下: Response.Cookies(CookieName).Expires=# 日期 #

详见范例ch04_18

Page 37: 第四章  ASP.NET 对象应用

4.6.4 Cookies 验证

在使用 Cookie验证用户时,必须考虑到身份验证的问题。因为用户可能在非私人的计算机上浏览,或是个人计算机的安全防护不完善,导致其他人可能使用同一个浏览器,这样一来任何人都可以顺利通过 Cookie 的验证。对于有主要机密的数据或是有价交易的处理,势必造成漏洞;设计这方面的网站时,要小心仔细考虑 Cookies 的应用。

Page 38: 第四章  ASP.NET 对象应用

本章小结

本章主要介绍了常用对象: Request 、 Response 、 Session 、 Server 及 Cookies 等。

应熟练对象的属性和方法,弄清楚每个对象的用法及工作原理。

读者在运行本章的范例程序时,首先要设置好运行环境,同时也要注意版本规范的差别,请读者按自己的运行环境修改程序。