380 likes | 555 Views
第四章 ASP.NET 对象应用. ASP.NET 使用了内嵌的具有继承性的对象,它们均有自身的预定义功能和属性、方法和事件,构成了 ASP 发展的基础。. 本章将讲解对象的功能和应用: Request 对象的属性和方法。 Response 对象的属性和方法以及 Response 对象的使用方法。 Server 对象的属性和方法以及方法之间的区别。 Application 对象的属性和方法以及对象的用法和锁定。. 4.1 Request 对象. Request 对象主要是使服务器端取得客户端浏览器的一些数据。
E N D
ASP.NET使用了内嵌的具有继承性的对象,它们均有自身的预定义功能和属性、方法和事件,构成了ASP发展的基础。 • 本章将讲解对象的功能和应用: • Request对象的属性和方法。 • Response对象的属性和方法以及Response对象的使用方法。 • Server对象的属性和方法以及方法之间的区别。 • Application对象的属性和方法以及对象的用法和锁定。
4.1 Request对象 • Request对象主要是使服务器端取得客户端浏览器的一些数据。 • Request对象的属性和方法相当多,详见教材表4-1和表4-2。
4.1.1属性和方法 • Request对象的获取数据的常用方法有: Request.Form Request.QueryString Request • Form表单的有两种提交方式: Post方式 Get方式 Request对象的属性和方法相当多,详见教材表4-1和表4-2。
4.1.2读取对象或参数的值 例ch04_01: <Html> <A Href=“ch04_02.aspx?data1=222">将资料传到另一个网页中</A> </Html> 例ch04_02 <Html> <%Response.Write(Request("data1"))%> </Html> • Request对象的基本用法就是读取对象或是参数的内容。 • 这里使用它的Href属性来完成参数的传递。 单击网页传递内容
4.1.3取得客户端浏览器的信息 例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> • 如果想取得目前和服务器联机的浏览器的信息,使用Browser属性。 • Browser属性是集合对象,使用HttpBrowserCapabilities类型的对象变量来接收Browser属性的返回值。 详见例程ch04_02
4.2 Response对象 • Response对象主要是输出数据到客户端,Response对象类别全称为HttpResponse,和Request对象一样是属于Page对象的成员,所以也是不用声明便可以直接使用。 • 4.2.1属性和方法 • Response对象的主要功能是向浏览器输出信息。 • 常用的方法包括Response.Write()、Response.End()和Response.WriteFile()等。 • 详见教材表4.3和表4.4
4.2.2缓冲区的使用 • 由于Response对象的BufferOutput属性默认为True,所以要输出到客户端的数据暂时都存储在缓冲区内,等到所有的事件程序以及所有的页面对象全部解释完毕,才将所有在缓冲区中的数据送到客户端的浏览器。 • 下面比较例程ch04_04和例程ch04_05。 例程ch04_04 例程ch04_05
4.2.3地址的重新导向 • Response对象的Redirect方法可以将连接重新导向到其他地址,使用时只要传入一个字符串类型的地址即可,传入在网址后附加参数的地址字符串也可以。 • 范例ch04_06中,使用了TextBox Web控件让用户输入一个地址,然后链接到新的页面,运行结果如图。 单击确定,链接到新的页面 例程ch04_06
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>
4.2.5 查看用户的联机状态 • 若用户停止浏览的动作,IIS还是继续执行,则会浪费系统的有限资源。 • 因此,判断Response对象的IsClientConnected属性。若为False则代表用户已经离线,此时只要使用Response对象的End方法来结束网页的执行即可。 • 这样Server就不会执行无用的工作,可以空出更多的资源来让他人使用。
例ch04_09: • <Html> • <Script Language="VB" Runat="Server"> • Sub Page_Load(Sender As Object, e As Eventargs) • Dim i As Long • For i=0 To 100000 • If Response.IsClientConnected=False Then Response.End • Next • Response.Write("执行完毕") • End Sub • </Script> • </Html>
4.3 Server对象 • Server对象也是Page对象的成员之一,主要提供一些处理网页请求时所需的功能。 • 4.3.1属性和方法 • 通过Server对象可以访问服务器的方法和属性,比如得到服务器上某文件的物理路径和设置某文件的执行期限等。 • 详见教材表4-5和表4-6。
4.3.2使用COM组件 • COM是一种对象的格式。凡是依照COM的规格所制作出来的组件,皆可以提供功能让其他程序或组件使用。要使用COM组件,可以使用Server对象的CreateObiect、CreateObjectFromClsid和CreateObjectStatic这3种方法。 • 例如:CreateObjectStatic方法的语法如下所示。 对象变量=Server.CreateObject("ProgId") 对象变量=Server.CreateObjectStatic("ProgId") 对象变量=Server.CreateObjectFromClsid("ClsId")
范例ch04_09建立一个可以存取文件的FileSystemObject对象,并读取一个文本文件,文本文件内容为“使用文件系统对象来读取存在于磁盘上的文件标记,需将换行字符改成HTML的断行字符”。范例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 if End Sub
4.3.3 HtmIEncode与HtmIDecode • 如果想在网页上显示HTML标注,若在网页中直接输出则会被浏览器解释为HTML的内容,所以要透过Server对象的HtmlEncode方法将它编码再输出,而若要将编码后的结果译码回原本的内容,则使用HtmlDecode方法。 例程ch04_11的运行结果:
例程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>
4.3.4 UrIEncode与UrIDecode • 在传递网页参数时是将数据附在网址后面传递,但是遇到一些如#、&的特殊字符会读不到这些字符之后的参数。所以在需要传递特殊字符时,只要先将欲传递的内容先以UrlEncode加以编码,就可以保证所传递过去的值可以被顺利读到,而UrlDecode方法则是将编码过的内容译码还原。
例ch04_13:使用两个HtmlAnchor控件来比较编码传递和未编码的结果,传递的参数内容是"a#@#b" 。 例ch04_13: <Html> <A Href="http://127.0.0.1/CR/CH09/EX02.aspx?datal=a# @ #b">未编码的参数内容 </A><br> <A Href="http://127.0.0.1/CR/CH09/EX02.aspx?data1=<%Response.Write(Server.UrlEncode ("a# @ #b"))%>" > 编码过的参数内容 </A> </Html> 例ch04_13的运行效果 a. 单击【未编码的参数内容】 b. 单击【编码过的参数内容】
4.4 Application对象 • Application对象是共有的对象,所有的用户都可以对某个特定的Application对象进行修改。 • Application对象的类别全称是HttpApplication, • 每个Application对象变量都是Application对象集合中的对象之一,由Application对象统一管理。
4.4.1属性和方法 • 严格地说,Application对象没有自己的属性,用户可以根据自己的需要定义属性,以便保存一些共有的信息。但有些定义的属性是共有的属性。 • 教材表4-7列出了Application对象的常用属性。 • 教材表4-8则列出了Application对象的常用方法。
4.4.2 Application对象的用法 • 使用Annlication对象变量的语法如下。 Application("变量")="变量内容“ • Application对象变量的内容也可以是COM组件,产生的语法如下。 Application("对象名称")=Server.Creatobject(ProgId)
例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>
4.5 Session对象 • 使用Session对象可存储特定的用户会话所需的信息。当用户在应用程序的页面之间跳转时,存储在Session对象中的变量不会清除。当网页用户关掉浏览器或超过设置Session变量对象的有效时间时,Session对象变量就会消失。Session对象的类别全称是HttpSessionState,也属于Page对象的成员,所以可以直接使用。
4.5.1属性和方法 • 使用Session对象时首先应该了解对象的属性和方法一,如果了解了Session对象,就会知道Session对象的方法Abandon()显式地结束一个会话,可利用属性Timeout设置Session的失效时间。 • Session对象的常用属性详见教材表4-9。
4.5.2 Session对象的应用 • Session对象的语法如下: Session("变量名")="内容“ • Session也可以存放COM组件,其语法如下: Session("名称")= Server. CreateObject(ProgId ) • Session对象变量最常用来存放用户的状态。
下例代码中用户必须成功通过登录网页2.aspx的验证,才可以浏览aspx网页,否则就会提示验证失败。其验证的程序从会员数据表中判断用户所填入的名称及密码是否正确。下例代码中用户必须成功通过登录网页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(); ' open End Sub Sub 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=Nothing End Sub Sub btnReset Click(Sender As Object,e As Eventargs) txtid.Text = "" txtpassword.Text="" End Sub
4.5.3 Session对象的有效期限 • 当用户超过一段时间没有动作时,就可以将Session释放。 • 要更改Session对象的有效期限,只要设置TimeOut属性即可。 • TimeOut属性的默认值是20分钟。
例ch04_15.aspx中将Session对象的TimeOut属性设置为1分钟。例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>
4.6 Cookies对象 • Cookies, Session和Application对象类似,也是一种集合对象,都用来保存数据。 • 但Cookies和其他对象的最大不同是Cookies将数据存放在客户端的磁盘上, • 而Application以Session对象将数据存放在Server端。
4.6.1 Cookies对象的属性和方法 • Cookies对象也可以保存客户信息,而使用Response:Cookies.Add可以将信息发送并保存到客户端的浏览器。 • Cookies对象常用的属性详见教材表4-11 • Cookies对象的常用方法表详见教材4-12
Cookies对象不隶属于Page对象,所以用法和Application及Session对象不同。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
例ch04_16:新增两个Cookies变量,并利用For---Next循环分别利用Cookies集合的Item属性以及Get方法将Cookies变量返回例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>
4.6.2 CookieCollection及Cookies对象 • 除了使用系统默认的Cookies对象外,也可以自行定义属于自己的Cookies对象。 示例ch04_17的运行结果:
例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>
4.6.3 Cookies变量的生命周期 • 系统默认给Cookies变量的有效时间是10000分钟,不过可以在程序中自行设置有效日期。 • 方法是指定Cookies变量的Expires属性。 • 语法如下: Response.Cookies(CookieName).Expires=#日期# 详见范例ch04_18
4.6.4 Cookies验证 • 在使用Cookie验证用户时,必须考虑到身份验证的问题。因为用户可能在非私人的计算机上浏览,或是个人计算机的安全防护不完善,导致其他人可能使用同一个浏览器,这样一来任何人都可以顺利通过Cookie的验证。对于有主要机密的数据或是有价交易的处理,势必造成漏洞;设计这方面的网站时,要小心仔细考虑Cookies的应用。
本章小结 • 本章主要介绍了常用对象:Request、Response、Session、Server及Cookies等。 • 应熟练对象的属性和方法,弄清楚每个对象的用法及工作原理。 • 读者在运行本章的范例程序时,首先要设置好运行环境,同时也要注意版本规范的差别,请读者按自己的运行环境修改程序。