• ASP.NET 包含几大对象


    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();
  • 相关阅读:
    ural 1146. Maximum Sum(动态规划)
    ural 1119. Metro(动态规划)
    ural 1013. K-based Numbers. Version 3(动态规划)
    Floyd算法
    杭电21题 Palindrome
    杭电20题 Human Gene Functions
    杭电15题 The Cow Lexicon
    杭电三部曲一、基本算法;19题 Cow Bowling
    杭电1002 Etaoin Shrdlu
    Qt 学习之路 2(37):文本文件读写
  • 原文地址:https://www.cnblogs.com/KingStar/p/2047704.html
Copyright © 2020-2023  润新知