43
第 5 第 第第第第第第 5.1 ASP.NET 第第第第 5.2 Page 第第 5.3 Response 第第 5.4 Request 第第 5.5 Server 第第 5.6 Application 第第 5.7 Session 第第 5.8 Cookies 第第 5.9 第第第第第第 5.10 第第第第

第 5 章 基本对象编程

  • Upload
    melva

  • View
    78

  • Download
    7

Embed Size (px)

DESCRIPTION

第 5 章 基本对象编程. 5.1 ASP.NET 对象概述 5.2 Page 对象 5.3 Response 对象 5.4 Request 对象 5.5 Server 对象 5.6 Application 对象 5.7 Session 对象 5.8 Cookies 对象 5.9 对象应用实例 5.10 本章小结. 5.1 ASP.NET 对象概述. 语法: - PowerPoint PPT Presentation

Citation preview

Page 1: 第 5 章 基本对象编程

第 5 章 基本对象编程 5.1 ASP.NET 对象概述 5.2 Page 对象 5.3 Response 对象 5.4 Request 对象 5.5 Server 对象 5.6 Application 对象 5.7 Session 对象 5.8 Cookies 对象 5.9 对象应用实例 5.10 本章小结

Page 2: 第 5 章 基本对象编程

5.1 ASP.NET 对象概述 语法: 对象名 . 属性名 上述语法为访问对象属性的格式。 语法: 对象名 . 方法名 ( 参数表 ) 表 5.1 ASP.NET 的内置对象上述语法为访问对象方法的格式 。 语法: 对象名 _ 事件名 ( 参数表 ) 或 事件名 ( 参数表 )上述语法为对象事件处理的定义。ASP.NET 事件的处理过程都有以下二个参数:(1) sender As Object (2) e As EventArgs ASP.NET 内置的对象主要有七个,如表 5.1 所示。

Page 3: 第 5 章 基本对象编程

5.2 Page 对象 5.2.1 Page 对象的属性 Page 对象的常用属性列于右表中。

Page 4: 第 5 章 基本对象编程

5.2 Page 对象5.2.2 Page 对象的方法 Page 对象的方法较多,表列出了常用的方法。 Page 对象的常用方法

Page 5: 第 5 章 基本对象编程

5.2 Page 对象5.2.3 Page 对象的事件Page 对象的事件列于表中,最主要的事件是 Init 、 Load 和 UnLoad 。 Page 对象的主要事件

Web Form 事件触发次序5.2.4 Web 控制事件ASP.NET 中事件的触发次序如图所示。

Page 6: 第 5 章 基本对象编程

5.2 Page 对象【例 5.1 】设计一个 ASP.NET 网页,该页面被请求时,在浏览器中显示一个选择运动项目的下拉列表;在文本框中输入新增运动项目,点击“增加”按钮后,在下拉列表中将增加该运动项目。设计步骤如下: (1)    创建项目 WebExamp5_1 ,将初始页面文件名由 WebForm1.aspx 改为 Main5_1.aspx 。 (2) 设计程序主页面 Main5_1.aspx 界面,所包含的控件及属性列于表中。

Main5_1.aspx 文件包含的控件及其属性

(3) 在 Main5_1.aspx 的空白处双击,在 Main5_1.aspx.vb 程序编辑窗口中输入以下代码:Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

If Not IsPostBack Then

Page 7: 第 5 章 基本对象编程

5.2 Page 对象 DpSport.Items.Add(" 足球 ") DpSport.Items.Add(" 乒乓球 ") DpSport.Items.Add(" 长跑 ") DpSport.Items.Add(" 滑冰 ") End If End Sub

(4) 编译程序。选择主选单的“生成”“生成解决方案”。(5) 运行程序,结果如图所示。

可选择的运动项目 增加了新运动项目

Page 8: 第 5 章 基本对象编程

5.3 Response 对象 Response 对象的主要作用是输出数据到客户端 , 常用属性列于表 , Response 对象的 常用方法列于表。 Response 对象的常用属性

Response 对象的常用方法

Page 9: 第 5 章 基本对象编程

