第5章 内置对象OK.docx
《第5章 内置对象OK.docx》由会员分享,可在线阅读,更多相关《第5章 内置对象OK.docx(15页珍藏版)》请在冰豆网上搜索。
第5章内置对象OK
第5章
使用已有资源——ASP.NET的内置对象
ASP.NET内置了几个常用对象,这些对象使用户更容易收集通过浏览器发送的请求信息、响应浏览器信息以及用户储存的信息。
以实现特定的状态管理和信息传递。
本章要点(已掌握的在方框中打勾)
Response对象
Request对象
Server对象
Application对象
Session对象
Cookie对象
5.1使用已有资源——ASP.NET的内置对象
本节视频教学录像:
31分钟
ASP.NET已经为我们提供了很多的内置资源,合理地使用这些资源可以提高开发的效率。
ASP.NET的基本对象主要包括Application、Session、Cookie等,它们都能存储应用程序的数据。
Request和Response这两个对象是ASP所提供的内置对象中最常用的两个。
在浏览器和Web服务器之间,请求与响应中发生的信息交流可以通过ASP中的这两个内置对象进行访问和管理。
5.1.1Response对象
ASP.NET的早期版本ASP中就包含有Page、Response、Request等对象。
而在ASP.NET中,这些对象仍然存在,使用的方法也大致相同,不同的是这些对象改由.NETFramework中封装好的类来实现。
并且由于这些对象是在ASP.NET页面初始化请求时自动创建的,所以能在程序中的任何地方直接调用,而无需对类进行实例化操作。
Response对象常用的属性如表所示。
属性
功能
Cookies
响应Cookies集合
IsClientConnected
一个布尔类型的变量,作用是指出客户是否仍然与服务器连接
Output
能够把文本输出给客户
OutputStream
能够把二进制数据输出给客户
Flush
这个方法把当前高速缓存的所有数据输出给客户
Redirect
这个方法把客户导向新的URL
Write
把文本写到响应输出中
WriteFile
把文件直接写到响应输出流中
Buffer
缓冲区
【范例5-1】使用Response对象的相关属性和方法。
➊在VisualStudio2010中,新建名为“Response”的ASP.NET网站。
添加一个名为ResponseTest.aspx的页面并设置为起始页。
➋切换到ResponseTest.aspx页面的设计视图,添加一个按钮Button1,修改按钮的Text属性为“新浪”。
双击ResponseTest.aspx页面或者按F7键,打开ResponseTest.aspx.cs页面,在Page_Load()事件中输入以下代码。
Response.Write("现在时间是:
"+DateTime.Now);
➍添加Button1_Click()事件,输入以下代码。
Response.Redirect("");
【运行结果】
按【Ctrl+F5】组合键或是单击工具栏中的
按钮,在浏览器中会输出如图所示的结果。
点击“新浪”按钮,即可导向新浪的网站。
【范例分析】
Response对象实际是在执行System.Web命名空间中的HttpResponse类。
CLR会根据用户的请求信息建立一个Response对象。
Response.Write()实现向客户端输出信息;Response.Redirect()实现定向到其它URL;Response.BinaryWrite()方法实现以二进制的方式输入。
5.1.2Request对象
Request对象的功能是从客户端得到数据。
Request对象常用的属性及方法如表所示。
属性和方法
功能
Browser属性
获取有关正在请求的客户端的浏览器功能的信息
Cookies属性
获取客户端发送的Cookies的集合
Files属性
获取客户端上传的文件的集合
Form属性
获取表单变量的集合
QueryString属性
获取HTTP查询字符串变量集合
ServerVariables属性
获取Web服务器变量的集合
UserHostAddress属性
获取远程客户端的主机IP地址
SaveAs方法
将HTTP请求保存到磁盘
【范例5-2】使用Request对象的Browser属性获取客户端信息。
➊在VisualStudio2010中,新建名为“RequestBrowser”的ASP.NET网站,添加一个名为getBrowser.aspx的页面。
➋双击getBrowser.aspx页面,打开getBrowser.aspx.cs页面,在Page_Load()事件中输入以下代码(代码2-4.txt)。
01protectedvoidPage_Load(objectsender,EventArgse)
02{
03Response.Write("你使用的操作系统是:
"+Request.Browser.Platform+"
");
04Response.Write("是否支持HTML框架:
"+Request.Browser.Frames+"
");
05Response.Write("浏览器的版本是:
"+Request.Browser.Version+"
");
06}
【运行结果】
按【Ctrl+F5】组合键或是单击工具栏中的
按钮,在浏览器中会输出如图所示的结果。
5.1.3Server对象
Server对象提供对服务器上访问的方法和属性,大多数方法和属性是作为实用程序的功能提供的。
Server对象常用的属性及方法如表所示。
属性和方法
功能
MachineName属性
获取服务器的计算机名称
ScriptTimeout属性
获取和设置文件最长执行时间(以秒计)
CreatObject方法
创建COM对象的一个服务器实例
Execute方法
使用另一页执行当前请求
HtmlEncode方法
对要在浏览器中显示的字符串进行编码
HemlDecode方法
对已被编码已清除无效HTML字符的字符串进行解码
UrlEncode方法
对指定字符串以URL格式进行编码
UrlDecode方法
对URL格式字符串进行解码
MapPath方法
将虚拟路径转换为物理路径
Transfer方法
终止当前页面的执行,并开始执行新的请求页
其中的ScriptTimeout属性用来设置脚本最长执行时间,默认时间为90秒。
用户可以自己设置脚本最长执行时间:
Server.ScriptTimeout=150;
【范例5-3】使用Server对象的MapPath方法获取当前文件路径。
➊在VisualStudio2010中,新建名为“ServerMapPath”的ASP.NET网站,添加名为ServerTest.aspx的页面。
➋在ServerTest.aspx.cs页面的Page_Load()事件输入以下代码:
Response.Write("当前文件所在的物理路径为:
"+Server.MapPath("."));
【运行结果】
按【Ctrl+F5】组合键或是单击工具栏中的
按钮,在浏览器中会输出如图所示的结果。
【范例分析】
本范例使用了Server对象的MapPath方法在页面加载时读取当前文件的位置,即Page_Load()事件中的Server.MapPath(".")。
5.1.4Application对象
Application对象提供对所有会话的应用程序范围的方法和事件的访问,还提供对可用于存储信息的应用程序范围的缓存的访问。
应用程序状态是可供ASP.NET应用程序中的所有类使用的数据储存库。
它存储在服务器的内存中,因此与在数据库中存储和检索信息相比,它的执行速度更快。
与特定于单个用户会话的会话状态不同,应用程序状态应用于所有的用户和会话。
因此,应用程序状态非常适合存储那些数量少、不随用户的变化而变化的常用数据。
Application的关键特性有:
存储于服务器内存中,与用户无关即多用户共享,在应用程序的整个生存期中存在即不会被主动丢弃,不被序列化,不发生服务器——客户端的数据传输。
Application对象的使用格式如下。
Application[“变量”]=“变量内容”;
Application对象的属性如表所示。
属性
功能
AllKeys
获取HttpApplicationState集合中的访问键
Count
获取HttpApplicationState集合中的对象数
Item
获取HttpApplicationState集合中的对象的访问
StaticObject
获取由
续表
属性
功能
Content
获取对HttpApplicationState对象的引用
Add
将新的对象添加到HttpApplication集合中
Clear
从HttpApplicationState集合中移除所有对象
Get
通过名称或索引获取HttpApplicationState对象
GetKey
通过索引获取HttpApplicationState对象名
Lock
锁定对HttpApplicationState变量的访问以促进访问同步
Remove
从HttpApplicationState集合中移除命名对象
Set
更新HttpApplicationState集合中的对象值
UnLock
取消锁定对HttpApplicationState变量的访问以促进访问同步
Application对象的事件如表所示。
事件
功能说明
OnStart
在整个ASP.NET应用首先被触发的事件,也就是在一个虚拟目录中第1个ASP.NET程序执行时触发
OnEnd
在整个应用停止时被触发(通常发生在服务器被重启/关机时)
OnBeginRequest
在每一个ASP.NET程序被请求时就发生,即客户每访问一个ASP.NET程序时就触发一次该事件
OnEndRequest
ASP.NET程序结束时触发该事件
【范例5-4】使用Application对象存取变量内容。
➊在VisualStudio2010中,新建名为“Application”的ASP.NET网站,添加名为AppTest.aspx的页面并设置为起始页。
➋在AppTest.aspx页面上添加一个标签控件Label1。
➌在AppTest.aspx.cs页面的代码窗口的Page_Load事件中输入以下代码(代码2-5.txt)。
1protectedvoidPage_Load(objectsender,EventArgse)
2{
3Application.Lock();
4Application["usercount"]=(Convert.ToInt32(Application["usercount"])+1).ToString();
5Application.UnLock();
6Label1.Text="您是第"+Application["usercount"].ToString()+"位访客";
7}
【运行结果】
单击工具栏中的
按钮,运行结果如图所示,该列可以实现对在线人数的访