zoukankan      html  css  js  c++  java
  • [置顶] Application,Session,Cookie之Application对象

    概述

           Application为全局作用域,且只有一个Application对象,它可以存储访问任意页面的变量(数据存储类型都是Object,也就是任意类型),同时也被多页面使用(也为引用)。

     


     

    Application集合


     Contents用于获取(除Object标记和CreateObject方法创建的对象)所有Application对象

     

     CreateObject集合取得Object标记建立的对象

     

    关于 Application的方法


     这里我们重点看下 Lock和集合的操作


    Lock

     Lock是避免操作同一变量时出现与时间有关的错误

     

     实例1如:我们设置当有用户访问页面时,Application对象的Visitor1

     

     

     protected void Session_Start(object sender,EventArgs e)
            {
     Session.Timeout = 1;//会话保持时间
               Application.Lock();//锁定application对象变量,防止修改冲突
     
     Application["Visitor"] =(int) Application["Visitor"] + 1;//注意这里的数据类型转换,Object类型转为Int
    Application.UnLock();
    }
     

    集合的操作


    Get Set

    RemoveAdd


     集合对应的操作和义类的属性是相同的。

    以下实例供参考

     

    实例2如:我们想在ApplicationStat集合中一个名为Name,值是Tom的字符串


     

    Application.Add("Name","Tom");
    Application("Name")="Tom";

    有一天我们想获取Name的名字,那么怎样获取呢,


     

    Dim tmp as object
    Tmp=Application("Name")或是
    Tmp=Application.get("Name")都是可以获取的

    修改Tom的值与此类似,这里就不再重复了


     综合实例:


    这里我们再来做一个访问网页次数的例子,这次和上次不同的是Session进行对比分析


     

    <%@ PageLanguage="C#" AutoEventWireup="true"CodeBehind="test.aspx.cs" Inherits="global.test" %>
     
    <!DOCTYPE html>
     
    <htmlxmlns="http://www.w3.org/1999/xhtml">
    <headrunat="server">
    <metahttp-equiv="Content-Type" content="text/html;charset=utf-8"/>
        <title></title>
        <style type="text/css">
     
            div
            {  font-size:20px;
                font-weight:bold;
                color:#f00;
                margin-top:30px;
                margin-left:40px;
            }
     
        </style>
    </head>
    <body>
        <form id="form1"runat="server">
        <div>
        <%
            //设置ApplicationCount的值
            int applicationCount = 1;
            int sessionCount = 1;
           //if语句判断appciationCount的值是否为空,不为空逐步加1,为空设置为1
            if(Application["applicationCount"] == null)
            {
               Application["applicationCount"] = 1;
            }
                //不为空,aplication的值加1
            else
            {
                applicationCount =(int)Application["ApplicationCount"] + 1;
               Application["applicationCount"] = applicationCount;
            }
           
            //ifsessionCount的值为空,位置为1,否则值加1
            if (Session["sessionCount"]== null)
            {
                Session["sessionCount"] =1;
            }
            //sessionCount值不为空,值加1
            else
            {
                sessionCount =(int)Session["sessionCount"] + 1;//将Object对象转为int类型,进行相加
                Session["sessionCount"] =sessionCount;
            }
           Response.Write("当前页面由Application记录到的被访问了" + applicationCount +"次<br/>");
           Response.Write("当前页面由Session记录到的被访问了" + sessionCount +"次<br/>");
             %>
        </div>
        </form>
    </body>
    </html>


    在页面运行后,我们看到如下结果Session和Application中的值是一样的,即使我们按F5刷新页面,结果也是一样,如下图:

    效果图如下。

     


    然后我们重新打开一个浏览器应用程序(注意不要在当前窗口中输入),会看到另一种如下情况

     


     

    为何会出现这种情况呢,原因就在于Application是属于所有网站用户的,它会保存全局的数据,从web启动到web停止期间的所有的访问次数。而Session只与特定用户有关,只适合保存特定用户的信息。

     

    通过以上小结我们发现:


    Application是用于存储,访问和被访问全局对象。可添加删除对象,也可以有对象的启动,销毁事件(详见Global),

    它和session的不同之处之一就体现在作用域的方面,session为个体所独有Application为全局的

     

  • 相关阅读:
    webuploader web 大文件上传源代码
    poj 1703 Find them, Catch them
    poj 1308 Is It A Tree?
    hud 1785 畅通工程
    食物链 poj 1182
    poj 1611 The Suspects 并查集
    poj 2524 并查集 Ubiquitous Religions
    The Suspects 简单的并查集
    cf 621D
    hdu2159
  • 原文地址:https://www.cnblogs.com/pangblog/p/3266587.html
Copyright © 2011-2022 走看看