5.3 Response 对象5.3.1 使用缓冲区 (Buffer) 以下是一个操作缓冲区的程序示例:

<HTML><%Response.Write(" 清除之后的数据 <BR>")%><SCRIPT Language="VB" Runat="Server">

Sub Page_Load(Sender As Object,e As Eventargs) Response.Write(" 清除缓冲区之前的数据 " & "<BR>") Response.Clear() 执行的结果

End Sub </SCRIPT> </HTML>

接下来将上述程序代码中加入“Response.BufferOutput=False” :<HTML><%Response.Write(" 清除之后的数据 <BR>")%><SCRIPT Language="VB" Runat="Server">Sub Page_Load(Sender As Object,e As Eventargs)

Response.BufferOutput=FalseResponse.Write(" 清除缓冲区之前的数据 " & "<BR>")Response.Clear()

Page 10: 第 5 章 基本对象编程

5.3 Response 对象 End Sub

</SCRIPT> </HTML>这段程序的执行结果如右图所示。可以发现执行的结果并没有因为使用Clear 方法而将缓冲区的数据清除,这表示数据是直接输出而没有存放在缓冲区内。

5.3.2 检查使用者的联机状态【例 5.2 】下列的程序代码执行可达 100000 次的循环,在循环中加入对 IsClientConnection 属性的判断操作;只要 Client 端离线就终止执行,而 Client 端的浏览器上也不会出现任何信息。

<SCRIPT Language="VB" Runat="Server">Sub Page_Load(Sender As Object,e As Eventargs)

Dim i As LongFor i=0 To 100000If Response.IsClientConnected=False Then Response.End

Page 11: 第 5 章 基本对象编程

5.3 Response 对象 Next Response.Write(" 执行完毕 ") End Sub </SCRIPT>

5.3.3 地址重定向【例 5.3 】使用了 TextBox 控件让用户输入一个 URL ,当用户按下“确定”后即可将连接导向 用户输入的 UPL 地址。本程序界面设计非常简单,这里直接给出程序代码。<SCRIPT Language="VB" Runat="Server">Sub BtnOK_Click(Sender As Object,e As Eventargs)

Response.Redirect(TxtURL.Text)End Sub</SCRIPT><HTML><FORM Runat="Server">请输入一个 URL : <Br><ASP:TextBox Id="TxtURL" Runat="Server" /><ASP:Button Id="BtnOK" Text=" 确定 " OnClick= "BtnOK_Click" Runat="Server" /></FORM></HTML>程序运行结果如右图所示。

Page 12: 第 5 章 基本对象编程

5.3 Response 对象5.3.4 直接输出文本文件 Response 对象提供了一个直接输出文字文件的 WriteFile 方法。若所要输出的文件和执行的网页在同一个目录,只要直接传入文件名称就可以了;若不在同一个目录,则要指定详细的目录名称。【例 5.4 】以下程序将与本程序位于同一目录的文本文件“ Output.txt” 直接输出到网页上。 <SCRIPT Language="VB" Runat="Server"> Sub Page_Load(Sender As Object,e As Eventargs) Response.WriteFile("Output.txt") End Sub </SCRIPT>

Page 13: 第 5 章 基本对象编程

5.4 Request 对象 Request 对象的主要功能是让服务器端取得客户端浏览器的数据 , 表列出了常用的属性。 Request 对象的常用属性

Page 14: 第 5 章 基本对象编程

5.4 Request 对象 Request 对象的常用属性

Request 对象的常用方法有以下两个: (1) MapPath(virtualPath) (2) SaveAs(filename,includeHeaders)

5.4.1 读取表单数据 读取表单数据的方式有以下三种 (1) 使用 Request 的 QueryString 属性获取表单数据

Page 15: 第 5 章 基本对象编程

