[Indice]


El objeto Server

Este objeto proporciona acceso a distintas funciones de utilidad para el programador de aplicaciones internet.

El objeto Server tiene 1 propiedad y 7 métodos:


PROPIEDADES

Server.ScriptTimeout = Tiempo

Esta propiedad especifica el tiempo, medido en segundos, de que dispondrá una página o script para ejecutarse. El valor por defecto es de 90 segundos, y suele ser suficiente incluso para páginas largas y complicadas. Si en este tiempo no se ha concluido el procesamiento de todo el código, probablemente se debe a que ha entrado en un bucle sin salida, el servidor está bloqueado o intentando obtener un dato del cliente sin conseguirlo. Salvo raras ocasiones, no conviene aumentarlo, ya que varios procesos incompletos simultáneos, posiblemente dejarán el servidor "colgado". No confundir esta propiedad con Session.Timeout que es el tiempo dado a una sesión, y que comienza a contar cuando todo el código ya ha sido interpretado y ejecutado.

Por ejemplo, si se quiere aumentar el tiempo de ejecución a 100 segundos, se escribe:

<% Server.ScriptTimeout = 100 %>


METODOS

Server.CreateObject("ObjectID")

Este es, probablemente, uno de los métodos más importantes de ASP, ya que permite al usuario crear instancias a otros objetos (componentes activeX o componentes creados por el usuario), que al igual que los ya existentes intrínsecamente en ASP, tienen sus propias colecciones, eventos, métodos y propiedades asociadas con ellos. Tiene un argumento obligatorio, ObjectID, que especifica el tipo de objeto que se va a crear.

El ejemplo siguiente crea dos objetos: DB que es del tipo Connection (conexión) a una DB y RS que es un RecordSet (conjunto de registros extraido de una DB). Los nombres asignados a los objetos son libres, y puedes llamarlos como quieras:

<%
Set DB = Server.CreateObject("ADODB.Connection")
Set RS = Server.CreateObject("ADODB.RecordSet")
%>

Seguramente te habrás fijado en que hay una instrucción que hasta ahora no habíamos visto: Set. En efecto, hasta el momento para asignar un valor a una variable, simplemente escribíamos una igualdad, por ejemplo:
      Nuevocod = Request.Form("NuevoCod").
Esto se puede hacer siempre que la variable vaya a recibir como valor un string, un número, el resultado de una función, una propiedad o un método, pero en el caso de recibir un objeto hay que anteponer la instrucción Set, tal como se muestra.

Otro tipo de objetos muy utilizados son los FileSystem y TextStream que sirven para crear, leer y escribir ficheros de texto. Por ejemplo:

<%
Set FS = Server.CreateObject("Scripting.FileSystemObject")
Set Fichero = FS.CreateTextFile("D:\ASP\texto.txt", True)
%>

Dada su utilidad, en otras páginas de la guia veremos ejemplos más extensos de estos y otros objetos creados con el método Server.CreateObject().


Server.Execute("Ruta")

Permite llamar desde una página ASP a otra página ASP. Cuando la página llamada concluye su proceso, el control vuelve a la página llamadora. Es un efecto parecido al que se consigue con los ficheros de inclusión, ya explicados en otro punto. Básicamente se diferencia de los include en que no pasa a formar parte del mismo fichero en el momento de ser procesado, sino que se ejecuta un segundo fichero por separado y con otro nombre.

No debe confundirse con los métodos Server.Transfer o Response.Redirect ya que con ellos el control no vuelve a la página llamadora, y el proceso concluye en la página llamada.

Por ejemplo:

'---Fichero llamador.asp
<HTML>
<HEAD><TITLE>PRUEBA</TITLE></HEAD>
<BODY>
Esto es la parte 1 que se escribe desde el fichero Llamador <BR>
<% Server.Execute("llamado.asp") %>
Esto es la parte 3 que se escribe desde el fichero Llamador <BR>
</BODY>
</HTML>

'---Fichero llamado.asp
<HTML>
<HEAD><TITLE>PRUEBA</TITLE></HEAD>
<BODY>
<%
Response.Write "Esto es la parte 2 que se escribe desde el fichero Llamado <BR>"
%>
</BODY>
</HTML>

Y este sería el resultado:

