aspnet七大内置对象.docx
《aspnet七大内置对象.docx》由会员分享,可在线阅读,更多相关《aspnet七大内置对象.docx(22页珍藏版)》请在冰豆网上搜索。
aspnet七大内置对象
aspnet七大内置对象
一、Response对象
Response对象是HttpResponse类的一个实例。
该类主要是封装来自ASP.NET操作的HTTP响应信息。
1、Response对象的属性
属 性
说 明
属 性 值
BufferOutput
获取或设置一个值,该值指示是否缓冲输出,并在完成处理整个页之后将其发送
如果缓冲了到客户端的输出,则为true;否则为false。
默认为true
续表
属 性
说 明
属 性 值
Cache
获取Web页的缓存策略(过期时间、保密性、变化子句)
包含有关当前响应的缓存策略信息的HttpCachePolicy对象
Charset
获取或设置输出流的HTTP字符集
输出流的HTTP字符集
IsClientConnected
获取一个值,通过该值指示客户端是否仍连接在服务器上
如果客户端当前仍在连接,则为true;否则为false
实例:
使用缓冲区
由于Response对象的BufferOutput属性默认为True,所以要输出到客户端的数据都暂时存储在缓冲区内,等到所有的事件程序,以及所有的页面对象全部解译完毕后,才将所有在缓冲区中的数据送到客户端的浏览器。
下面的例子将演示缓冲区是如何工作的。
<%
Response.Write("缓存已清除"+"
");
%>
voidPage_Load(Objectsender,EventArgse)
{
Response.Write("缓存清除前"+"
");
Response.Clear();
}
上述程序代码实例首先在“Page_Load”事件中送出“缓存清除前”这一行,此时的数据存在缓冲区中。
接着使用Response对象的Clear方法将缓冲区的数据清除,所以刚刚送出的字符串已经被清除。
然后IIS开始读取HTML组件的部分,并将结果送至客户端的浏览器。
由执行结果只出现“缓存已清除”可知,使用Clear方法之前的数据并没有出现在浏览器上,所以程序开始时是存在缓冲区内的。
如果在相同的程序中加入“Response.BufferOutput=false”:
<%
Response.Write("清除之后的数据
");
%>
voidPage_Load(Objectsender,EventArgse)
{
Response.BufferOutput=false;
Response.Write("清除缓冲区之前的数据"+"
");
Response.Clear();
}
可以发现,执行的结果并没有因为使用Clear方法而将缓冲区的数据清除,这表明数据是直接输出而没有存放在缓冲区内。
2、Response对象的方法
Response对象可以输出信息到客户端,包括直接发送信息给浏览器、重定向浏览器到另一个URL或设置cookie的值。
下表列举了几个常用的方法。
Response对象的方法
方 法
说 明
Write
将指定的字符串或表达式的结果写到当前的HTTP输出
End
停止页面的执行并得到相应结果
Clear
用来在不将缓存中的内容输出的前提下,清空当前页的缓存,仅当使用了缓存输出时,才可以利用Clear方法
Flush
将缓存中的内容立即显示出来。
该方法有一点和Clear方法一样,它在脚本前面没有将Buffer属性设置为True时会出错。
和End方法不同的是,该方法调用后,该页面可继续执行
Redirect
使浏览器立即重定向到程序指定的URL
ASP.NET中引用对象方法的语法是“对象名.方法名”。
“方法”就是嵌入到对象定义中的程序代码,它定义对象怎样去处理信息。
使用嵌入的方法,对象便知道如何去执行任务,而不用提供额外的指令。
以下将通过几个小例子来讲解Response对象的常用方法。
Response对象的方法
方 法
说 明
Write
将指定的字符串或表达式的结果写到当前的HTTP输出
End
停止页面的执行并得到相应结果
Clear
用来在不将缓存中的内容输出的前提下,清空当前页的缓存,仅当使用了缓存输出时,才可以利用Clear方法
Flush
将缓存中的内容立即显示出来。
该方法有一点和Clear方法一样,它在脚本前面没有将Buffer属性设置为True时会出错。
和End方法不同的是,该方法调用后,该页面可继续执行
Redirect
使浏览器立即重定向到程序指定的URL
ASP.NET中引用对象方法的语法是“对象名.方法名”。
“方法”就是嵌入到对象定义中的程序代码,它定义对象怎样去处理信息。
使用嵌入的方法,对象便知道如何去执行任务,而不用提供额外的指令。
以下将通过几个小例子来讲解Response对象的常用方法。
实例:
使用Response.write,向客户端发送信息
for(inti=1;i<=500;i++)
{
Response.Write("i="+i+"
");
}
本例使用“write”方法,向屏幕输出500个值。
实例:
使用Response.End方法调试程序
End方法可以停止当前页面的执行,基于这个原因,可以结合Response.write方法输出当前页面上的某个变量、数组值。
输入一个数值:
TextBoxid="txtVar"runat="server">
TextBox>
Buttonid="btnSubmit"runat="server"Text="计算该值的平方值"onclick="btnSubmit_Click">
Button>
voidbtnSubmit_Click(Objectsender,EventArgse)
{
intN=int.Parse(Request.Form["txtVar"].ToString());
Response.Write("N="+N+"
");
Response.Write("该值的平方值是:
"+N*N);
}
运行上面的代码,结果如图所示。
使用Response.End调试程序
输入一个值“6”,然后单击“计算该值的平方值”按钮,屏幕将显示如下结果:
N=6
该值的平方值是:
36
在代码中加上“Response.End()”,代码如下:
voidbtnSubmit_Click(Objectsender,EventArgse)
{
intN=int.Parse(Request.Form["txtVar"].ToString());
Response.Write("N="+N+"
");
Response.End();
Response.Write("该值的平方值是:
"+N*N);
}
这时再运行代码,将只会显示:
N=6
实验证明,“Response.End()”方法停止了当前页面的执行。
这仅仅是一个小例子,读者可以依此类推,在程序中使用End方法进行调试。
不过千万要记住调试完代码后,不要忘记把调试用的“Response.End()”删掉。
实例:
使用Redirect方法进行页面重定向
在网页编程中,经常会遇到在程序执行到某个位置进行页面调转的情况。
Response.Redirect方法可以满足这种需求,例如代码:
Response.Redirect("错误!
超链接引用无效。
);
执行该代码,页面将跳转到网易163的主页。
二、Request对象
Request对象是HttpRequest类的一个实例。
它能够读取客户端在Web请求期间发送的HTTP值。
Request对象的属性
Request对象的属性如表14-3所示。
表14-3Request对象的属性
属 性
说 明
属 性 值
QueryString
获取 HTTP 查询字符串变量集合
NameValueCollection对象
Path
获取当前请求的虚拟路径
当前请求的虚拟路径
UserHostAddress
获取远程客户端的 IP 主机地址
远程客户端的IP地址
Browser
获取有关正在请求的客户端的浏览器功能的信息
HttpBrowserCapabilities对象
实例14-5:
获取QueryString值
程序中,经常可以使用QueryString来获得从上一个页面传递来的字符串参数。
例如,在页面1中创建一个连接,指向页面2,并用QueryString来查询两个变量:
ID=6&Name=Wang">查看
在页面2中接收到从页面1中传过来的两个变量:
voidPage_Load(objectsender,System.EventArgse)
{
Response.Write("变量ID的值:
"+Request.QueryString["ID"]+"
");
Response.Write("变量Name的值:
"+Request.QueryString["Name"]);
}
运行上面代码结果如下:
变量ID的值:
6
变量Name的值:
Wang
上面的例子可以成功地得到QueryString的值。
用类似方法,可以获取Form,Cookies,SeverVaiables的值。
调用方法都是:
Request.Collectlon[”VariabLe”]
Collectlon包括QueryString,ForM,Cookies,SeverVaiables四种集合,VariabLe为要查询的关键字。
不过,这里的Collectlon是可以省略的,也就是说,Request["Variable"]与Request.Collection["Variable"]这两种写法都是允许的。
如果省略了Collection,那么Request对象会依照QueryString,Form,Cookies,SeverVaiables的顺序查找,直至发现Variable所指的关键字并返回其值,如果没有发现其值,方法则返回空值(Null)。
不过,为了优化程序的执行效率,建议最好还是使用Collection,因为过多地搜索就会降低程序的执行效率。
2.Request对象的方法
Request对象的方法如表14-4所示。
表14-4Request对象的方法
方 法
说 明
BinaryRead
执行对当前输入流进行指定字节数的二进制读取
MapPath
为当前请求将请求的 URL 中的虚拟路径映射到服务器上的物理路径
实例14-6:
获取文件的物理路径
Request.MapPath("FileName");
可以通过这条语句来得到某个文件的实际物理位置,这个方法常常用在需要使用实际路径的地方。
三、Application对象
Application对象是HttpApplicationState类的一个实例。
HttpApplicationState类的单个实例,将在客户端第一次从某个特定的ASP.NET应用程序虚拟目录中请求任何URL资源时创建。
对于Web服务器上的每个ASP.NET应用程序,都要创建一个单独的实例。
然后通过内部Application对象公开对每个实例的引用。
Application对象有如下特点:
—数据可以在Application对象内部共享,因此一个Application对象可以覆盖多个用户。
—一个Application对象包含事件,可以触发某些Applicatin对象脚本。
—个别Application对象可以用InternetServiceManager来设置而获得不同属性。
—单独的Application对象可以隔离出来在它们自己的内存中运行,这就是说,如果一个人的Application遭到破坏,就不会影响其他人。
—可以停止一个Application对象(将其所有组件从内存中驱除)而不会影响到其他应用程序。
一个网站可以有不止一个Application对象。
典型情况下,可以针对个别任务的一些文件创建个别的Application对象。
例如,可以建立一个Application对象来适用于全部公用用户,而再创建另外一个只适用于网络管理员的Application对象。
Application对象使给定应用程序的所有用户之间共享信息,并且在服务器运行期间持久地保存数据。
因为多个用户可以共享一个Application对象,所以必须要有Lock和Unlock方法,以确保多个用户无法同时改变某一属性。
Application对象成员的生命周期止于关闭IIS或使用Clear方法清除。
1.Application对象的属性
Application对象的属性如表14-5所示。
表14-5Application对象的属性
属 性
说 明
属 性 值
AllKeys
获取HttpApplicationState集合中的访问键
HttpApplicationState对象名的字符串数组
Count
获取HttpApplicationState集合中的对象数
集合中的Item对象数。
默认为0
2.Application对象的方法
Application对象的方法如表14-6所示。
表14-6Application对象的方法
方 法
说 明
Add
新增一个新的Application对象变量
Clear
清除全部的Application对象变量
Get
使用索引关键字或变数名称得到变量值
GetKey
使用索引关键字來获取变量名称
Lock
锁定全部的Application变量
Remove
使用变量名称删除一个Application对象
RemoveAll
删除全部的Application对象变量
Set
使用变量名更新一个Application对象变量的內容
UnLock
解除锁定的Application变量
使用Application对象的语法如下所示:
Application("变量名")="变量值"
实例14-7:
设置、获取Application对象的内容
代码如下:
voidPage_Load(objectsender,System.EventArgse)
{
Application.Add("App1","Value1");
Application.Add("App2","Value2");
Application.Add("App3","Value3");
intN;
for(N=0;N{
Response.Write("变量名:
"+Application.GetKey(N));
Response.Write("变量值:
"+Application.Get(N)+"
");
}
Application.Clear();
}
在本例中,首先通过Add方法添加三个Application对象,并赋以初值,接着通过Count属性得到Application对象的数量,然后通过循环操作GetKey方法和Get方法分别得到新增对象的“索引”和“索引”所对应的“值”。
执行上面代码,得到如下结果:
变量名:
App1变量值:
Value1
变量名:
App2变量值:
Value2
变量名:
App3变量值:
Value3
实例14-8:
Application对象的加锁与解锁
Lock方法可以阻止其他客户修改存储在Application对象中的变量,以确保在同一时刻仅有一个客户可修改和存取Application变量。
如果用户没有明确调用Unlock方法,则服务器将在页面文件结束或超时即可解除对Application对象的锁定。
Unlock方法可以使其他客户端在使用Lock方法锁住Application对象后,修改存储在该对象中的变量。
如果未显式地调用该方法,Web服务器将在页面文件结束或超时后解锁Application对象。
使用方法如下:
Application.Lock();
Application["变量名"]="变量值";
Application.UnLock();
四、Session对象
Session对象是HttpSessionState的一个实例。
该类为当前用户会话提供信息,还提供对可用于存储信息的会话范围的缓存的访问,以及控制如何管理会话的方法。
Session的发明是填补HTTP协议的局限,HTTP协议工作过程是,用户发出请求,服务器端做出响应,这种用户端和服务器端之间的联系都是离散的,非连续的。
在HTTP协议中没有什么能够允许服务器端来跟踪用户请求的。
在服务器端完成响应用户的请求后,服务器端不能持续与该浏览器保持连接。
从网站的观点上看,每一个新的请求都是单独存在的,因此,当用户在多个主页间转换时,就根本无法知道他的身份。
可以使用Session对象存储特定用户会话所需的信息。
这样,当用户在应用程序的Web页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。
当用户请求来自应用程序的Web页时,如果该用户还没有会话,则Web服务器将自动创建一个Session对象。
当会话过期或被放弃后,服务器将中止该会话。
当用户第一次请求给定的应用程序中的aspx文件时,ASP.NET将生成一个SessionID。
SessionID是由一个复杂算法生成的号码,它唯一标识每个用户会话。
在新会话开始时,服务器将SessionID作为一个cookie存储在用户的Web浏览器中。
在将SessionIDcookie存储于用户的浏览器之后,即使用户请求了另一个.aspx文件,或请求了运行在另一个应用程序中的.aspx文件,ASP.NET仍会重用该cookie跟踪会话。
与此相似,如果用户故意放弃会话或让会话超时,然后再请求另一个.aspx文件,那么ASP.NET将以同一个cookie开始新的会话。
只有当服务器管理员重新启动服务器,或用户重新启动Web浏览器时,此时存储在内存中的SessionID设置才被清除,用户将会获得新的SessionIDcookie。
通过重用SessionIDcookie,Web应用程序将发送给用户浏览器的cookie数量降为最低。
另外,如果用户决定该Web应用程序不需要会话管理,就可以不让Web应用程序跟踪会话和向用户发送SessionID。
Session对象最常见的一个用法就是存储用户的首选项。
例如,如果用户指明不喜欢查看图形,另外其还经常被用在鉴别客户身份的程序中。
要注意的是,会话状态仅在支持cookie的浏览器中保留,如果客户关闭了cookies选项,Session也就不能发挥作用了。
ASP.NET的Sessions非常好用,能够利用Session对象来对Session全面控制,如果需要在一个用户的Session中存储信息,只需要简单地直接调用Session对象就可以了,下面就是个例子:
Session("Myname")=Response.form("Username");
Session("Mycompany")=Response.form("Usercompany");
应注意的是,Session对象是与特定用户相联系的。
针对某一个用户赋值的Session对象是和其他用户的Session对象完全独立的,不会相互影响。
换句话说,这里面针对每一个用户保存的信息是每一个用户自己独享的,不会产生共享情况。
很明显,对于不同的用户,Session对象的Myname变量和Mycompany变量各自是不同的,当每个人在网站的不同主页间浏览时,这种针对个人的变量会一直保留,这样作为身份认证是十分有效的。
1.Session对象的属性
Session对象的属性如表14-7所示。
表14-7Session对象的属性
属 性
说 明
属 性 值
Count
获取会话状态集合中Session对象的个数
Session对象的个数
TimeOut
获取并设置在会话状态提供程序终止会话之前各请求之间所允许的超时期限
超时期限(以分钟为单位)
SessionID
获取用于标识会话的唯一会话ID
会话ID
实例14-9:
获取Session对象的个数
Count属性可以帮助统计正在使用的Session对象的个数,语句非常简单,示例如下:
Response.Write(Session.Count);
实例14-10:
设置Session对象的生存期
每一个客户端连接服务器后,服务器端都要建立一个独立的Session,并且需要分配额外的资源来管理这个Session,但如果客户端因某些原因,例如,去忙其他的工作,停止了任何操作,但没有关闭浏览器,那么这种情况下,服务器端依然会消耗一定的资源来管理Session,这就造成了对服务器资源的浪费,降低了服务器的效率。
所以,可以通过设置Session生存期,以减少这种对服务器资源的浪费。
要更改Session的有效期限,只要设定TimeOut属性即可;TimeOut属性的默认值是20分钟。
ButtonId="Button1"Text="演示"OnClick="Button1_Click"Runat="Server"/>
目前时间:
LabelId="Label1"Runat="Server"/>
第一个Session的值:
LabelId="Label2"Runat="Server"/>
第二个Session的值:
LabelId="Label3"Runat="Server"/>