zoukankan      html  css  js  c++  java
  • Application对象、Session对象、Cookie技术 之 Application对象

    一、Application对象可以实现应用程序的状态管理
     (1)Application的应用:

          ◆可以统计目前上站的人数

          ◆可以用于网站上不同用户之间的通信

          ◆可以记录广告条被点击的次数

          ◆可以在每个主页上显示动态信息

          ◆可以从数据库提取数据供多个网页使用

    (2)创建Application变量的语法

          Application(“变量名称”)如:Application("Welcome")="欢迎光临我的主页!"

    (3)Application变量不会自己消亡,在使用中应注意:
    Application变量会始终占据内存,创建过多的变量会降低响应速度
    Application变量在三种情况下被中止:服务被中止、Global.asa被改变或者该Application被卸载

    (4)使用Application对象的语法
    Application. 属性│方法

    (5)Application对象的方法

    Application的方法都是用于处理多个用户对存储在Application中的数据进行写入的问题。共有两个:Lock方法:防止其他客户端更改Application对象的值。(仅当前客户可修改和存取);Unlock方法:与Lock方法相反,允许其他客户端更改Application对象的值。
       具体用法:

          Application.Lock-锁定Application对象所有变量

          Application.Unlock-解锁Application对象所有变量
    如;
           Application.Lock;

           Application("NumCount")=Application("NumCount")+1;NumCount是在Application_OnStart事件设置的变量

           Application.Unlock;

     (6)Application对象的事件
          Application有两个事件:

          Application_OnEnd       Application_OnStart

          Application_OnStart:当每个Application对象开始时会激活该事件

          Application_OnEnd:当每个Application对象结束时会激活该事件
    上述两个事件必须放在Global.asax文件
    (7)Application对象的集合
    Application的集合有两个:
    1Contents数据集合

          Contents允许程序取得用户能使用的所有的Application对象

          注:不包括用<OBJECT>标记与CreateObject方法建立的对象

          语法结构:

          Application.Contents(Application 对象名称)
    2、StaticObjects数据集合可以取得以<OBJECT>标记建立的Application对象

          Application.StaticObjects(对象变量名称)

     

          利用<OBJECT>标记创建对象的语法:

      <OBJECT RunAt=Server SCOPE=对象 ID=实例对象名>

    Application对象重要的方法调用:

    ·Add方法,加入一个对象到Application对象的Stat集合中
    例如:
    Application.Add(“string1”,”test”)
    表示向Application的stat集合中加入一个名为string1的值为”test”的字符串,其实它的效果和
    Application(“string1”)=”test”
    以及Application.item(“string1”)=”test” 是一样的。

    ·Remove方法,根据给出的标识从Application对象的Stat集合中删去
    例如:
    Application.Remove(“string1”)
    表示把标识为string1的共享对象string1从Application对象的Stat集合中删去。使用它可以清除用Add方法添加的对象。

    ·RemoveAll方法,把Application对象Stat集合中的所有对象清除,在我们对属性的使用举例中,我们已经见过了它的用法,但是值得小心,我们不提倡使用它,因为在编程中你并不清楚,是否有其他页面要依赖于某个Application的公用变量,一旦清除将造成不可预知的错误。

    ·Clear方法,作用和RemoveAll方法一样。

    ·Get方法,允许使用名字标识或者是下标,来取得Application对象stat集合中的对象元素。
    例如:
    dim tmp as object
    tmp=Application.Get(“string1”)
    或者 tmp=Application.Get(0)
    表示从Application对象的Stat集合中取得标识为string1或者下标为0的对象
    它等价于:
    tmp=Application(“string1”)
    tmp=Application(0)
    或者是
    tmp=Application.item(“string1”)
    tmp=Application.item(0)

    ·Set方法,修改Application对象stat 集合中指定标识所对应的对象的值。
    例如:
    Application.Set(“string1”,”try”)
    就把我们开始为string1变量设置的值”test”改为”try”了,它和下边的形式也是一样的:
    Application(“string1”)=try

    ·GetKey方法,根据给定的下标取得Application对象的stat集合中相应对象的标识名。
    例如:
    dim nameStr as String
    nameStr=Application.GetKey(0)
    表示取得Application对象中Stat集合的第一个对象的标识名

    ·Lock方法,锁住其他线程对Application对象中stat集合的访问权限。这个方法主要是用来防止对Application的变量操作过程中,其他并发程序可能造成的影响。比如在记数过程中,如果不进行上锁操作,就有可能发生脏读脏写。例如,开始从变量中取得记数值1,
    如果在记数并写回到变量之间,另一页面对它发生了一次记数,并先行写回变量,那么最终写回到变量中的值为2,而并不是实际的3。如果采用了上锁机制,在页面读出变量到记数并写回变量的过程中,即使发生了另一次记数,由于变量被锁住,它也不可能在变量被写回以前取得成功,只有等待变量释放,从而形成两者对变量操作的串行性,避免了数据的脏读和脏写。

    ·Unlock方法,对Application对象Stat集合锁定的解锁操作,释放资源以供其他页面使用。

    下面我们就上边学到的方法做一个例子,为了强调lock方法和unlock方法,我们将单独举一个例子。例子是这样的,开始我们创建6个Application变量,赋以数值序号,页面有3个按钮,分别是加1,减1和清除。当点击“加1“按钮后,我们会看到变量的值都会增加1,当点击”减1“按钮后,变量值都减1,当按下清除后,变量都消失了。在清除功能中,我们为了同时演示remove和clear方法,采用最后三个用clear清除,其他的逐一用remove清除。

    1. 源程序

    <!-- 文件名:Application\FormApplication01.aspx -->

    <html>

    <script language="vb" runat=server>

    Sub Page_Load(o as object,e as eventargs)
    dim i as integer

    If Not IsPostBack
    for i=1 to 6
    application.add("item"&i,i)
    next
    End If

    response.clear
    for i=0 to application.count-1
    response.write(application.GetKey(i) & "=" & application.Get(i) & "<br>")
    next

    End Sub

    Sub AddOne(s as object,e as eventargs)
    '变量值加1
    dim i as integer
    dim j as integer
    dim t as string

    for i=0 to Application.count-1
    j=Application.Get(i)+1
    t=Application.GetKey(i)
    Application.Set(t,j)
    next

    Page_Load(s,e)
    '刷新画面
    End Sub

    Sub SubOne(s as object,e as eventargs)
    '变量减1
    dim i as integer
    dim j as integer
    dim t as string

    for i=0 to Application.count-1
    j=Application.Get(i)-1
    t=Application.GetKey(i)
    Application.Set(t,j)
    next

    Page_Load(s,e)
    '刷新画面
    End Sub

    Sub Gone(s as object,e as eventargs)
    '清空所有变量
    dim i as integer

    for i=0 to Application.count-3
    Application.Remove(i)
    next
    '演示remove方法
    Application.clear
    '演示clear方法
    Page_Load(s,e)
    '刷新画面
    End Sub
    </script>
    <head>
    <title>
    Application方法试验
    </title>
    </head>
    <body bgcolor=#ccccff>
    <center>
    <h2>Application方法试验</h2>
    <hr>
    <form runat=server>
    <asp:button type="submit" text="+1" OnClick="AddOne" runat=server />
    <asp:button type="submit" text="-1" OnClick="SubOne" runat=server />
    <asp:button type="submit" text="清空" OnClick="Gone" runat=server />
    </form>
    </center>
    </body>
    </html>

    2.开始时,输出画面:

    3.当两次点击+1后,输出的变量值:


    4.当点击”-1”后,变量的值为:


    5.当点击清空后,输出的画面

    接下来,我们看一个使用lock和unlock方法制作计数器的例子:Application对象对不同的连接者是共用的,因此适合制作计数器。

    程序代码如下:省略
    --------------------------
    asp.net改善application对象加快存储速度
    在传统的asp中,我们要用application对象去存储应用于整个application的变量。这当然会带来内存消耗的代价。在.net中,我们可以用static变量来改善它,采用static 变量在大多数时候存储的速度会比application对象快。
     
      做法: 

      创建一个webapplication,假设名称为webapplication1,在global.aspx中的global类中增加一个静态的成员sgreeting.

     
      public class global : system.web.httpapplication 
      { 
      public static string sgreeting = "china is great!"; 
      …… 
      }

      在webform1中增加一个label,名称为label1.
     
      在page_load()中为label1的text属性赋值。

      private void page_load(object sender, system.eventargs e)
      { 
      label1.text = webapplication1.global.sgreeting;
      }

      运行程序后将会看到china is great!

  • 相关阅读:
    js正则表达式中的问号使用技巧总结
    380. Insert Delete GetRandom O(1)
    34. Find First and Last Position of Element in Sorted Array
    162. Find Peak Element
    220. Contains Duplicate III
    269. Alien Dictionary
    18. 4Sum
    15. 3Sum
    224. Basic Calculator
    227. Basic Calculator II
  • 原文地址:https://www.cnblogs.com/huashanlin/p/546189.html
Copyright © 2011-2022 走看看