Esto es la parte 1 que se escribe desde el fichero Llamador
Esto es la parte 2 que se escribe desde el fichero Llamado
Esto es la parte 3 que se escribe desde el fichero Llamador


Server.GetLastError( )

Ver el objeto ASPError

Server.HTMLEncode("String")

Con este método se puede convertir un string codificado en HTML, y por tanto ejecutable por los navegadores, en código solamente visible pero no ejecutable por los navegadores. Es decir, se trata de obtener, partiendo de HTML normal, un tipo de código que aunque el navegador lo muestra como si fuese HTML, en realidad es ASCII puro. Es útil para escribir manuales como éste. Veamos un ejemplo:

<% Response.Write Server.HTMLEncode("Esto es un break <BR> que no funciona") %>

Este sería el código interno obtenido, visible en formato HTML pero no ejecutable como tal:
Esto es un break &lt;BR&gt; que no funciona

Y esto es lo que mostrará es navegador:
Esto es un break <BR> que no funciona


Server.MapPath("Ruta")

Traza un mapa de rutas físicas (absolutas) partiendo de rutas virtuales (relativas) de ficheros que se encuentren dentro del árbol de directorios declarados como parte de la estructura del servidor web. Por ejemplo:

<HTML>
<HEAD><TITLE>PRUEBA</TITLE></HEAD>
<BODY>
La ruta de fichero1.asp es: <% Response.Write Server.MapPath("fichero1.asp") %>
La ruta de fichero2.asp es: <% Response.Write Server.MapPath("\fichero2.asp") %>
La ruta de fichero3.asp es: <% Response.Write Server.MapPath("asp\fichero3.asp") %>
La ruta de fichero4.asp es: <% Response.Write Server.MapPath("\") %>
</BODY>
</HTML>

Y este sería el resultado:

La ruta de fichero1.asp es: D:\Inetpub\wwwroot\fichero1.asp
La ruta de fichero2.asp es: D:\Inetpub\wwwroot\asp\fichero2.asp
La ruta de fichero3.asp es: D:\Inetpub\wwwroot\asp\fichero3.asp
La ruta de fichero4.asp es: D:\Inetpub\wwwroot


Server.Transfer("Ruta")

Permite llamar desde una página ASP a otra página ASP. Cuando la página llamada concluye su proceso, el control no vuelve a la página llamadora, y concluye en la página llamada.

No confundir con el método Response.Redirect que funciona de modo similar, pero partiendo de otro objeto. El proceso de transferencia de una página a otra es completo, incluyendo todos los objetos y variables que hayan sido creados en la página llamadora como si se tratase de la misma, aunque con otro nombre de página.

Por ejemplo:

'---Fichero llamador.asp
<HTML>
<HEAD><TITLE>PRUEBA</TITLE></HEAD>
<BODY>
Esto es la parte 1 que se escribe desde el fichero Llamador <BR>
<%
Session("prueba") = "Variable de sesión creada desde el fichero Llamador <BR>"
Server.Transfer("llamado.asp")
%>
Esto es la parte 3 que se escribe desde el fichero Llamador <BR>
</BODY>
</HTML>

'---Fichero llamado.asp
<HTML>
<HEAD><TITLE>PRUEBA</TITLE></HEAD>
<BODY>
<%
Response.Write Session("prueba") & "<BR>"
Response.Write "Esto es la parte 2 que se escribe desde el fichero Llamado <BR>"
%>
</BODY>
</HTML>

Y este sería el resultado:

Esto es la parte 1 que se escribe desde el fichero Llamador
Variable de sesión creada desde el fichero Llamador
Esto es la parte 2 que se escribe desde el fichero Llamado

Server.URLEncode("String")

Este método puede convertir un string conteniendo una dirección URL en formato ASCII a formato URL-encoded. Veamos un ejemplo:

<% Response.Write Server.URLEncode("http://sestud.uv.es/manual.esp") %>

Este sería el código interno obtenido URL-encoded, que es precisamente con el que trabajan internamente los navegadores, aunque habitualmente se vea de otra forma (formato ASCII).

http%3A%2F%2Fsestud%2Euv%2Ees%2Fmanual%2Eesp

Como puedes ver, la conversión lo que hace es transformar cualquier cosa que no sea una letra o un número en su código hexadecimal separados por el signo %

Hex   Dec   ASCII
---------------------
3A    58      :
2F    47      /
2E    46      .

[Indice]