5.4 Request 对象 (2) 使用 Request 的 Form 属性获取表单数据 (3) 使用 Request 对象的 Param 属性来获取表单数据在使用时还可以省略 QueryString 、 Form 、 Param 属性来得到表单的数据。以下是使用Request 对象获取表单数据的例子: Request.Querystrng("username") ' 以 Get 方法传送表单数据,服务器端得到表单项 username 的值 Request.Querystrng("userID") ' 以 Get 方法传送表单数据,服务器端得到表单项 userID 的值 Request.Form("username") ' 以 Post 方法传送表单数据,服务器端得到表单项 username 的值 Request.Form("userID") ' 以 Post 方法传送表单数据,服务器端得到表单项 userID 的值 Request.Param("username") ' 服务器端得到表单项 username 的值 Request.param("userID") ' 服务器端得到表单项 userID 的值 Request("username") 省略属性,得到表单项 username 的值 Request(“userID”) ‘ 省略属性,得到表单项 userID 的值5.4.2 取得客户端浏览器的信息

使用 Request 对象的 Browser 属性可取得目前连接 Web 服务器的浏览器的信息。【例 5.5 】使用 HttpBrowserCapabilities型态的变量来取得浏览器的部分信息。程序如下:<SCRIPT Language="VB" Runat="Server">Sub Page_Load(Sender As Object,e As Eventargs)

Dim bc As HttpBrowserCapabilities = Request.BrowserResponse.Write("<P> 浏览器信息 :</P>")Response.Write(" 浏览器 = " & bc.Browser & "<BR>")Response.Write(" 名称 = " & bc.Browser & "<BR>")

Page 16: 第 5 章 基本对象编程

5.4 Request 对象Response.Write("版本 = " & bc.Version & "<BR>")Response.Write(" 使用平台 = " & bc.Platform & "<BR>")Response.Write(" 是否为测试版 = " & bc.Beta & "<BR>")Response.Write(" 是否为 16 位的环境 = " & bc.Win16 & "<BR>")Response.Write(" 是否为 32 位的环境 = " & bc.Win32 & "<BR>")Response.Write(" 是否支持框架 (Frame) = " & bc.Frames & "<BR>")Response.Write(" 是否支持表格 (Table) = " & bc.Tables & "<BR>")Response.Write(" 是否支持 Cookie = " & bc.Cookies & "<BR>")Response.Write(" 是否支持 VB Script = " & bc.VBScript & "<BR>")Response.Write(" 是否支持 Java Script = " & bc.JavaScript & "<BR>")Response.Write(" 是否支持 Java Applets = " & bc.JavaApplets & "<BR>")Response.Write(" 是否支持 ActiveX Controls = " & bc.ActiveXControls &"<BR>")

End Sub 获取浏览器信息</SCRIPT>使用 Internet Explorer 浏览的结果如图所示。

Page 17: 第 5 章 基本对象编程

5.4 Request 对象5.4.3 MapPath 方法

Request 对象的 MapPath 方法接收一个字符串型的参数,执行以后传回目前网页在服务器上的实际路径。 【例 5.6】设文件 MyWeb.mdb 与本程序文件在同一个目录下,利用 Response 对象的 MapPath 方法获得 MyWeb.mdb 的实际路径,并用 Write 方法输出。程序如下:

<SCRIPT Language="VB" Runat="Server">Sub Page_Load(Sender As Object,e As Eventargs)

Response.Write(Request.MapPath("MyWeb.mdb")) End Sub</SCRIPT>

运行结果如图

Page 18: 第 5 章 基本对象编程

5.4 Request 对象5.4.4 获得用户上传的参数 使用 Request 对象的 QueryString 属性,可根据索引来取得参数值。 【例 5.7】下面的程序先定义一个 NameValueCollection型变量来接收QueryString的内容, 然后使用一组循环来取得参数名称及内容:

<SCRIPT Language="VB" Runat="Server">Sub Page_Load(Sender As Object,e As Eventargs)

Dim shtLoop1, shtLoop2 As ShortDim arA( ), arB( ) As StringDim colA As NameValueCollectioncolA=Request.QueryStringarA = colA.AllKeys ' 取得全部的键值并存到数组 arA 中For shtLoop1 = 0 To UBound(arA)Response.Write(" 参数名: " & arA(shtLoop1))arB = colA.GetValues(shtLoop1) '利用外循环的索引来取得参数内容并存到一个数组中For shtLoop2 = 0 To UBound(arB)Response.Write(" 内容: " & arB(shtLoop2) & "<BR>")Next shtLoop2Next shtLoop1

