Objeto Server
Este objeto es el que nos va a ofrecer una serie métodos para crear instancias de objetos en el servidor, modificar los parámetros del servidor
Propiedades
Las propiedades que nos ofrece son:
.ScriptTimeOut
Permite configurar el tiempo de ejecución que se les concede a los scripts (códigos ASP). Este tiempo se establece para evitar así la ejecución infinita de un código, que por ejemplo, entre en un bucle infinito.
Para modificarlo le daremos el tiempo de ejecución en segundos:
Server.ScriptTimeOut = número de segundos
El valor por defecto es de 90 segundos. Hay que tener en cuenta que el valor del ScriptTimeOut se configura inicialmente en el servidor. Si el servidor tiene establecido un tiempo mínimo de X segundos, nosotros por mucho que pongamos valores menores a X no podremos alterar dicho valor.
Métodos
Los métodos que nos ofrece son:
.CreateObject
Este método sirve para crear instancias de objetos dentro del servidor.
Para ello, el único requisito es que el objeto esté instalado
en el servidor y que conozcamos su ProgId, un identificador único de
cada objeto.
Para crear el objeto nos valdrá con poner:
Set miObjeto = Server.CreateObject("ProgId")
Como se puede ver, a la hora de trabajar con objetos y para asignar el valor a una variable necesitamos de la sentencia Set. Con lo que respecta al ProgId, su formato es el siguiente:
[Compañía.]Objeto[.Versión]
Donde tanto la compañía, como la versión son opcionales. Algunos ejemplos de ProgId son:
| Persits.MailSender | Vemos que aparece la compañía Persits y el objeto MailSender. |
| ADODB.DataBase | Para el manejo de bases de datos dentro del modelo ADO de Microsoft |
| Hexillion.HexLookup | El componente HexLookup de la compañía Hexillion. |
El ámbito de ejecución del objeto será la página ASP en la que se encuentre instanciado. Es por ello que es bastante recomendable el que cuando dejemos de utilizar el objeto pongamos su valor a Nothing, para que así pueda ser descargado de memoria en el servidor.
Set miObjeto = Nothing
En el caso que necesitemos que el ámbito del objeto se alargue durante toda la sesión del usuario deberemos de instanciarlo en el OnSession_Start del fichero global.asa y eliminarlo en el OnSession_End. A la hora de instanciarlo deberemos de asignarselo a una variable de sesión. Veamos el ejemplo:
Set Session("miObjeto") = Server.CreateObject("ProgId")
Este método lo podremos usar por defecto, ya que se asume que es del objeto Server.
Set miObjeto = CreateObject("ProgId")
.Execute
Este método sirve para ejecutar un archivo ASP. Podríamos decir que es como una invocación a un método. Y nos sirve como alternativa a los includes.
Para usarle pondremos:
Server.Execute (fichero)
El fichero deberá de venir expresado en una dirección relativa o absoluta (en este caso necesitaremos del MapPath) al documento actual. Una excepción al nombre del fichero es que este no podrá venir expresado en una cadena del tipo Request. Desde la página ASP llamada tendremos acceso a los objetos de aplicación, de sesión, variables del servidor, Request y Response de la página desde la que se la llamo: Hay que destacar que mediante este método podremos realizar includes dinámicos, los cuales no podíamos hacer con la directiva include.
Server.Execute (variableAleatoria)
.GetLastError
Este método nos devuelve el objeto Error que contiene la descripción del último error producido dentro de la página. Cuando se produce un error dentro de la página, al usuario se le envía una de las páginas de error. A dichas páginas se transfiere toda la información de sesión de la página en la que se produjo el error gracias al método Transfer.
Desde el servidor podemos modificar el contenido de las páginas de error y adaptarlo a nuestro gusto. En el IIS las páginas estan en \iishelp\common\500-100.asp
.HTMLEncode
Nos permite codificar una cadena a código HTML.
CadenaHTML = Server.HTMLEncode(cadenaDeTexto)
Sobre todo afecta a las entidades, es decir, en HTML no "podemos" poner camión, sino que debemos de poner camió. O por ejemplo, si nuestro texto contiene los simbolos de mayor o menor, también los convertirá a %lt; y >.
.MapPath
A través de este método codificaremos los directorios absolutos de nuestro servidor. El que nosotros pongamos, por ejemplo
<!-- #include file="\db\midb.mdb" -->
No significa que realmente el directorio db esté situado en el directorio raíz del ordenador. Ya que lo más probable es que estemos trabajando en un directorio virtual que realmente sea d:\webs\sito5\db\midb.mdb Esto no debería de preocuparnos mucho, ya que en muchos casos podemos trabajar con direcciones relativas o absolutas a la raíz de nuestra web. Pero existen determinados casos en los que se necesite saber la localización exacta del fichero. Por ejemplo si accedemos a una base de datos sin DSN.
Para solucionarlo usaremos el Server.MapPath. Con el ejemplo de las bases de datos sería:
CadenaDeConexion = "Driver={Microsoft Access Driver (*.mdb)};Dbq="
& Server.MapPath("db/midb.mdb") & ";"
.URLEncode
Este método nos ayuda a codificar las cadenas URL, ya que en muchos casos podemos introducir símbolos que el navegador no reconozca (espacio en blanco, acentos, ). Por ejemplo el NetScape no reconoce el espacio en blanco, y este debe de ir codificado como %20.
Es decir, que el poner:
Response.Redirect("http://www.aulambra.com/s.asp?dato=programacion asp")
No nos funcionaría. Si bien hay que decir, que ciertos navegadores realizan automáticamente las conversiones. Para salvarnos las espaldas podemos utilizar el método Server.URLEncode:
Response.Redirect (
Server.URLEncode("http://www.aulambra.com/s.asp?dato=programacion asp")
)
.Transfer
Este método nos permite transferir toda la información de estado de un fichero a otro. Cuando hablamos de información de control nos referimos a instancias de objetos, variables, Es decir, estamos pasando el control del flujo a una segunda página, la cual recibirá toda la información que existía en la primera. La diferencia con respecto al Redirect es que no se realiza la petición de una nueva página, sino que simplemente se cambia de contexto.