在一起协同工作以完成某项任务的一组ASP文件称为一个应用程序。Application 对象用于把这些文件捆绑在一起。
Application 对象用于在整个应用程序生存期间保存信息。
Application 对象用于存储和访问来自任何页面的变量,类似于 Session 对象。不同之处在于,所有用户分享一个 Application 对象,而 Session 对象和用户的关系是一一对应的。
Application 对象没有属性。
Application 对象的原理是这样的,在每次应用程序启动(即 IIS 的启动)时,会在内存中请求一部分空间来保存数据,这个数据对于访问网站的所有用户来说是共享的,当在 IIS 中停止站点或者服务器重启时,Application 对象所存储的信息将丢失。
Application 对象的方法和集合
与 Session 对象类似,Application 对象也有 Contents 集合,下面的例子演示了如何设定和读取数据:
<% Application.Contents("WebSite") = "http://pchmonster.cnblogs.com" Dim WebSite WebSite = Application("WebSite") Response.Write(WebSite) %>
Application 对象也有 Remove 和 RemoveAll 两个方法,其使用方法和 Session 对象相应方法类似,这里不再详细描述了。
Applicaton 对象另外一对方法是 Lock 和 UnLock 方法。
Lock 方法阻止其他用户修改 Application 对象中的变量(用来确保同一时间只有一位用户可以修改 Application 对象变量)。
Unlock 方法使其他用户能够修改存储在 Application 对象中的变量(在它被使用 Lock 方法锁定之后)
下面的例子,Lock 方法可以防止一个以上用户访问变量 Visits,用 Unlock 方法来对已锁定的对象进行解锁,这样下一个用户就可以增加变量 Visits 的值。
<% Application.Lock() Application("Visits") = Application("Visits") + 1 Application.UnLock() %> <h3>This page has been visited <%=Application("Visits")%> times.</h3>
Application 小案例
在 ASP 刚问世时候,有很多使用 ASP 制作的聊天室,它的原理就是利用 Application 集合是访问站点所有用户共享的特点,将所有用户所发表的聊天句都存储在 Application 中。
当然这样的方法需要占用比较大的服务器内存资源,因此已经很少在使用了。
本例代码如下(ChatRoom.asp):
<% If UCase(Trim(Request.ServerVariables("REQUEST_METHOD"))) = "POST" Then Dim sCurrentWord sCurrentWord = Trim(Request.Form("word")) Application.Lock() Application("chatroom") = Application("chatroom") & "<br>" & Session.SessionID & "->" & sCurrentWord Application.UnLock() End If %> <h3>以下是聊天室的内容:</h3> <p><%=Application("chatroom")%></p> <hr> <form method="post" action=""> 请输入要说的话:<input name="Word" type="text"/> <input type="submit" value="发送"/> </form>
运行后,输入密码登录,如下图:
输入你要说的话,并按“发送”按钮发送出去。利用多个终端登录该页面,进行聊天。