End Sub</SCRIPT>

Page 19: 第 5 章 基本对象编程

5.4 Request 对象

由于 AllKeys 方法和 GetValues 方法的传回值都是数组,所以必须说明两个数组来接收所传递的值。图给出了该程序在浏览器的地址栏中输入“ http://localhost/11.aspx?R=1&S=2” 后的执行结果

获得参数值

Page 20: 第 5 章 基本对象编程

5.5 Server 对象 Server 对象有以下两个属性:

(1) MachineName (2) ScriptTimeout 表列出了 Server 对象的常用方法。

Server 对象的常用方法

Page 21: 第 5 章 基本对象编程

5.5 Server 对象5.5.1 使用 COM 组件 COM( Component Object Model)是一种对象的格式。

创建 COM组件语法: 对象变量 = Server.CreateObject("ProgId") 对象变量 = Server.CreateObjectStatic("ProgId") 对象变量 = Server.CreateObjectFromClsid("ClsId")【例 5.8 】建立一个可以存取文件的 FileSystemObject 对象,并读取文本文件 TextFIle.txt ,

该文本文件内容为: hello world ! 程序如下:

<SCRIPT Language="VB" Runat="Server"> Sub Page_Load(Sender As Object,e As Eventargs) Dim fsoA As Object Dim Content As String Dim objFile As Object fsoA=Server.CreateObject("Scripting.FileSystemObject") objFile=fsoA.OpenTextFile(Server.MapPath("TextFile.txt"),1,False) If Not objFile.AtEndOfStream Then Content=objFile.ReadAll Content=Replace(Content,Chr(13),"<Br>") Response.Write(Content)

Page 22: 第 5 章 基本对象编程

5.5 Server 对象 End If End Sub </SCRIPT> 上述程序建立一个名为 fsoA 的 FileSystemObject 对象,然后用 fsoA 对象的 Open

TextFile 方法来打开文本文件 TextFile.txt 。5.5.2 HtmlEncode 和 HtmlDecode 方法【例 5.9 】下列程序使用 Server 对象的 HtmlEncode 方法将“ <B>HTML 内容 </B>” 编码后输出至浏 览器,再利用 HtmlDecode 方法将把编码后的结果译码还原: <SCRIPT Language="VB" Runat="Server"> Sub Page_Load(Sender As Object,e As Eventargs)

Dim strHtmlContent As String strHtmlContent=Server.HtmlEncode("<B>HTML 内容 </B>") Response.Write(strHtmlContent) Response.Write("<P>") strHtmlContent=Server.HtmlDecode(strHtmlContent) Response.Write(strHtmlContent) End Sub </SCRIPT> 程序运行结果见右图

Page 23: 第 5 章 基本对象编程

5.5 Server 对象5.5.3 UrlEncode 和 UrlDecode 方法 【例 5.10 】下列程序使用两个 HtmlAnchor 对象来比较编码传递和未编码的结果,传递的参数 内容是“ a# @ #b” 。 <HTML> <A Href="http://localhost/2.aspx?data1=a# @ #b">未编码的参数内容 </A><BR> <A Href=“http://localhost/2.aspx?data1=<%Response.Write(Server.UrlEncode(”a#

@ #b“))%>”> 编码过的参数内容 </A> </HTML> 运行结果如图所示。

可见对 URL 地址中的特殊字符需进行编码才可正确传递。

Page 24: 第 5 章 基本对象编程

5.6 Application 对象 Application 对象的用途是记录整个网站的信息,语法:

Application(" 变量 ") = " 变量内容 "Application(" 对象名 ") = Server.CreateObject(ProgId)表分别列出了 Application 对象的常用属性和方法。

Application 对象的常用属性 Application 对象的常用方法

Page 25: 第 5 章 基本对象编程

