主 讲 教 师:陆有军 E-Mail地址:tjlyj@mail.tongji.edu.cn Web技术与应用 第四章 内部对象 主 讲 教 师:陆有军 E-Mail地址:tjlyj@mail.tongji.edu.cn
本 章 内 容 内部对象概述 Page对象 Request对象 Response对象 HttpCookie对象 Session对象 Application对象 Server对象 Mail对象 2019/1/1 内部对象
本章内容 4 之 1 内部对象 对象其实就是可以重用的代码片断,类是对象的定义,对象是类的实例。对象一般有属性、方法、事件。ASP.NET能够利用成千上万的内置对象。本质上前面讲的内置函数、Web控件也都可以看作内置对象,都是类实现的。 2019/1/1 内部对象
本章内容 4 之 2 内部对象和其它部分的关系 内部函数 服务器控件 内部对象 .NET类库 2019/1/1 内部对象
访问对象 访问对象属性的语法格式 对象名.属性名 访问对象方法的语法格式 对象名.方法名(参数表) 对象事件处理的定义语法格式 本章内容 4 之 3 访问对象 访问对象属性的语法格式 对象名.属性名 访问对象方法的语法格式 对象名.方法名(参数表) 对象事件处理的定义语法格式 对象名_事件名(参数表) 或 事件名(参数表) ASP.NET事件的处理过程都有以下2个参数:sender As Object(表示发生该事件的源对象)和e As EventArgs(表示传递给事件处理过程的额外描述,作为辅助之用)。 2019/1/1 内部对象
常用内置对象 对 象 功 能 Page 页面对象,用于整个页面的操作 Request 从客户端获取信息 Response 向客户端输出信息 本章内容 4 之 4 常用内置对象 对 象 功 能 Page 页面对象,用于整个页面的操作 Request 从客户端获取信息 Response 向客户端输出信息 HttpCookie 用于保存Cookie Session 存储特定用户的信息 Application 存储同一个应用程序中所有用户间的共享信息 Server 创建COM组件和进行有关设置 Mail 在线发送E-mail 2019/1/1 内部对象
Page对象 Page对象由System.Web.UI.Page类实现,命名空间System.Web.UI 。 属性 方法 事件 本章内容 2 之 1 Page对象 Page对象由System.Web.UI.Page类实现,命名空间System.Web.UI 。 属性 IsPostBack(是否被提交) IsValid(是否通过验证) 方法 DataBind(数据绑定) 事件 Load (页面装载) 2019/1/1 内部对象
本章内容 2 之 2 例: IsPostBack 4-1.aspx 运行结果 2019/1/1 内部对象
Request对象 Request对象由System.Web.HttpRequest类实现 ,命名空间: System.Web。 本章内容 11 之 1 Request对象 Request对象由System.Web.HttpRequest类实现 ,命名空间: System.Web。 数据集合(获取方法) QueryString、ServerVariables、ClientCertificate、Form、Cookies、Browser 属性 TotalBytes(取得客户端数据的字节大小) 方法 BinaryRead(以二进制方式读取客户端上传的数据) 2019/1/1 内部对象
本章内容 11 之 2 QueryString数据集合 QueryString可以获取标识在URL后面的所有返回的变量及其值。例如,当客户端送出如下的请求时,QueryString将会得到name与age两个变量的值。 http://……/temp.aspx?name=白芸&age=22 提示:后面可有多个变量参数,参数之间用&连接。 2019/1/1 内部对象
本章内容 11 之 3 例:准备传送信息 4-2.aspx 运行结果 2019/1/1 内部对象
本章内容 11 之 4 例:显示得到的信息 4-3.aspx 运行结果 2019/1/1 内部对象
Request.ServerVariables("环境变量名称") 本章内容 11 之 5 ServerVariables数据集合 功能 利用Request对象的ServerVariables数据集合可以方便地取得服务器端或客户端的环境变量信息,比如客户端的IP地址等等。 语法 Request.ServerVariables("环境变量名称") 2019/1/1 内部对象
本章内容 11 之 6 常用的环境变量 2019/1/1 内部对象
本章内容 11 之 7 例:显示来访者IP地址 4-4.aspx 运行结果 2019/1/1 内部对象
ClientCertificate数据集合 本章内容 11 之 8 ClientCertificate数据集合 如果客户端浏览器支持SSL3.0或PCT1协议,可以利用ClientCertificate数据集合取回客户端浏览器的身份验证信息。语法如下: Request.ClientCertificate(关键字) 如果客户端浏览器未送出身份验证信息,或服务器端也未设置向客户端浏览器要求身份验证的命令,那么将返回空值。如果有,将返回相应的身份验证信息。 2019/1/1 内部对象
Request.Browser ("浏览器特性名称") 本章内容 11 之 9 Browser数据集合 功能 利用Request对象的Browser数据集合就可以方便地获取客户端浏览器特性,如类型、版本、是否支持背景音乐等。 语法 Request.Browser ("浏览器特性名称") 2019/1/1 内部对象
本章内容 11 之 10 常用的浏览器特性 2019/1/1 内部对象
本章内容 11 之 11 例:输出客户端浏览器的一些特性 4-5.aspx 运行结果 2019/1/1 内部对象
本章内容 8 之 1 Response对象 Response对象用于控制输出给客户端的信息,由System.Web.HttpResponse类实现 ,命名空间: System.Web。 属性 Buffer(设置为缓冲信息) ContentType(控制送出的文件类型) 方法 Write、Redirect、BinaryWrite、End、Clear、Flush 2019/1/1 内部对象
Response.Write(变量数据或字符串) 本章内容 8 之 2 Write方法 利用该方法就可以在客户端输出信息,效果和利用Label控件一样。语法: Response.Write(变量数据或字符串) 例子 Response.Write(user_name &“您好”) 'user_name是一个变量,表示用户名 Response.Write("现在是: " & now() ) 'now()是时间函数 Response.Write("业精于勤而荒于嬉<p>") '输出字符串 2019/1/1 内部对象
本章内容 8 之 3 例:使用write方法输出信息 4-6.aspx 运行结果 2019/1/1 内部对象
Write方法的其它方式 利用该方法还可以直接在HTML代码中动态输出信息,此时需要将语句用<%和%>括起来,例如: 本章内容 8 之 4 Write方法的其它方式 利用该方法还可以直接在HTML代码中动态输出信息,此时需要将语句用<%和%>括起来,例如: <h4 align="center">Write方法示例</h4> <% Response.Write("您好,欢迎光临") Response.Write("<p>敬请提出宝贵意见") %> 此时,它还有一种省略方式,例如: <%="您好,欢迎光临"%> <%="<p>敬请提出宝贵意见"%> 2019/1/1 内部对象
Response.Redirect(网址变量或字符串) 本章内容 8 之 5 Redirect方法 功能 使用Redirect方法就可以自动引导客户至另一个页面。语法如下: Response.Redirect(网址变量或字符串) 例子 Response.Redirect("http://www.edu.cn") Response.Redirect("other.asp") theURL="http://www.pku.edu.cn" Response.Redirect(theURL) 2019/1/1 内部对象
本章内容 8 之 6 例:重定向至另一个页面 4-7.aspx 运行结果 2019/1/1 内部对象
本章内容 8 之 7 例:使用End方法终止程序 Test4_1.aspx 运行结果 2019/1/1 内部对象
Response.BinaryWrite(变量或字符串) 本章内容 8 之 8 BinaryWrite方法 BinaryWrite方法用于输出二进制信息,它不进行任何字符转换,直接输出。其语法为: Response.BinaryWrite(变量或字符串) 有时侯可能在数据库里保存了二进制信息,就可以用该方法输出了。例如:从数据库中显示图片的信息就要用到该方法。 2019/1/1 内部对象
本章内容 5 之 1 HttpCookie对象 很多网站能够记住客户端的访问次数。要记住访问次数可以采取多种方法,其中利用Cookie是一种可以在客户端保存信息的方法。ASP.NET提供了HttpCookie对象来处理Cookie,System.Web.HttpCookie类可是实现该对象。 2019/1/1 内部对象
什么是Cookie? Cookie俗称甜饼,可以在客户端长期保存信息。它是服务器端发送到客户端浏览器的文本串句柄,保存在客户的硬盘上。 本章内容 5 之 2 什么是Cookie? Cookie俗称甜饼,可以在客户端长期保存信息。它是服务器端发送到客户端浏览器的文本串句柄,保存在客户的硬盘上。 HttpCookie对象其实是:利用Response对象的Cookies方法设置Cookies;利用Request对象的Cookies获取方法来获取Cookies的值。 2019/1/1 内部对象
使用Response对象设置Cookie 本章内容 5 之 3 使用Response对象设置Cookie 语法 Response.Cookies(“CookiesName”)[(关键字) | .属性]=字符串 例子 设置不含关键字的Cookie Response.Cookies("user_name").Value="高航" 设置含关键字的Cookie Response.Cookies("user")("name")="高航" Response.Cookies("user ")("age")=22 设置Cookie的有效期 Response.Cookies("user_name").Expires=#1/1/2008# 2019/1/1 内部对象
使用Request对象读取Cookie 语法 例子 Request.Cookies(“CookiesName”)[(关键字) | .属性] 本章内容 5 之 4 使用Request对象读取Cookie 语法 Request.Cookies(“CookiesName”)[(关键字) | .属性] 例子 省略关键字的用法 user_name=Request.Cookies("user_name").Value 有关键字的用法 user_name=Request.Cookies("user")("name") age=Request.Cookies("user")("age") 判断Cookies关键字数目 result=Request.Cookies("CookiesName").Haskeys 2019/1/1 内部对象
本章内容 5 之 5 Cookie综合示例 4-8.aspx 运行结果 2019/1/1 内部对象
本章内容 9 之 1 Session对象 Session对象用来记载特定用户的信息,即使客户从一个页面跳转到另一个页面,该Session信息仍然存在,客户在该网站的任何一个页面都可以存取Session信息。需注意的是: Session信息是对一个客户的,不同客户的信息用不同的Session对象记载。 2019/1/1 内部对象
Session对象 Session对象由System.Web.SessionState类实现,命名空间System.Web。 属性 方法 本章内容 9 之 2 Session对象 Session对象由System.Web.SessionState类实现,命名空间System.Web。 属性 SessionID(存储用户的Session ID) TimeOut(Session的有效期时长) 方法 Abandon(清除Session对象) 事件 Session_OnStart Session_OnEnd 2019/1/1 内部对象
利用Session对象存储信息 写入Session信息 读取Session信息 语法 本章内容 9 之 3 利用Session对象存储信息 写入Session信息 语法 Session(“Session名字”)=变量/常量/字符串/表达式 例子 Session(“user_name”)=hisname Session(“age”)=23 Session(“school”)=“北京大学” 读取Session信息 语法:Session(“Session名字”) 2019/1/1 内部对象
本章内容 9 之 4 例:存入Session信息 4-9.aspx 运行结果 2019/1/1 内部对象
本章内容 9 之 5 例:读取Session信息 4-10.aspx 运行结果 2019/1/1 内部对象
本章内容 9 之 6 例:存储人名信息到数组 4-11.aspx 运行结果 2019/1/1 内部对象
本章内容 9 之 7 例:读取Session数组信息 4-12.aspx 运行结果 2019/1/1 内部对象
Timeout属性 Session对象的有效期 本章内容 9 之 8 Timeout属性 Session对象的有效期 Session对象有它的有效期,默认为20分钟。客户端每新打开一个浏览器窗口,就会创建一个Session对象,如果超出20分钟没有和服务器端交互或者关闭了浏览器,则该Session对象就会自动结束。 修改有效期语法 Session.Timeout =整数(分钟) 例如:Session.Timeout =90 2019/1/1 内部对象
Abandon方法 Session对象到期后会自动清除,但到期前可以用Abandon方法强行清除。 语法 Session.Abandon 本章内容 9 之 9 Abandon方法 Session对象到期后会自动清除,但到期前可以用Abandon方法强行清除。 语法 Session.Abandon 例子 Session("user_name")= "萌萌" Response.Write(Session("user_name")) 说明 先将前两句复制到一个文件中执行,然后再将第3句复制到另一个ASP.NET文件中执行。 2019/1/1 内部对象
本章内容 8 之 1 Application对象 Application对象的用途是记录整个网站的信息,他可以使在同一个应用内的多个用户共享信息,并在服务器运行期间持久地保存数据。 Application对象变量的生命周期起始于Web服务器开始执行时,终止于Web服务器关机或重新启动。 利用Application特性,可以创建聊天室和网站计数器等常用网页应用程序。 2019/1/1 内部对象
Application对象 由System.Web.HttpApplication类实现 ,用于保存所有客户的公共信息。 方法 事件 本章内容 8 之 2 Application对象 由System.Web.HttpApplication类实现 ,用于保存所有客户的公共信息。 方法 Lock Unlock 事件 Application _OnStart Application _OnEnd 2019/1/1 内部对象
利用Application存储信息 语法 Application("Application名字")=表达式 例如 本章内容 8 之 3 利用Application存储信息 语法 Application("Application名字")=表达式 例如 Application.Lock Application("user_num")=user_num Application (“city”)=“南京” Application.Unlock 2019/1/1 内部对象
例1:简单的聊天室 共分3个文件:4-13.aspx框架页文件(省略)、4-14.aspx保存发言信息、4-15.aspx 读取发言信息。 本章内容 8 之 4 例1:简单的聊天室 共分3个文件:4-13.aspx框架页文件(省略)、4-14.aspx保存发言信息、4-15.aspx 读取发言信息。 2019/1/1 内部对象
本章内容 8 之 5 例1:保存发言信息 4-14.aspx 2019/1/1 内部对象
本章内容 8 之 6 例1:读取发言信息 4-15.aspx 2019/1/1 内部对象
例2:访问计数器 <Script Language="VB" Runat="Server"> 本章内容 8 之 7 例2:访问计数器 <Script Language="VB" Runat="Server"> Sub Page_Load(Sender As Object, e As EventArgs) Application.Lock() Application ("cnt“)=Application("cnt")+1 Application.UnLock() Counter.Text = "您是第" & Application("cnt") & "位来访者" End Sub </script> <html> <body><font face="隶书" size=10> <asp:Label Runat="Server" id="Counter" /> </font></body></html> 2019/1/1 内部对象
利用Application存储数组信息 存储 Dim usern(2) As String usern(0)= "白芸" 本章内容 8 之 8 利用Application存储数组信息 存储 Dim usern(2) As String usern(0)= "白芸" usern(1)= "海霞" Application.Lock Application("arry_user")=usern Application.Unlock 读取 Dim usern () As String usern= Application("arry_user") message.text=usern(0) & "您好<p>" & usern(1) & "您好" 2019/1/1 内部对象
本章内容 12 之 1 Server对象 Server对象由System.Web.HttpServerUtility类实现,命名空间为System.Web。Server对象是专为处理服务器上的特定任务而设计的,特别是与服务器的环境和处理活动有关的任务。 属性 ScriptTimeout 方法 Execute、Transfer HtmlEncode、UrlEncode CreatObject 2019/1/1 内部对象
Server.ScriptTimeout=300 本章内容 12 之 2 ScriptTimeout属性 作用 该属性用来规定脚本文件执行的最长时间,默认为90秒。主要是用来防止某些可能进入死循环的错误导致服务器过载问题。 语法 Server.ScriptTimeout=300 2019/1/1 内部对象
Server.CreateObject(ActiveX Server组件) 本章内容 12 之 3 CreateObject方法 作用 该方法可以用于创建组件、应用对象或脚本对象的实例。 语法 Server.CreateObject(ActiveX Server组件) 2019/1/1 内部对象
Server.HTMLEncode(变量或字符串) 本章内容 12 之 4 HTMLEncode方法 作用 用于转化字符串,可以将字符串中的HTML标签字符转换成字符实体。该方法在需要输出HTML语句时非常有用。 语法 Server.HTMLEncode(变量或字符串) 2019/1/1 内部对象
本章内容 12 之 5 例:显示HTML语句 4-16.aspx 运行结果 2019/1/1 内部对象
Server.URLEncode(字符串) 本章内容 12 之 6 URLEncode方法 作用 该方法用来转化字符串为URL编码,它可以将空格转化成相应的URL编码“+”。 语法 Server.URLEncode(字符串) 例子 Server.URLEncode(“a b”) ,结果:a+b 2019/1/1 内部对象
Server.MapPath(虚拟路径字符串) 本章内容 12 之 7 MapPath方法 作用 在程序中给出的文件路径通常使用的是虚拟路径,即相对于虚拟根目录的路径。例如若虚拟目录VirDir对应的实际路径为“G:\ASPNETPROG\”,则虚拟文件路径“/Ex5-17.aspx”对应的实际路径为“G:\ASPNETPROG\Ex5-17.aspx”。有些应用需访问服务器的文件、文件夹或数据库文件,此时就需将虚拟文件路径转换为实际文件路径。使用该方法可实现这种路径转换。 语法 Server.MapPath(虚拟路径字符串) 2019/1/1 内部对象
本章内容 12 之 8 例:显示文件的物理路径 4-17.aspx 运行结果 2019/1/1 内部对象
Server.Execute(变量或字符串) 本章内容 12 之 9 Execute方法 作用 该方法用来停止执行当前网页,转到新的网页执行,执行完毕后返回原网页,继续执行Execute方法后面的语句。 语法 Server.Execute(变量或字符串) 2019/1/1 内部对象
Execute方法和Redirect方法 本章内容 12 之 10 Execute方法和Redirect方法 Redirect语句尽管是在服务器端运行,但重定向实际发生在客户端,而Execute方法的重定向实际发生在服务器端。 Redirect语句执行完新网页后并不返回原网页,而Execute方法却返回原页面,继续执行下面语句。 Redirect语句并不能把一些环境变量传递过去,而Execute方法却可以。 Redirect方法可转向一个网页和其他网站,而Execute方法只能转到同一应用程序的其他文件。 2019/1/1 内部对象
本章内容 12 之 11 例:重定向到新的文件 4-18.aspx 4-19.aspx 运行结果 2019/1/1 内部对象
Server.Transfer(变量或字符串) 本章内容 12 之 12 Transfer方法 作用 该方法和Execute方法非常相似,惟一的区别是执行完新的网页后,并不返回原网页,而是停止执行过程。 语法 Server.Transfer(变量或字符串) 2019/1/1 内部对象
本章内容 5 之 1 Mail对象 Mail对象可以在线发送E-mail。Mail对象由System.Web.Mail类库实现,它其实是由MailMessage、MailAttachment、SmtpMail三个类组成的 。 MailMessage类用来设置E-mail的内容,如发信人地址、收信人地址等。 MailAttachment类用来添加附件 。 SmtpMail类用来发送信件 。 2019/1/1 内部对象
例:最简单的发送E-mail 最简单的发送方式 本章内容 5 之 2 例:最简单的发送E-mail 最简单的发送方式 Sub Page_Load(Sender As Object, E As EventArgs) SmtpMail.Send("wanghong@263.net","lu@171.net","您好","祝一切顺利") End Sub 说明 此时使用本机的发信服务器,要求在IIS中启动SMTP服务。 2019/1/1 内部对象
本章内容 5 之 3 例:发送E-mail示例1 4-20.aspx 2019/1/1 内部对象
本章内容 5 之 4 例:发送E-mail示例2 表单部分 2019/1/1 内部对象
本章内容 5 之 5 例:发送E-mail示例2 发送部分 4-21.aspx 运行结果 2019/1/1 内部对象
上机作业 P137 上机练习题 (4)、(7) 2019/1/1 内部对象