El objeto Application tiene 2 colecciones, 4 métodos y 2 eventos:
Puede obtenerse una lista completa mediente un bucle del tipo For Each item in ... Next. Veamos como funciona:
<%
Application("Variable") = "Esto no es un objeto"
Set Application("Objeto") = Server.CreateObject("ADODB.Connection")
For Each Item in Application.Contents
If IsObject(Application.Contents(Item)) Then
Response.Write Item & " = Esto es un objeto.<BR>"
Else
Response.Write Item & " = " & Application.Contents(Item) & "<BR>"
End If
Next
%>
Y este sería el resultado:
Nombre del item Contenido
-----------------------------------------
Variable = Esto no es un objeto
Objeto = Esto es un objeto.
Al igual que en la colección anterior, puede mostrarse su contenido mediante un bucle For Each item in ... Next.
'---fichero global.asa
'---fichero.asp
<OBJECT RUNAT=Server SCOPE=Application ID=MiConexion PROGID="ADODB.Connection">
</OBJECT>
<%
For Each Item In Application.StaticObjects
Response.Write Item & "<BR>"
Next
%>
MiTexto
MiConexion
Este método se utiliza para eliminar un item específico de la colección Application.Contents. El item que se desea eliminar puede referenciarse de dos maneras: por su nombre o por su número dentro de la colección, teniendo presente que la numeración comienza en el 1. Si se referencia por su nombre, éste deberá escribirse entre comillas dobles("). Por ejemplo:
<%
Application.Contents.Remove(1)
For Each Item in Application.Contents
Application("Variable") = "Esto no es un objeto"
Set Application("Objeto") = Server.CreateObject("ADODB.Connection")
Application.Contents.Remove("Variable")
If IsObject(Application.Contents(Item)) Then
Response.Write Item & " = Esto es un objeto.<BR>"
Else
Response.Write Item & " = " & Application.Contents(Item) & "<BR>"
End If
Next
%>
Y este sería el resultado:
Nombre del item Contenido
-----------------------------------------
Objeto = Esto es un objeto.
Como su nombre indica, este método elimina TODOS los items de la colección Application.Contents().
En este caso no hay que referencia ningun nombre ni número.
<%
Application.Contents.RemoveAll( )
%>
Salvo en muy especiales ocasiones, no es recomendable utilizar el objeto Application para que contenga valores variables para cada usuario. Es preferible dejar este objeto para valores fijos, y utilizar el objeto Session para los valores variables, ya que no se interfiere con los de otros usuarios.
<%
Application.Lock
Application.UnLock
%>
'---fichero global.asa
Sub Session_OnEnd
Sub Application_OnStart
Sub Application_OnEnd
</SCRIPT>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Sub Session_OnStart
End Sub
End Sub
End Sub
End Sub
Como puedes ver, contiene cuatro rutinas que sirven para detectar cuando está activa la aplicación y cuando un usuario abre o termina una sesión. El suceso (o evento, es lo mismo) Application_OnStart, sólo se disparará cuando el primer usuario solicite una página contenida en el directorio virtual de la aplicación, y a continuación se dispara Session_OnStart. Cuando otros usuarios soliciten otras páginas, o la misma, ya no se disparará el primer evento, sino sólo el Session_OnStart, que se activará tantas veces como usuarios haya conectados a la aplicación. Cuando un usuario cierra la aplicación voluntariamente, o bien transcurre un tiempo predefinido sin hacer ninguna transacción, se disparará Session_OnEnd, y cuando se haya desconectado el último usuario, lo hará Application_OnEnd.
Dentro de las rutinas que controlan los eventos del objeto Application, Application_OnStart y Application_OnEnd puede programarse cualquier acción que convenga realizar en ese momento. Por ejemplo, asignar valores fijos para toda la aplicación, declarar el texto de algunos mensajes en función de la fecha o la hora, etc., etc... o simplemente no hacer nada.