5.6 Application 对象5.6.1 存取 Application 对象变量值 语法: 变量 = Application("变量名称 ")

Application(“变量名称” ) = 表达式【例 5.11】向 Application 对象中添加三个变量并赋值,三个变量的值分别为“ Value1” 、“ Value2” 和“ Value3” 。通过循环显示这三个 Application变量的名字和值,显示完以后清除。 <

SCRIPT Language="VB" Runat="Server">Sub Page_Load(Sender As Object,e As Eventargs)

Dim shtI As Short Application.Add("App1","Value1") ' 向 Application 对象中添加三个变量并赋值 Application.Add("App2","Value2") Application.Add("App3","Value3") For shtI=0 To Application.Count-1 ' 显示三个 Application变量名和值 Response.Write("变量名: " & Application.GetKey(shtI) ) Response.Write(" ,变量值: " & Application.Item(shtI) & "<P>") Next Application.Clear() ' 清除 Application 对象变量

End Sub</SCRIPT>

Page 26: 第 5 章 基本对象编程

5.6 Application 对象 上述程序利用 Application 的 Add() 方法,向 Application 对象中添加三个值分别为 "Value1" 、“Value2“ 和” Value3” 的变量。程序运行结果如图所示。

Application 变量的存取5.6.2 锁定 Application 对象 语法:

Application.LockApplication("变量 ") = 表达式Application.UnLock【例 5.12】一个简单计数器程序,在ASP.NET 网页每执行一次, Counter变量值就加 1 ,在累计之前,先锁定 Application对象,让其他人无法使用此对象,待累计完成后再解除所定。

<SCRIPT Language="VB" Runat="Server"> Sub Page_Load(sender as Object, e as Eventargs) Application.Lock() '锁定,不允许其他用户修改变量 Application.Set("Counter", Application("Counter") + 1) ' 访问计数增加 1 Application.UnLock() '开锁,允许其他用户修改变量 myCounter.Text = "您是第 " & Application("Counter") & " 位访客 " End Sub</SCRIPT><HTML><BODY> <Asp:Label Runat="Server" Id="myCounter" /> </BODY></HTML>

Page 27: 第 5 章 基本对象编程

5.6 Application 对象5.6.3 Application 对象的事件Application 对象有以下四个事件:

(1) OnStart 事件:在整个 ASP.Net应用首先被触发的事件,也就是在一个虚拟目录中 第一个 ASP.Net 程序执行时触发。

(2)      OnEnd 事件:在整个应用停止时被触发(通常发生在服务器被重启 /关机时)。(3)    OnBeginRequest 事件:在每一个 ASP.Net 程序被请求时就发生,即客户每访问

一个 ASP.Net 程序时,就触发一次该事件。(4)      OnEndRequest 事件: ASP.NET 程序结束时,触发该事件。以下是一个 Global.asax 文件的示例。

<SCRIPT Language="VB" Runat="Server"> Sub Application_OnStart(sender As Object, e As Eventargs) Application.Add("count",0) End Sub Sub Application_OnEnd(sender As Object, e As Eventargs) Application.RemoveAll() End Sub </SCRIPT>

Page 28: 第 5 章 基本对象编程

5.7 Session 对象 Session 对象的功能和 Application 对象一样,都是用来记录浏览器端的变量 。 S

ession 对象类名称是 HttpSessionState ,它和 Application 对象一样是属于 Page 对象的成员,所以可以直接使用。语法:

Session(" 变量名 ") = 表达式Session(" 对象名称 ") = Server.CreateObject(ProgId)

例如 Session(“name”)=“李明”。表 5.12 Session 对象的常用属性

Page 29: 第 5 章 基本对象编程

5.7 Session 对象表 5.13 Session 对象的常用方法

5.7.1 设定 Session 对象变量的有效期限 要更改 Session 对象的有效期限,只要设定 TimeOut 属性即可; TimeOut 属性的默认值是 20分钟。 【例 5.13】将 Session 对象的 TimeOut 属性设定为 1分钟,在程序中加入 Session1 和 Session2两个变量,它们的值分别为“ Value1” 和“ Value2” 。程序运行时将显示两个变量的值,超过 1分钟 后,点击“显示”按钮,再查看两个变量的值,此时这两个变量的值将消失。

