Asp.net五大对象

在web应用程序运行时,ASP.NET需要收集有关当前用用程序、用户会话以及响应浏览器等方面的信息。为了解决这些问题,在ASP.NET中包含了处理这些信息的类,用于封装这些上下文信息。

     ASP.NET中的这些类有HttpResponse, HttpRequest, HttpApplicationState,HttpServer,Utility,HttpSessionState等。它们对应的实例对象是 Response,Request,Application,Server,Session,被定义在Page类中,可以通过Page对象直接访问。

     Request对象(检索从浏览器发送到服务器的请求信息)。

     Request对象用于获取从浏览器向服务器所发送的请求中的信息。当用户单击“提交”按钮时,包含在输入控件中的数据信息将会与表单一起被发送到服务器端。服务器端的Request对象就会读取通过HTTP请求发送的数据。

     Request对象使用比较多的是其中的集合,其调用方法如下所示。

     Request.Collection["Variable"]

     其中的Collection代表集合,其取值有Form,QueryString,ServerVariable,Cookies等集合。Form集合用于收集表单中使用POST方法提交的请求数据,对数据的提取必须是在服务器端进行。而且POST请求必须用Form表单来发送。

     QueryString集合的功能与Form集合的功能相似。用来接收使用GET方法提交的数据信息。这种提交方式会将数据列于URL中“?”号的后面,通常称为“URL的附加信息”。反过来,如果一次HTTP请求事件中,被请求程序的URL中带有“?”并且其后面跟有数据列表,则表示此次请求方式为 GET 方法。

     ServerVariable集合用于获取环境变量,其中包含了服务器和客户端的各种系统信息。其使用格式如下所示。

     Request.ServerVariable[参数类型]

    

     Cookies集合在ASP.NET中用于共享数据,它的共享数据存放在客户端系统盘的Documents and Settings\Administrator\Cookies中。用于存放客户端相关的信息数据,如数字、字符串、日期等。每个浏览器都拥有自己的 Cookie。它常用于同一计算机,不同浏览器页面之间的数据传递,以达到数据共享的目的。

     在ASP、PHP等语言中,如果客户端禁用写入Cookie,则会导致程序不能使用Cookie。但是,在ASP.NET中,可以在Web.config文件中写入如下所示的语句,便可以实现在任何情况下均可写入。

     <sessionState cookieless = "true"> </sessionState>

     使用Cookie,需要用Reques和Response这两个对象。可以将Cookie看做是这两个对象的子对象。其使用分别为写入数据和读取数据两种。可以使用下面的方法写入和读取“Cookie“中的数据。写入数据的格式如下。

     Response.Cookies[Cookie名称].Value = 写入数据;

     或者如下。

     Response.Cookies[Cookie的索引号].Value = 写入数据;

     读取数据如下。

     CookiesValue = Request.Cookie["Cookie名称"].Value;

     或者如下。

     CookiesValue = Request.Cookie["Cookie索引号"].Value;

     其中的“Cookie名称”为任意的数字、字符串、日期等对象名称。“Cookie索引号”从0开始,对应了Cookies集合中的某个Cookie。对应的,也可以移出Cookies中的某个Cookie,其格式如下。

     Response.Cookies.Remove("需要移出的Cookie名称");

     Response.Cookies.Clear();

     其中前者用于移出某个指定名称的Cookie,而后者则用于将Cookies集合中所有的Cookie移出。(Cookie对象是有生命周期的。默认情况下,其有效时间为20分钟。如果超过20分钟,在写入的Cookie便会被清除。当然,也可以设置Cookie对象的有效保留时间。其方法如下。)

     Response.Cookies[Cookie名称].Expires = DateTime;

     也即是通过Expires(过期)属性进行设置。只是设置的属性值要求是DateTime类型。下面程序定义了一个过期时间为两天的Cookie。

     Response.Cookies["CookieStr"].Expires = DateTime.Now.AddDays(2);

    

     Application对象(共享应用程序全局信息)

     Application对象用于表示了整个网站应用程序的状态,这些状态通过Application对象实现数据的共享。所有访问该网站应用程序的计算机,都可以访问这些数据。

    

    Application数据的存储方式

    通过Application对象可以实现数据的读取和写入。

    其中读取数据的格式如下。

    数据 = Application[变量名];

    或者如下。

    数据 = Application[索引号];

    写入数据格式如下所示。

    Application[变量名] = 数据;

    或者如下。

    Application[索引号] = 数据;

    其中的“变量名”表示存储数据的变量,该变量需要使用双引号括起来。“索引号”从0开始,对应着Application对象中的某个变量。它们的结果是一样的。

    对应的,也可以删除Application对象中的某项数据。其格式如下所示。

    Application.Remove("命名对象");

    Application.RemoveAt("命名对象的索引");

    如果需要移出Application对象中的所有数据,则可以使用如下的格式操作。

    Application.RemoveAll();

    Application.Clear();

    由于Application对象是一个共享对象。也就是说,很多计算机都可以同上访问其中的内容。这便出现了一个问题,当两个甚至多个计算机同时对其中的对象进行操作时。服务器将面临怎样处理这个共享关系问题。我们可以通过加锁和解锁来实现对数据的无冲突访问,实现代码如下。

    Application.Lock();

    int count = Convert.ToInt32(Application["count"].ToString());

    Application["count"] = count + 1;

    Application.UnLock();

   

    Session对象(维护每个客户的个人信息)

   

    当客户端连接到服务器后,服务器端便会产生并维护一个客户端会话(Session)。简单地说就是服务器用于识别客户端而给它的一个编号。实际上,Web 服务器运行时,可能会有很多个用户同时浏览该服务器上的网站。当每个用户(浏览器)第一次与这台Web服务器建立连接时。服务器就为该用户(浏览器)建立一个会话(Session)。同时服务器将自动为其分配一个SessionID(这将在后面的程序中演示),用于标记这个用户(浏览器)的唯一身份。这个 SessionID是由Web服务器随机产生的一个由24个字符组成的字符串。这个唯一的SessionID实际上是非常重要的。当一个客户端用户提交一个表单时,浏览器会将用户(浏览器)的SessionID自动附加在HTTP头信息中,一并发送到服务器端。当服务器处理完这个表单请求后,便通过 SessionID所对应的用户,将结果返回。

  

   用Session存储数据

  

   与Application对象一样,Session对象也用于共享多个页面的数据。Session与Application对象的相同点是两者都用于共享数据,并且数据类型可以是数字、字符串、日期甚至是复杂的对象。同时他们都存放在服务器端,这与Cookie不同的。两者的不同在于,前者代表一个浏览器窗口,而后者代表整个网站应用程序,并且Application对象的数据用于对所有的网站用户共享。如下图所示是Session与 Application作用范围的示意图。

     同样,Session也分为读取和写入数据两种方法。

     可以使用如下方式实现数据的读取。

     数据 = Session[变量名];

     或者使用如下方式。

     数据 = Session[索引号];

     写入数据格式如下所示。

     Session[变量名] = 数据;

     或者使用如下的方式。

     Session[索引号] = 数据;

     对应的,也可以删除Session对象中的某项数据,则可以使用如下格式操作。

     Session.Remove("命名对象");

     Session.RemoveAt(“命名对象的索引”);

     要移出Application中对象中的所有数据,则可以使用如下格式操作。

     Session.RemoveAll();

     Session.Clear();

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。