ASP中常用的内置对象
(1)简述ASP.NET内置对象。
答:ASP.NET提供了内置对象有Page、Request、Response、Application、Session、Server、Mail和Cookies。这些对象使用户更容易收集通过浏览器请求发送的信息、响应浏览器以及存储用户信息,以实现其他特定的状态管理和页面信息的传递。
(2)简述Response对象。
答:Response对象用来访问所创建的并客户端的响应,输出信息到客户端,它提供了标识服务器和性能的HTTP变量,发送给浏览器的信息和在cookie中存储的信息。它也提供了一系列用于创建输出页面的方法,如无所不在的Response . Write方法。
(3)简述Request对象。
答:Request对象是用来获取客户端在请求一个页面或传送一个Form时提供的所有信息,这包括能够标识浏览器和用户的HTTP变量,存储在客户端的cookie信息以及附在URL 后面的值(查询字符串或页面中< Form>段中的HTML控件内的值)。
(4)简述Application对象。
答:在https://www.360docs.net/doc/b8996031.html,环境下,Application对象来自HttpApplictionStat类。它可以在多个请求、连接之间共享公用信息,也可以在各个请求连接之间充当信息传递的管道。使用Application对象来保存我们希望传递的变量。由于在整个应用程序生存周期中,Application 对象都是有效的,所以在不同的页面中都可以对它进行存取,就像使用全局变量一样方便。
(5)简述Session对象。
答:Session对象就是服务器给客户端的一个编号。当一台WEB服务器运行时,可能有若干个用户浏览正在浏览这台服务器上的网站。当每个用户首次与这台WWW服务器建立连接时,他就与这个服务器建立了一个Session,同时服务器会自动为其分配一个SessionID,用以标识这个用户的唯一身份。特别说明的是Session对象的变量只是对一个用户有效,不同的用户的会话信息用不同的Session对象的变量存储。在网络环境下Session对象的变量是有生命周期的,如果在规定的时间没有对Session对象的变量刷新,系统会终止这些变量。
(6)简述Server对象。
答:Server对象提供对服务器上的方法和属性的访问。其中大多数方法和属性是作为实用程序的功能服务的。Server对象也是Page对象的成员之一,主要提供一些处理页面请求时所需的功能;例如建立COM对象、将字符串的编译码等工作。
(7)简述Cookie对象。
答:cookie是一小块由浏览器存贮在客户端系统上(硬盘)的文本,是一种标记。由WEB服务器嵌入用户浏览器中,以便标识用户,且随同每次用户请求发往WEB服务器。Cookies 的值比A S https://www.360docs.net/doc/b8996031.html,其他集合(例如Form和Server Variables )的值要复杂得多。
(8)简述Mail对象。
答:https://www.360docs.net/doc/b8996031.html,被赋予了一个发送Email的新对象,名为SmtpMail,实际上Mail对象由System.Web.Mail类库实现(Class Library)。这个类库由MailMessage对象、Sm tpMail 对象、MailFormat对象和MailAttachm ent对象组成,它们相互合作,完成E-m ail的发送。
(9)简述GET传送方式。
*********************
https://www.360docs.net/doc/b8996031.html,中常用的内置对象(一)
https://www.360docs.net/doc/b8996031.html,中常用的内置对象及功能说明如下所示:
对象名功能说明
Page用于操作整个页面
Response用于向浏览器输出信息
Request用于获取来自浏览器的信息
Server 提供服务器端的一些属性和方法
Application 用于共享多个会话和请求之间的全局信息
Session 用于存储特定用户的会话信息
Cookies 用于设置或获取Cookie信息
一..Page对象
Page对象是由System.Web.UI命名空间中的Page类来实现的,Page 类与扩展名为.aspx 的文件相关联,这些文件在运行时被编译为Page对象,并缓存在服务器内存中。Page对象提供的常用属性、方法及事件如下所示:
名称功能说明
IsPostBack属性获取一个值,该值表示该页是否正为响应客户端回发而加载
IsValid属性获取一个值,该值表示页面是否通过验证Application属性为当前 Web 请求获取Application 对象。Request属性获取请求的页的HttpRequest 对象Response属性获取与 Page 关联的HttpResponse 对象。该对象使您得以将HTTP 响应数据发送到客户端,并包含有关该响应的信息。Session属性获取https://www.360docs.net/doc/b8996031.html, 提供的当前Session 对象。Server属性获取Server 对象,它是HttpServerUtility 类的实例。
DataBind方法将数据源绑定到被调用的服务器控件及其所有子控件
RegisterClientScriptBlock方法向页面发出客户端脚本块
Init事件当服务器控件初始化时发生
Load事件当服务器控件加载到Page对象中时发生
Unload事件当服务器控件从内存中卸载时发生
1.IsPostBack属性
IsPostBack属性用来获取一个布尔值,如果该值为true,则表示当前页是为响应客户端回发(例如单击按钮)而加载,否则表示当前页是首次加载和访问。private void Page_Load(object sender, System.EventArgs e)
{
if( !Page.IsPostBack )
{
Label1.Text = "页面第一次加载!";
}
else
{
Label1.Text = "页面第二次或第二次以上加载!";
}
}
IsValid属性
IsValid属性用来获取一个布尔值,该值指示页验证是否成功,如果页验证成功,则为true;否则为false。一般在包含有验证服务器控件的页面中使用,只有在所有验证服务器控件都验证成功时,IsValid属性的值才为true。
private void Button_Click(Object Sender, EventArgs e) {
if (Page.IsValid == true) //也可写成if (Page.IsValid)
{
mylabel.Text="您输入的信息通过验证!";
}
else
{
mylabel.Text="您的输入有误,请检查后重新输入!";
}
}
二.Request对象
Request对象是由类System.Web.HttpRequest来实现的。当客户请求ASP. NET页面时,所有的请求信息,包括请求报头、请求方法、客户端基本信息等都被封装在Request对象中,利用Request对象就可以读取这些请求信息。R equest对象常用的属性和方法如下所示。
名称功能说明
Cookies属性获取客户端发送的Cookie的集合
Form属性获取表单变量的集合
QueryString属性获取HTTP查询字符串变量集合
Form表单数据提交到服务器的方式有两种:Get和Post方式。
i. . get是把参数数据队列加到提交表单的ACTION属性所指的URL中,值和表单内各个字段一一对应,在URL中可以看到。post是通过HTTP post机制,将表单内各个字段与其内容放置在HTML HEADER内一起传送到ACTION属性所指的URL地址。用户看不到这个过程。
ii. . 对于get方式,服务器端用Request.QueryString获取变量的值,对于p ost方式,服务器端用Request.Form获取提交的数据。
iii. get传送的数据量较小,不能大于2KB。post传送的数据量较大,一般被默认为不受限制。但理论上,IIS4中最大量为80KB,IIS5中为100KB。iv. get安全性非常低,post安全性较高。
Form数据集合
使用Request的Form集合来获取客户端通过POST方法传送的表单数据,例如,服务器上有两个网页form.htm和do.aspx,form.htm中包含一个表单,表单传送数据的方法为POST,并且表单提交到同一目录下的do.aspx。form. htm的代码如下:
在do.aspx中将使用Request.Form["mingzi"]来获取用户输入的名字,do. aspx的代码如下:
private void Page_Load(Object o,EventArgs e)
//页面加载后即显示表单数据
{
string strmessage="您的名字为:"; //定义字符串变量并赋初值
strmessage+= Request.Form["mingzi"]; //把表单数据串接到变量
Response.Write(strmessage);//输出变量
}
QueryString数据集合
可以利用QueryString集合来获取客户端通过GET方法传送的表单数据,如果把form.htm中表单的method属性值由POST改为GET,则在do.aspx中就需要通过Request.QueryString ["mingzi"]来获取输入的名字。因为GET 方法传送数据有一定的限制并且不安全,所以表单一般不使用GET方法。private void Page_Load(object sender, System.EventArgs e)
{
if(Request.QueryString["mingzi"].ToString()!="")
Response.Write("您的名字是:"+Request.QueryString["mingzi"].To String());
}
在Web应用程序开发中,QueryString常用来获取URL查询字符串中变量的值,这与使用GET方法传送表单数据的情况一样。例如,客户端使用如下地址请求:http://localhost/doit.aspx?name=zhangsan&sex=nan
或打开如下的超级链接:
在doit.aspx中就可以使用Request.QueryString["name"]和Request.Qu eryString["sex"]来获取相应的值zhangsan和nan。
******************************
本想写一篇总结https://www.360docs.net/doc/b8996031.html,内置对象的文章,结果发现网上有篇不错的,就转了过来
https://www.360docs.net/doc/b8996031.html,的内置对象介绍
1.Response
2.Request
3.Server
4.Application
5.Session
6.Cooki
Request对象主要是让服务器取得客户端浏览器的一些数据,包括从HTML表单用Post或者GET方法传递的参数、Cookie和用户认证。因为Request对象是Page对象的成员之一,所以在程序中不需要做任何的声明即可直接使用;
其类名为HttpRequest
属性很多,但方法很少,只有一个BinaryRead()
1.使用Request.Form属性获取数据
通过该属性,读取
之间的表单数据.注意:提交方式要设置为“Post”。与Get方法相比较,使用Post方法可以将大量数据发送到服务器端
2.利用Request.QueryString属性获取数据
Request对象的QuerySting属性可以获取HTTP 查询字符串变量集合。通过该属性,我们可以读取地址信息http://localhost/aaa.aspx?uid=tom&pwd=abc其中标识为红色部分的数据.
注意:提交方式要设置为“Get”
3.问题:Request.Form用于表单提交方式为Post的情况,而Request.QueryString用于表单提交方式为Get的情况,如果用错,则获取不到数据。
解决方法:利用Request(“元素名”)来简化操作。
4.Request.ServerVariables("环境变量名称")
类似的还有:UserHostAddress,Browser,Cookies,ContentType,IsAuthenticated Item,Params
Response对象用语输出数据到客户端,包括向浏览器输出数据、重定向浏览器到另一个URL 或向浏览器输出Cookie文件。
其类名为httpResponse
属性和方法
Write() 向客户端发送字符串信息
BufferOutPut属性是否使用缓存
Clear() 清除缓存
Flush() 强制输出缓存的所有数据
Redirect() 网页转向地址
End() 终止当前页的运行
WriteFile() 读取一个文件,并且写入客户端输出流
(实质:打开文件,并且输出到客户端。)
1.Response.Write 变量数据或字符串
Response.Write (变量数据或字符串)
<%=…%>
Response.Write("")
Response.Write("")
2.Response对象的Redirect方法将客户端浏览器重定向到另外的URL上,即跳转到另一个网页。
例如:
Response.Redirect("https://www.360docs.net/doc/b8996031.html,/")
3. Response.End() 终止当前页的运行
4.Response.WriteFile(FileName)
其中:
FileName 指代需向浏览器输出的文件的文件名
Server对象提供对服务器上的方法和属性进行的访问 .其类名称是HttpServerUtility. Server对象的主要属性有:
MachineName:获取服务器的计算机名称。
ScriptTim eout:获取和设置请求超时(以秒计)。
方法名称说明
CreateObject 创建COM 对象的一个服务器实例。
Execute 执行当前服务器上的另一个aspx页,执行完该页后再返回本页继续执行
Ht mlEncode 对要在浏览器中显示的字符串进行HTML编码并返回已编码的字符串。
Ht mlDecode 对HTML编码的字符串进行解码,并返回已解码的字符串。
MapPath 返回与Web 服务器上的指定虚拟路径相对应的物理文件路径。
Transfer 终止当前页的执行,并为当前请求开始执行新页。
UrlEncode 将代表URL的字符串进行编码,以便通过URL 从Web 服务器到客户端进行可靠的HTTP 传输。
UrlDecode 对已被编码的URL字符串进行解码,并返回已解码的字符串。UrlPathEncode 对URL 字符串的路径部分进行URL 编码,并返回已编码的字符串。
编码:
Server.Ht mlEncode(“HTML代码”)
解码:
Serve r.Ht mlDecode(“已编码的HTML”)
1.Server对象的MapPath方法将虚拟路径或相对于当前页的相对路径转化为Web 服务器上的物理文件路径。
语法:Server.MapPath(“虚拟路径”)
String FilePath
FilePath = Server.MapPath(“/”)
Response.Write(FilePath)
Application对象在实际网络开发中的用途就是记录整个网络的信息,如上线人数、在线名单、意见调查和网上选举等。在给定的应用程序的多有用户之间共享信息,并在服务器运行期间持久的保存数据。而且Application对象还有控制访问应用层数据的方法和可用于在应用程序启动和停止时触发过程的事件。
1.使用Application对象保存信息
使用Application对象保存信息
Application(“键名”) =值
或
Application(“键名”,值)
获取Application对象信息
变量名= Application(“键名”)
或:变量名= Application.Item(“键名”)
或:变量名= A pplication.Get(“键名”)
更新Application对象的值
Application.Set(“键名”, 值)
删除一个键
Application.Remove(“键名”, 值)
删除所有键
Application.RemoveAll()
或Application.Clear()
2.有可能存在多个用户同时存取同一个Application对象的情况。这样就有可能出现多个用户修改同一个Application命名对象,造成数据不一致的问题。
HttpApplicationState 类提供两种方法Lock 和Unlock,以解决对Application对象的访问同步问题,一次只允许一个线程访问应用程序状态变量。
关于锁定与解锁
锁定:Application.Lock()
访问:Application(“键名”) =值
解锁:Application.Unlock()
注意:Lock方法和UnLock方法应该成对使用。
可用于网站访问人数,聊天室等设备
3. 使用Application事件
在https://www.360docs.net/doc/b8996031.html, 应用程序中可以包含一个特殊的可选文件——Global.asax 文件,也称作https://www.360docs.net/doc/b8996031.html, 应用程序文件,它包含用于响应https://www.360docs.net/doc/b8996031.html,或HTTP模块引发的应用程序级别事件的代码。
Global.asax 文件提供了7个事件,其中5个应用于Application对象
事件名称说明
Application_Start 在应用程序启动时激发
Application_BeginRequest 在每个请求开始时激发
Application_AuthenticateRequest 尝试对使用者进行身份验证时激发
Application_Error 在发生错误时激发
Application_End 在应用程序结束时激发
Session即会话,是指一个用户在一段时间内对某一个站点的一次访问。
Session对象在.NET中对应HttpSessionState类,表示“会话状态”,可以保存与当前用户会话相关的信息。
Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息。用户在应用程序的页面切换时,Session对象的变量不会被清除。对于一个Web应用程序而言,所有用户访问到的Application对象的内容是完全一样的;而不同用户会话访问到的Session对象的内容则各不相同。Session可以保存变量,该变量只能供一个用户使用,也就是说,每一个网页浏览者都有自己的Session对象变量,即Session对象具有唯一性。
(1)将新的项添加到会话状态中
语法格式为:
Session ("键名") =值
或者
Session.Add( "键名" , 值)
(2)按名称获取会话状态中的值
语法格式为:
变量= Session ("键名")
或者
变量= Session.Item("键名")
(3)删除会话状态集合中的项
语法格式为:
Session.Remove("键名")
(4)清除会话状态中的所有值
语法格式为:
Session.RemoveAll()
或者
Session.Clear()
(5)取消当前会话
语法格式为:
Session.Abandon()
(6)设置会话状态的超时期限,以分钟为单位。
语法格式为:
Session.TimeOut =数值
Global.asax 文件中有2个事件应用于Session对象
事件名称说明
Session_Start 在会话启动时激发
Session_End 在会话结束时激发
Cookie就是Web服务器保存在用户硬盘上的一段文本。Cookie允许一个Web站点在用户的电脑上保存信息并且随后再取回它。信息的片断以…键/值?对的形式存储。
Cookie是保存在客户机硬盘上的一个文本文件,可以存储有关特定客户端、会话或应用程序的信息,在.NET中对应HttpCookie类。
有两种类型的Cookie:会话Cookie(Session Cookie)和持久性Cookie。前者是临时性的,一旦会话状态结束它将不复存在;后者则具有确定的过期日期,在过期之前Cookie在用户的计算机上以文本文件的形式存储。
在服务器上创建并向客户端输出Cookie可以利用Response对象实现。
Response对象支持一个名为Cookies的集合,可以将Cookie对象添加到该集合中,从而向客户端输出Cookie。
通过Request对象的Cookies集合来访问Cookie
**********************
本章主要介绍https://www.360docs.net/doc/b8996031.html,的内置对象及https://www.360docs.net/doc/b8996031.html,应用程序的配置,并在最后一节介绍https://www.360docs.net/doc/b8996031.html,网站的预编译和编译。https://www.360docs.net/doc/b8996031.html,的内置对象包括Request、Response、Server、
Application、Session、Cookie等。应用程序的配置部分主要包括了解https://www.360docs.net/doc/b8996031.html,应用程序配置、基本配置元素、自定义应用程序设置的配置和检索等。下面将分别对这些内容进行阐述。
14.1 https://www.360docs.net/doc/b8996031.html,内置对象
https://www.360docs.net/doc/b8996031.html,提供了许多内置对象,前面所使用的Response对象就是其中一个。这些对象提供了相当多的功能,例如,可以在两个网页之间传递变量、输出数据,以及记录变量值等。这些对象在ASP时代已经存在,到了https://www.360docs.net/doc/b8996031.html,环境下,这些功能仍然可以使用。而且,它们的种类更多,功能也更强大。
https://www.360docs.net/doc/b8996031.html,内置对象是由IIS控制台初始化的ActiveX DLL组件。因为IIS可以初始化这些内置组件用于https://www.360docs.net/doc/b8996031.html,中,所以用户也可以直接引用这些组件来实现自己的编程,即可以在应用程序中,通过引用这些组件来实现访问https://www.360docs.net/doc/b8996031.html,内置对象的功能。
本节将对https://www.360docs.net/doc/b8996031.html,的这些内置对象,以及Cache对象和Global文件进行详细的讲解。
14.1.1 Response对象
Response对象是HttpResponse类的一个实例。该类主要是封装来自https://www.360docs.net/doc/b8996031.html,操作的HTTP响应信息。
1.Response对象的属性
Response对象的属性如表14-1所示。
表14-1 Response对象的属性
属性说明属性值
BufferOutput
获取或设置一个值,该值指示是否缓冲输出,并在完成处理整个页之后将其
发送
如果缓冲了到客户端的输出,则为true;否则为false。默认
为true
续表
属性说明属性值Cache获取Web页的缓存策略(过期时间、保密性、变化子句)包含有关当前响应的缓存策略信息的HttpCachePolicy对象Charset获取或设置输出流的HTTP字符集输出流的HTTP字符集
IsClientConnected获取一个值,通过该值指示客户端是否仍连接在服务器上如果客户端当前仍在连接,则为true;否则为false
实例14-1:使用缓冲区
由于Response对象的BufferOutput属性默认为True,所以要输出到客户端的数据都暂时存储在缓冲区内,等到所有的事件程序,以及所有的页面对象全部解译完毕后,才将所有在缓冲区中的数据送到客户端的浏览器。下面的例子将演示缓冲区是如何工作的。
<%
Response.Write("缓存已清除" + "
");
%>
void Page_Load(Object sender, EventArgs e)
{
Response.Write("缓存清除前" + "
");
Response.Clear();
}
上述程序代码实例首先在“Page_Load”事件中送出“缓存清除前”这一行,此时的数据存在缓冲区中。接着使用Response对象的Clear方法将缓冲区的数据清除,所以刚刚送出的字符串已经被清除。然后IIS开始读取HTML组件的部分,并将结果送至客户端的浏览器。由执行结果只出现“缓存已清除”可知,使用Clear方法之前的数据并没有出现在浏览器上,所以程序开始时是存在缓冲区内的。如果在相同的程序中加入“Response.BufferOutput=false”:
<%
Response.Write("清除之后的数据
");
%>
void Page_Load(Object sender, EventArgs e)
{
Response.BufferOutput=false;
Response.Write("清除缓冲区之前的数据" + "
");
Response.Clear();
}
可以发现,执行的结果并没有因为使用Clear方法而将缓冲区的数据清除,这表明数据是直接输出而没有存放在缓冲区内。
2.Response对象的方法
Response对象可以输出信息到客户端,包括直接发送信息给浏览器、重定向浏览器到另一个URL或设置cookie的值。表14-2列举了几个常用的方法。
表14-2 Response对象的方法
方法说明
Write将指定的字符串或表达式的结果写到当前的HTTP输出
End停止页面的执行并得到相应结果
Clear用来在不将缓存中的内容输出的前提下,清空当前页的缓存,仅当使用了缓存输出时,才可以利用Clear方法
将缓存中的内容立即显示出来。该方法有一点和Clear方法一样,它在脚本前面没有将Buffer属性设置为True时会出错。和End方法不同的是,该方Flush
法调用后,该页面可继续执行
Redirect使浏览器立即重定向到程序指定的URL
https://www.360docs.net/doc/b8996031.html,中引用对象方法的语法是“对象名.方法名”。“方法”就是嵌入到对象定义中的程序代码,它定义对象怎样去处理信息。使用嵌入的方法,对象便知道如何去执行任务,而不用提供额外的指令。以下将通过几个小例子来讲解Response对象的常用方法。
实例14-2:使用Response.write,向客户端发送信息
for(int i=1;i<=500;i++)
{
Response.Write("i= "+i+"
");
}
本例使用“write”方法,向屏幕输出500个值。
实例14-3:使用Response.End方法调试程序
End方法可以停止当前页面的执行,基于这个原因,可以结合Response.write方法输出当前页面上的某个变量、数组值。
void btnSubmit_Click(Object sender, EventArgs e)
{
int N = int.Parse(Request.Form["t xtVar"].ToString());
Response.Write("N=" + N + "
");
Response.Write("该值的平方值是:" + N*N);
}
运行上面的代码,结果如图14-1所示。
图14-1 使用Response.End调试程序
输入一个值“6”,然后单击“计算该值的平方值”按钮,屏幕将显示如下结果:N=6
该值的平方值是:36
在代码中加上“Response.End()”,代码如下:
void btnSubmit_Click(Object sender, EventArgs e)
{
int N = int.Parse(Request.Form["t xtVar"].ToString());
Response.Write("N=" + N + "
");
Response.End();
Response.Write("该值的平方值是:" + N*N);
}
这时再运行代码,将只会显示:
N=6
实验证明,“Response.End()”方法停止了当前页面的执行。这仅仅是一个小例子,读者可以依此类推,在程序中使用End方法进行调试。不过千万要记住调试完代码后,不要忘记把调试用的“Response.End()”删掉。
实例14-4:使用Redirect方法进行页面重定向
在网页编程中,经常会遇到在程序执行到某个位置进行页面调转的情况。
Response.Redirect方法可以满足这种需求,例如代码:
Response.Redirect("https://www.360docs.net/doc/b8996031.html,");
执行该代码,页面将跳转到网易163的主页。
14.1.2 Request对象
Request对象是HttpRequest类的一个实例。它能够读取客户端在Web请求期间发送的HTTP值。
1.Request对象的属性
Request对象的属性如表14-3所示。
表14-3 Request对象的属性
属性说明属性值QueryString获取 HTTP 查询字符串变量集合NameValueCollection对象
Path获取当前请求的虚拟路径当前请求的虚拟路径
UserHostAddress获取远程客户端的 IP 主机地址远程客户端的IP地址
Browser获取有关正在请求的客户端的浏览器功能的信息HttpBrowserCapabilities对象
实例14-5:获取QueryString值
程序中,经常可以使用QueryString来获得从上一个页面传递来的字符串参数。例如,在页面1中创建一个连接,指向页面2,并用QueryString来查询两个变量:
在页面2中接收到从页面1中传过来的两个变量:
void Page_Load(object sender, System.EventArgs e)
{
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-4 Request对象的方法
方法说明
BinaryRead执行对当前输入流进行指定字节数的二进制读取
MapPath为当前请求将请求的 URL 中的虚拟路径映射到服务器上的物理路径
实例14-6:获取文件的物理路径
Request.MapPath("FileName");
可以通过这条语句来得到某个文件的实际物理位置,这个方法常常用在需要使用实际路径的地方。
14.1.3 Application对象
Application对象是HttpApplicationState类的一个实例。
HttpApplicationState类的单个实例,将在客户端第一次从某个特定的https://www.360docs.net/doc/b8996031.html,应用程序虚拟目录中请求任何URL资源时创建。对于Web服务器上的每个https://www.360docs.net/doc/b8996031.html,应用程序,都要创建一个单独的实例。然后通过内部Application对象公开对每个实例的引用。Application对象有如下特点:
—数据可以在Application对象内部共享,因此一个Application对象可以覆盖多个用户。
—一个Application对象包含事件,可以触发某些Applicatin对象脚本。
—个别Application对象可以用Internet Service Manager来设置而获得不同属性。
—单独的Application对象可以隔离出来在它们自己的内存中运行,这就是说,如果一个人的Application遭到破坏,就不会影响其他人。
—可以停止一个Application对象(将其所有组件从内存中驱除)而不会影响到其他应用程序。
一个网站可以有不止一个Application对象。典型情况下,可以针对个别任务的一些文件创建个别的Application对象。例如,可以建立一个Application对象来适用于全部公用用户,而再创建另外一个只适用于网络管理员的Application对象。
Application对象使给定应用程序的所有用户之间共享信息,并且在服务器运行期间持久地保存数据。因为多个用户可以共享一个Application对象,所以必须要有Lock和Unloc k方法,以确保多个用户无法同时改变某一属性。Application对象成员的生命周期止于关闭IIS或使用Clear方法清除。
1.Application对象的属性
Application对象的属性如表14-5所示。
表14-5 Application对象的属性
属性说明属性值AllKeys获取HttpApplicationState集合中的访问键HttpApplicationState对象名的字符串数组
Count获取HttpApplicationState集合中的对象数集合中的Item对象数。默认为0
2.Application对象的方法
Application对象的方法如表14-6所示。
表14-6 Application对象的方法
方法说明
Add新增一个新的Application对象变量
Clear清除全部的Application对象变量
Get使用索引关键字或变数名称得到变量值
GetKey使用索引关键字來获取变量名称
Lock锁定全部的Application变量
Remove使用变量名称删除一个Application对象
RemoveAll删除全部的Application对象变量
Set使用变量名更新一个Application对象变量的內容
UnLock解除锁定的Application变量
使用Application对象的语法如下所示:
Application("变量名")="变量值"
实例14-7:设置、获取Application对象的内容
代码如下:
void Page_Load(object sender, System.EventArgs e)
{
Application.Add("App1","Value1");
Application.Add("App2","Value2");
Application.Add("App3","Value3");
int N;
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变量。如果用户没有明确调用Unloc k方法,则服务器将在页面文件结束或超时即可解除对Application对象的锁定。 Unlock方法可以使其他客户端在使用Loc k方法锁住Application对象后,修改存储在该对象中的变量。如果未显式地调用该方法,Web服务器将在页面文件结束或超时后解锁Application对象。 使用方法如下: Application.Lock(); Application["变量名"]="变量值"; Application.UnLock(); 14.1.4 Session对象 Session对象是HttpSessionState的一个实例。该类为当前用户会话提供信息,还提供对可用于存储信息的会话范围的缓存的访问,以及控制如何管理会话的方法。 Session的发明是填补HTTP协议的局限,HTTP协议工作过程是,用户发出请求,服务器端做出响应,这种用户端和服务器端之间的联系都是离散的,非连续的。在HTTP协议中没有什么能够允许服务器端来跟踪用户请求的。在服务器端完成响应用户的请求后,服务器端不能持续与该浏览器保持连接。从网站的观点上看,每一个新的请求都是单独存在的,因此,当用户在多个主页间转换时,就根本无法知道他的身份。 可以使用Session对象存储特定用户会话所需的信息。这样,当用户在应用程序的Web 页之间跳转时,存储在Session对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。 当用户请求来自应用程序的Web页时,如果该用户还没有会话,则Web服务器将自动创建一个Session对象。当会话过期或被放弃后,服务器将中止该会话。 当用户第一次请求给定的应用程序中的aspx文件时,https://www.360docs.net/doc/b8996031.html,将生成一个SessionID。SessionID是由一个复杂算法生成的号码,它唯一标识每个用户会话。在新会话开始时,服务器将Session ID作为一个cookie存储在用户的Web浏览器中。 在将SessionID cookie存储于用户的浏览器之后,即使用户请求了另一个.aspx文件,或请求了运行在另一个应用程序中的.aspx文件,https://www.360docs.net/doc/b8996031.html,仍会重用该cookie跟踪会话。与此相似,如果用户故意放弃会话或让会话超时,然后再请求另一个.aspx文件,那么https://www.360docs.net/doc/b8996031.html, 将以同一个cookie开始新的会话。只有当服务器管理员重新启动服务器,或用户重新启动Web 浏览器时,此时存储在内存中的SessionID设置才被清除,用户将会获得新的SessionID cookie。 通过重用SessionID cookie,Web应用程序将发送给用户浏览器的cookie数量降为最低。另外,如果用户决定该Web应用程序不需要会话管理,就可以不让Web应用程序跟踪会话和向用户发送SessionID。 Session对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,另外其还经常被用在鉴别客户身份的程序中。要注意的是,会话状态仅在支持cookie的浏览器中保留,如果客户关闭了cookies选项,Session也就不能发挥作用了。 https://www.360docs.net/doc/b8996031.html,的Sessions非常好用,能够利用Session对象来对Session全面控制,如果需要在一个用户的Session中存储信息,只需要简单地直接调用Session对象就可以了,下面就是个例子: Session("Myname")=Response.form("Username"); Session("Mycom pany")=Response.form("Usercom pany"); 应注意的是,Session对象是与特定用户相联系的。针对某一个用户赋值的Session对象是和其他用户的Session对象完全独立的,不会相互影响。换句话说,这里面针对每一个用户保存的信息是每一个用户自己独享的,不会产生共享情况。 很明显,对于不同的用户,Session对象的Myname变量和Mycompany变量各自是不同的,当每个人在网站的不同主页间浏览时,这种针对个人的变量会一直保留,这样作为身份认证是十分有效的。 1.Session对象的属性 Session对象的属性如表14-7所示。 表14-7 Session对象的属性 属性说明属性值Count获取会话状态集合中Session对象的个数Session对象的个数 TimeOut获取并设置在会话状态提供程序终止会话之前各请求之间所允许的超时期限超时期限(以分钟为单位) SessionID获取用于标识会话的唯一会话ID会话ID 实例14-9:获取Session对象的个数 Count属性可以帮助统计正在使用的Session对象的个数,语句非常简单,示例如下:Response.Write(Session.Count); 实例14-10:设置Session对象的生存期 每一个客户端连接服务器后,服务器端都要建立一个独立的Session,并且需要分配额外的资源来管理这个Session,但如果客户端因某些原因,例如,去忙其他的工作,停止了任何操作,但没有关闭浏览器,那么这种情况下,服务器端依然会消耗一定的资源来管理Session,这就造成了对服务器资源的浪费,降低了服务器的效率。所以,可以通过设置Session生存期,以减少这种对服务器资源的浪费。 要更改Session的有效期限,只要设定Tim eOut属性即可;Tim eOut属性的默认值是20分钟。
");
目前时间:
第一个Session的值:
第二个Session的值:
void Page_Load(object sender, System.EventArgs e)
{
if(!Page.IsPostBack)
{
Session["Session1"]="Value1";
Session["Session2"]="Value2";
Session.Tim eout=1;
DateTim e now=DateTim e.Now;
string format="HH:mm:ss";
Label1.Text=now.ToString(format);
Label2.Text=Session["Session1"].ToString();
Label3.Text=Session["Session2"].ToString();
}
}
void Button1_Click(object sender, System.EventArgs e)
{
DateTim e now=DateTim e.Now;
string format="HH:mm:ss";
Label1.Text=now.ToString(format);
Label2.Text=Session["Session1"].ToString();
Label3.Text=Session["Session2"].ToString();
}
在本例中,通过Timeout属性设置了Session的生存期为1分钟。运行上面代码,显示结果如图14-2所示。
图14-2 设置Session对象的生存期
一分钟后,单击“演示”按钮,页面会出现错误,提示
Label2.Text=Session["Session1"].ToString();
实验二-ASP-NET内置对象
实验二 https://www.360docs.net/doc/b8996031.html,内置对象 注意事项:在F盘领卷文件夹里建立自己的工作目录,以自己的姓名学号作为目录名,专门存储你所做的实验程序及相关信息。 一、实验目的 (1) 熟练掌握Application、Session对象的使用。 (2) 熟练掌握Request、Response对象的使用。 (3) 掌握跨页面提交的应用。 二、实验内容 1.设计并实现一个简易聊天室 要求如下: (1) 页面浏览效果如图4-1~图4-4所示。 (2) 用户名和密码信息存储在二维数组中。 (3) 图4-2~图4-4使用框架技术。 (4) 必须包含Response、Session和Application对象的应用。 图4-1 “聊天室”浏览效果(1) 图4-2 “聊天室”浏览效果(2)
图4-3 “聊天室”浏览效果(3) 图4-4 “聊天室”浏览效果(4) 2.设计并实现同一个简易的购物车 要求如下: (1)页面浏览效果如图4-5所示
图4-5 购物车效果(1) (2) 选择相应宠物,单击放入“放入购物车”按钮,可看到供选择的宠物,如图4-6所 示。 图4-6 购物车效果(2) (3) 如图4-7所示,单击“清空购物车”按钮,将清除购物车中的宠物信息,并显示“没 有选择任何宠物”的提示信息。 图4-7 购物车效果(3) 三、实验步骤 1. 设计并实现一个简易的聊天室 (1)新建网站 新建一个网站,添加Web窗体ChatLogin.aspx、Web窗体ChatDisplay.aspx、Web 窗体SendMessage.aspx、HTML页Chat.htm和全局应用程序类Global.asax。其中ChatLogin.aspx用于聊天室用户登录;ChatDisplay.aspx用于显示聊天信息;
实验二-ASP-NET内置对象
实验二-ASP-NET内置对象
实验二 https://www.360docs.net/doc/b8996031.html,内置对象 注意事项:在F盘领卷文件夹里建立自己的工作目录,以自己的姓名学号作为目录名,专门存储你所做的实验程序及相关信息。 一、实验目的 (1) 熟练掌握Application、Session对象的使用。 (2) 熟练掌握Request、Response对象的使用。 (3) 掌握跨页面提交的应用。 二、实验内容 1.设计并实现一个简易聊天室 要求如下: (1) 页面浏览效果如图4-1~图4-4所示。 (2) 用户名和密码信息存储在二维数组中。 (3) 图4-2~图4-4使用框架技术。 (4) 必须包含Response、Session和Application 对象的应用。 图4-1 “聊天室”浏览效果(1)
图4-2 “聊天室”浏览效果(2) 图4-3 “聊天室”浏览效果(3)
图4-4 “聊天室”浏览效果(4) 2.设计并实现同一个简易的购物车 要求如下: (1)页面浏览效果如图4-5所示 图4-5 购物车效果(1) (2) 选择相应宠物,单击放入“放入购物车”
按钮,可看到供选择的宠物,如图4-6所示。 图4-6 购物车效果(2) (3) 如图4-7所示,单击“清空购物车”按钮, 将清除购物车中的宠物信息,并显示“没有选择任何宠物”的提示信息。 图4-7 购物车效果(3) 三、实验步骤 1. 设计并实现一个简易的聊天室 (1)新建网站 新建一个网站,添加Web窗体ChatLogin.aspx、Web窗体 ChatDisplay.aspx、Web窗体 SendMessage.aspx、HTML页Chat.htm和 全局应用程序类Global.asax。其中
ASP中常用的内置对象
(1)简述ASP.NET内置对象。 答:ASP.NET提供了内置对象有Page、Request、Response、Application、Session、Server、Mail和Cookies。这些对象使用户更容易收集通过浏览器请求发送的信息、响应浏览器以及存储用户信息,以实现其他特定的状态管理和页面信息的传递。 (2)简述Response对象。 答:Response对象用来访问所创建的并客户端的响应,输出信息到客户端,它提供了标识服务器和性能的HTTP变量,发送给浏览器的信息和在cookie中存储的信息。它也提供了一系列用于创建输出页面的方法,如无所不在的Response . Write方法。 (3)简述Request对象。 答:Request对象是用来获取客户端在请求一个页面或传送一个Form时提供的所有信息,这包括能够标识浏览器和用户的HTTP变量,存储在客户端的cookie信息以及附在URL 后面的值(查询字符串或页面中< Form>段中的HTML控件内的值)。 (4)简述Application对象。 答:在https://www.360docs.net/doc/b8996031.html,环境下,Application对象来自HttpApplictionStat类。它可以在多个请求、连接之间共享公用信息,也可以在各个请求连接之间充当信息传递的管道。使用Application对象来保存我们希望传递的变量。由于在整个应用程序生存周期中,Application 对象都是有效的,所以在不同的页面中都可以对它进行存取,就像使用全局变量一样方便。 (5)简述Session对象。 答:Session对象就是服务器给客户端的一个编号。当一台WEB服务器运行时,可能有若干个用户浏览正在浏览这台服务器上的网站。当每个用户首次与这台WWW服务器建立连接时,他就与这个服务器建立了一个Session,同时服务器会自动为其分配一个SessionID,用以标识这个用户的唯一身份。特别说明的是Session对象的变量只是对一个用户有效,不同的用户的会话信息用不同的Session对象的变量存储。在网络环境下Session对象的变量是有生命周期的,如果在规定的时间没有对Session对象的变量刷新,系统会终止这些变量。 (6)简述Server对象。 答:Server对象提供对服务器上的方法和属性的访问。其中大多数方法和属性是作为实用程序的功能服务的。Server对象也是Page对象的成员之一,主要提供一些处理页面请求时所需的功能;例如建立COM对象、将字符串的编译码等工作。 (7)简述Cookie对象。 答:cookie是一小块由浏览器存贮在客户端系统上(硬盘)的文本,是一种标记。由WEB服务器嵌入用户浏览器中,以便标识用户,且随同每次用户请求发往WEB服务器。Cookies 的值比A S https://www.360docs.net/doc/b8996031.html,其他集合(例如Form和Server Variables )的值要复杂得多。 (8)简述Mail对象。 答:https://www.360docs.net/doc/b8996031.html,被赋予了一个发送Email的新对象,名为SmtpMail,实际上Mail对象由System.Web.Mail类库实现(Class Library)。这个类库由MailMessage对象、Sm tpMail 对象、MailFormat对象和MailAttachm ent对象组成,它们相互合作,完成E-m ail的发送。
ASP中包含6个无需创建即可直接调用和访问的内置对象
ASP中包含6个无需创建即可直接调用和访问的内置对象,即 Request,Response,Session,Application,Server和Cookie。当web应用程序运行时,这些对象可以用来维护有关当前应用程序、HTTP请求、web服务器的活动状态等基本信息,并为用户的HTTP请求和web服务器的处理提供桥梁作用。而在https://www.360docs.net/doc/b8996031.html,对象中,这些对象仍然存在。不同的是,在.NET框架中,这些内部对象是由封装好的类来定义的,且已成为HttpContext类(封装了特定http请求的所有信息)的属性。由于https://www.360docs.net/doc/b8996031.html,在初始化页面请求时已经自动创建了这些内部对象,因此可以直接使用它们而无需再对类进行实例化。 一、Request对象 Request对象对应https://www.360docs.net/doc/b8996031.html,中的HttpRequest类,当客户端发出请求执行https://www.360docs.net/doc/b8996031.html, 程序时,CLR会将客户端的请求信息包含在Request对象中,其中包括报头(Head)、客户端浏览器的信息(包括浏览器类型及浏览器版本号)、编码方式、请求方法(包括POST 及GET),几所带参数信息(包括参数名及参数值)等。通过使用Request对象,我们可以访问HTML基于表单的数据和通过URL发送的参数列表信息,同时还可以接受来自客户端的Cookie信息。 Request对象的调用方法如下: Request.Collection("Variable") Collection是一个属性集合,包括QueySrting,Form,cookies和ServerVariables,表示获取数据的方法。其中,QueryString用于获取HTTP查询字符串集合,Form用于获取窗体的变量集合,Cookies用于获取客户端发送的Cookie集合ServerVariable用于获取web服务器的变量集合。Collection是可以省略的,如果省略,那么Request对象会依照QueryString、Form、Cookies及ServerVariable的顺序查找,直至发现Variable 所对应的关键字为止,并返回其值;如果没有发现Variable对应的关键字,则返回空值。 当Request对象使用Form属性来获取窗体表单的数据时,一般是在窗体页面提交完成之后。窗体页面的提交方式有两种,即POST和GET。当使用POST提交方式时,窗体中的数据会作为Form集合的元素被发送到服务器端;当使用GET提交方式时,窗体中的表单数据将作为查询字符串的形式通过URL传递。此时,要得到其值,可使用Request 对象的QueryString属性。 下面来看两个分别使用POST和GET提交数据的范例: 例一:用Form的POST方式发送数据
aspnet七大内置对象
aspnet七大内置对象
一、Response对象 Response对象是HttpResponse类的一个实例。该类主要是封装来自https://www.360docs.net/doc/b8996031.html,操作的HTTP响应信息。 1、Response对象的属性 属性说明属性值 BufferOutput 获取或设置一个值,该值指示是否缓冲输出,并在完成处理整个页之 后将其发送如果缓冲了到客户端的输出,则为true;否则为false。默认为true 续表 属性说明属性值 Cache获取Web页的缓存策略(过期时间、保密性、变化子句) 包含有关当前响应的缓存策略信息的HttpCachePolicy对 象 Charset获取或设置输出流的HTTP字符集输出流的HTTP字符集 IsClientConnected获取一个值,通过该值指示客户端是否仍连接在服务器上如果客户端当前仍在连接,则为true;否则为false 实例:使用缓冲区 由于Response对象的BufferOutput属性 默认为True,所以要输出到客户端的数据都暂 时存储在缓冲区内,等到所有的事件程序,以及 所有的页面对象全部解译完毕后,才将所有在缓 冲区中的数据送到客户端的浏览器。下面的例子 将演示缓冲区是如何工作的。
<% Response.Write("缓存已清除" + "
"); %> 上述程序代码实例首先在“Page_Load”事件中送出“缓存清除前”这一行,此时的数据存在缓冲区中。接着使用Response对象的Clear 方法将缓冲区的数据清除,所以刚刚送出的字符串已经被清除。然后IIS开始读取HTML组件的部分,并将结果送至客户端的浏览器。由执行结果只出现“缓存已清除”可知,使用Clear方法之前的数据并没有出现在浏览器上,所以程序