Page 30: 第 5 章 基本对象编程

5.7 Session 对象设计步骤如下:

(1) 创建项目 WebExamp5_13 。(2) 设计界面。(3) 在程序编辑窗口中输入以下 Page_Load() 时间处理程序代码:Sub Page_Load(Sender As Object,e As Eventargs) If Not Page.IsPostBack ThenSession("Session1") = "Value1" '添加一个 Session变量 Session1Session("Session2") = "Value2" '添加另一个 Session变量 Session2Session.Timeout = 1 ' 设置 Session变量有效期为 1分钟Label1.Text = Format(Now(),"HH:MM:SS") ' 设置时间的显示格式Label2.Text = Session("Session1") ' 显示变量 Session1 的值Label3.Text = Session("Session2") End IfEnd Sub双击 Button1 按钮,输入以下 Button1_Click() 事件处理程序代码:Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' 当点击 [ 显示 ] 按钮时会执行此程序Label1.Text = Format(Now(),"hh:mm:ss")Label2.Text = Session("Session1")Label3.Text = Session("Session2")End Sub

Page 31: 第 5 章 基本对象编程

5.7 Session 对象(4) 编译程序。选择主选单的“生成”“生成解决方案”。(5) 运行程序,结果如图所示。

显示 Session 变量值 超时后 Session 变量值消失

5.7.2 Session 对象的事件 与 Application 对象一样, Session 对象也有 OnStart 和 OnEnd 事件。 OnStart 事件在客户第一

次从应用程序中请求 ASP.NET 网页时由 ASP.NET调用, OnEnd 事件在会话关闭时调用。

Page 32: 第 5 章 基本对象编程

5.8 Cookies 对象 Cookies 、 Session 和 Application 对象很类似,也是一种集合对象,都是用来在保存数据 。 表列出对 Application 、 Section 及 Cookies 对象的比较。

Application 、 Section 和 Cookies 对象的比较

5.8.1 Cookies 对象的基本使用 Cookies 对象不属于 Page 对象,所以用法和 Application 及 Session 对象不同。语法:

Response.Cookies(Name As String).Value = 表达式 ' 创建 Cookie变量Response.Cookies.Add(Cookie 对象名 ) '写入 Cookie 对象 变量 = Request.Cookies(Name As String).Value ' 读取 Cookie变量 例如:

Response.Cookies("userName").Value = "mike" Response.Cookies("userName").Expires = DateTime.Now.AddDays(1)

Page 33: 第 5 章 基本对象编程

5.8 Cookies 对象 以上语句创建名为 userName 的 Cookie变量,并将该变量的有效期设置为 1天。再如: ' 创建名为 CookieExmple 的 Cookie 对象

Dim newCookie As HttpCookie = New HttpCookie("CookieExmple")newCookie.Values("Name") = "Zhang Hua" '添加名为 Name 、值为 Zhang Hua 的子键newCookie.Values("Age") = "21" '添加名为 Age 、值为 21 的子键newCookie.Values("Visited") = DateTime.Now.Date() '添加名为 Visited 、值为当前日期的子键newCookie.Expires = DateTime.Now.AddDays(10) ' 设置 Cookie 的有效期Response.Cookies.Add(newCookie) '写入 Cookie 对象 以上语句首先定义一个 HttpCookie类对象 newCookie ,然后设置其各子键的名称和值,

最后将通过 Response 对象将数据写入客户端。表分别列出了 Cookies 对象的常用属性和方法。

表 5.15 Cookies 对象的常用属性

Page 34: 第 5 章 基本对象编程

5.8 Cookies 对象Cookies 对象的常用方法

表列出了 Cookie变量的常用属性。Cookie 变量的常用属性

Page 35: 第 5 章 基本对象编程

5.8 Cookies 对象【例 5.14 】下列程序新增两个 Cookie变量,利用 Cookies集合的 Item 属性和 Get方法传 回 Cookie变量。

<SCRIPT Language="VB" Runat="Server">Sub Page_Load(Sender As Object,e As Eventargs)

Dim i As ShortResponse.Cookies("Cookie1").Value="Microsoft Visual Studio.Net"Response.Cookies("Cookie2").Value="ASP.Net"For i=0 To Request.Cookies.Count-1 Response.Write("变量名称: " & Request.Cookies.Item(i).Name & _ "<BR>变量内容: " & Request.Cookies.Get(i).Value & "<BR>")Next Response.Cookies.Clear()

End Sub </SCRIPT>程序的执行结果如图所示。

Page 36: 第 5 章 基本对象编程

5.8 Cookies 对象5.8.2 自定义 Cookies 对象 除了使用系统预设的 Cookies 对象外,还可以自行定义属于自己的 Cookies 对象。 【例 5.15 】将例 5.14 程序中的 Cookies 改为自定义的 Cookies 对象来操作 Cookie变量。

<SCRIPT Language="VB" Runat="Server">Sub Page_Load(Sender As Object,e As Eventargs)

Dim CookieCollection As HttpCookieCollection=New HttpCookieCollectionDim Cookie1 As HttpCookie=New HttpCookie("Cookie1")Dim Cookie2 As HttpCookie=New HttpCookie("Cookie2")Cookie1.Value="Microsoft VisualStudio .NET"Cookie2.Value="ASP.NET"CookieCollection.Add(Cookie1) ' 将 Cookie 对象加入 Cookies 集合中CookieCollection.Add(Cookie2)Dim i As ShortFor i=0 To CookieCollection.Count-1 Response.Write("变量名称 =" & CookieCollection.Item(I).Name & "<BR>") Response.Write("变量内容 =" & CookieCollection.Get(I).Value & "<P>")NextCookieCollection.Clear()

End Sub</SCRIPT>

Page 37: 第 5 章 基本对象编程

5.8 Cookies 对象 程序运行结果如图所示。 使用自定义 Cookies

5.8.3 设定 Cookie 变量的生命周期 Cookie变量的生命周期起始于浏览器被执行时,终止于浏览器结束执行时。

语法:Response.Cookies(CookieName).Expires=#日期 #例如: Response.Cookies(myCookie).Expires=“#2004/12/31#” ,设置 Cookie变量在 2004年 12

月 31日失效。 若没有指定 Expires 属性,则 Cookie变量将不会被存储。

Page 38: 第 5 章 基本对象编程

5.9 对象应用实例5.9.1 访问计数器

例 5.12 设计的简易计数器实例中采用了 Application 对象,但 Application 对象记录的变量在Web 服务器关机或重新启动时自动消失。程序如下:<%@ Import Namespace="System" %><%@ Import Namespace="System.IO" %><SCRIPT Language="VB" Runat="Server">Sub Page_Load(sender as Object, e as Eventargs)

' 用来访问计数器文件 Dim objReader As New StreamReader(Server.MapPath("Counter.txt")) Dim Counter As Long = objReader.ReadLine() objReader.Close() ' 判断是否为新创建的 Session 对象,是才将 Counter变量加 1 ,并写入文件 If Session.IsNewSession = True Then Counter += 1 Dim objWriter As New StreamWriter(Server.MapPath("Counter.txt"), False) objWriter.WriteLine(Counter) objWriter.Close() End If ' 将数字体计数器转换为图形计数器 Dim i As Byte, ICounter As String For i = 1 To Len(Counter.ToString()) ICounter = ICounter & "<Img Src=digit" & Mid(Counter, i, 1) & ".gif>"

Page 39: 第 5 章 基本对象编程

5.9 对象应用实例 Next MyCounter.Text="您是第 " & ICounter & " 位访客 " LastVisitTime.Text = " 最新一次浏览日期时间: " & System.DateTime.Now() End Sub

</SCRIPT><HTML> <Body BgColor="#FFFCC2">

<P><Img Src="last.jpg"></P> <Asp:Label Runat="Server" Id="MyCounter" /><Br> <Asp:Label Runat="Server" Id="LastVisitTime" /> </BODY></HTML> 程序运行结果如图所示。

Page 40: 第 5 章 基本对象编程

5.9 对象应用实例5.9.2 登录检查 使用 Application 对象和 Session 对象来实现访客登录检查的功能。本示例共有两个文件:Checkin.aspx 和 Checkout.aspx 。 文件 Checkin.aspx 的内容如下:

<SCRIPT Language="VB" Runat="Server">Sub Page_Load(Sender As Object,e As EventArgs)

If len(Application("applicationName"))=0 Then Application("applicationName") = "登录 "Application("pagecount") = 0

End If If not IsPostback Then

Application.LockApplication("pagecount") = Application("pagecount")+1Application.Unlock

End Iflb1.Text = Application("applicationName") & "<BR> 请输入你的姓名 <BR>"lb1count.Text = "<BR> 该网页已被访问过 " & Application("pagecount") & " 次 <BR>"Session.timeout = 20

End Sub Sub Btn_Click(Sender As Object,e As EventArgs)

Session("visitorsName") = visitname.text Response.Redirect("./checkout.aspx")

Page 41: 第 5 章 基本对象编程

5.9 对象应用实例End Sub </SCRIPT><HTML><Title><%Response.write(Application("applicationName"))%></Title><FORM Runat="Server"><ASP:Llabel Id="lb1" Runat="Server"/><Asp:TextBox Id="visitname" Runat="Server" /><ASP:Button Id="btOK" Text="登录 " type=submit OnClick="Btn_Click" Runat="Server"/><ASP:Label id="lb1count" Runat="server"/></FORM></HTML>文件 Checkout.aspx 的内容如下:<SCRIPT Language="VB" Runat="Server">Sub Page_Load(Sender As Object,e As EventArgs)If Len(session("visitorsName"))=0 Then lb1message.text = "你不能登录 " & "<a href=""./checkin.aspx"">重新登录 </a>"

BtOk.Visible = False Else lb1message.Text = "你的姓名 :" & Session("visitorsName") & "<BR>" lb1message.Text = lb1message.Text & "SessionID : " & Session.sessionID lb1message.Text = lb1message.Text & "<BR>Session Timeout:" & Session.timeout & "分钟 <BR>" End If lb1.Text = Application("applicationname")

End Sub Sub Btn_Click(Sender As Object,e As EventArgs)

Session.abandon

Page 42: 第 5 章 基本对象编程

5.9 对象应用实例End Sub </SCRIPT><HTML><Form Runat="Server"><ASP:Label Id="lb1" Runat="Server"/><ASP:Label Id="lb1message" Runat="Server" Text=" 请输入你的姓名 "/><ASP:Button Id="BtOK" Text="检查 " type=submit OnClick="Btn_Click" Runat="Server"/><Asp:Label Id="lb1count" Runat="Server"/></Form></HTML>程序的运行结果分别如图 5.18 和 5.19 所示。 首次登录 登录成功

Page 43: 第 5 章 基本对象编程

5.10 本章小结 ASP.NET 对象是程序设计中最频繁使用的元素之一,它向用户提供基本的请求、响应、会话等处理功能。 ASP.NET预定义的对象主要有: Request 对象、 R

esponse 对象、 Server 对象、 Session 对象和 Application 对象。其中前三个对象是最常用的。 Request 对象通过 HTTP 请求可以得到客户端的信息, Request 对象控制发送给客户端的信息,而 Server 对象提供了服务器端的基本属性与方法。 通过本章的学习,读者应熟练掌握和运用各种 ASP.NET 对象进行基本的程序设计。习题 1.    ASP.NET 有哪些常用的内置对象? 2.      ASP.NET 网页中事件触发次序是什么样的? 3.       Request 和 Response 对象的主要用途是什么? 4.   Application 、 Session 和 Cookie 都可以用来记录客户的信息,它们有什 么区别? 5.    试述 Global.asax 文件的作用及其所在的位置。 6.    用 Session实现密码验证,要求首先建立一个登录页面,实现强制登 录检查。