ASP

A continuación le ofrecemos algunos de los conceptos básicos de programación en ASP. Con estos elementos podremos pasar a propuestas más complejas.

Las marcas de código <% … %>

Todo lo que se escriba en una página ASP es por defecto código HTML que se envía directo al navegador del cliente, es decir, lo mismo que una página web. Si se desea escribir código a ejecutar en el servidor, hay que encerrarlo entre las marcas <% y %>.

Por ejemplo, fíjese en el siguiente fragmento de página ASP:

<%
nombre = Request.Form("nombre")
passw = Request.Form("passw")
if nombre = "root" and passw = "489602" then
boss = True
else
boss = False
End if
%>
<form method=POST action = p1.asp>
<p>Escriba su nombre:</p>
<p><input type="text" name="nombre"></p>
<p><input type="submit" name="enviar" value=" enviar "></p>
</form>

Cuando se solicite la página descrita en el anterior fragmento de código, ocurrirá lo siguiente:

  1. En primer lugar se preprocesa la página ASP en busca de códigos Server Side Include (por ejemplo <!--#include "pagina.html" -->). Esto hace que con una sentencia como la anterior se puedan incluir unas páginas en otras.
  2. Se ejecuta el código de servidor. El código HTML que aparezca se considera que debe ser mostrado directamente.
  3. Se envía el resultado al navegador del cliente, pero excluyendo el código de servidor. De esa forma el cliente no puede ver el código ejecutable de la página ASP.

Las marcas <SCRIPT> y </SCRIPT>

Una alternativa a las marcas <% y %> son las marcas <script> y </script>.

Por ejemplo, el código del ejemplo anterior quedaría de la siguiente forma:

<SCRIPT LANGUAGE=VBScript RUNAT=Server>
nombre = Request.Form("nombre")
passw = Request.Form("passw")
if nombre = "root" and passw = "489602" then
boss = True
else
boss = False
Endif
</SCRIPT>
<form method=POST action = p1.asp>
<p>Escriba su nombre:</p>
<p><input type="text" name="nombre"></p>
<p><input type="submit" name="enviar" value=" enviar "></p>
</form>

La marca <SCRIPT> se utiliza también para el código del lado de cliente (el JavaScript que se ejecuta en el navegador del cliente), por lo que es necesario el modificador RUNAT=Server con el fin de indicar que hay que ejecutarlo en el servidor. Además, existe el modificador LANGUAGE, en el que indicamos el lenguaje en el que hemos escrito el código. Son válidos JavaScript (o JScript que es lo mismo), VBScript y PerlScript.

Elección del lenguaje de programación

Si utiliza para el código las marcas <SCRIPT> y </SCRIPT>, puede elegir el lenguaje de programación mediante el modificador LANGUAGE. Esto le permite tener scripts en distintos lenguajes dentro de la misma página ASP. Si desa elegir el lenguaje del código entre las marcas <% y %>, debe comenzar la página ASP con una sentencia como la que sigue:

<%@ LANGUAGE=JavaScript %>

Esto hará que todo el código que se escriba entre <% y %> se considere en JavaScript. El lenguaje por defecto (el utilizado si no se escribe la sentencia anterior) es el Visual Basic Script (VBScript).

Intercalar HTML entre el código ejecutable

Cuando se utilizan las marcas <% y %> para encerrar el código ejecutable, es posible intercarlar HTML. Considere el siguiente código que corresponde a una página ASP completa. Puede copiar el código y guardarlo con el nombre p1.asp (se requiere este nombre para que funcione el formulario) en un directorio de su dominio que tenga permisos de ejecución de scripts y una aplicación definida.

<html>
<head>
<title>Pequeña prueba</title>
</head>
<body>
<%
nombre = Request.Form("nombre")
if nombre = "" then
%>
<form method=post action = p1.asp>
<p>Escriba su nombre:</p>
<p><input type="text" name="nombre"></p>
<p><input type="submit" name="enviar" value=" enviar "></p>
</form>
<% else %>
Hola <b> <%= nombre%></b>. Bienvenido al mundo del ASP.
<%End if %>
</body>
</html>

Fíjese cómo se muestra una sentencia if then-else-end if que se encuentra fragmentada, y entre sus partes aparece código HTML. La interpretación es clara: si la condición es cierta, se mostrará el código HTML que existe entre el if then y el else (el que corresponde a un formulario). Si la condición es falsa, se mostrará el que existe entre el else y el End if (una frase).

Intercalar variables en el HTML

La construcción <%= variable %> intercalada entre el código HTML, hace que se muestre el valor de dicha variable. Por ejemplo, en el script anterior aparece la frase

Hola <b> <%= nombre%></b>. Bienvenido al mundo del ASP.

que hace que se muestre en negrita el valor de la variable nombre, que es lo que se encuentra en el formulario.

Formularios que se llaman a sí mismos

Los datos de los formularios son gestionados por el programa que se incluye en la sección ACTION de la marca FORM. Como las páginas ASP son a la vez páginas web y ejecutables en el servidor, podemos tener en ellas formularios que se llaman a sí mismos. Curioso, y en algunos casos muy útil, como veremos a continuación. Las ventajas de esto son:

  • Compacto. Tenemos todo en un único archivo.
  • Permite aprovechar las variables del objeto Session para que el formulario tenga “memoria” de los valores introducidos la vez anterior, y así mostrarlos por defecto.

Un ejemplo de formulario que se llama a sí mismo es el ejemplo mostrado anteriormente. Dijimos que había que guardarlo con el nombre p1.asp porque es el nombre que aparece en el ACTION del formulario. La lógica que sigue dicho script es la habitual en este tipo de casos:

  • Primero se obtienen las variables del formulario como si hubiese sido enviado por el usuario.
  • Después se comprueba si el ASP ha sido llamado directamente o si se trata de un envío de formulario (llamada del ASP a sí mismo). En el ejemplo, la comprobación se hace examinando la variable que contiene el dato a introducir en el formulario.
  • Si el ASP ha sido llamado directamente, entonces lanzamos el código que muestra el formulario.
  • Si el ASP ha sido invocado al pulsar el botón del formulario, entonces ejecutamos el código que procesa el formulario.

Es decir, el script ASP que se llama a si mismo tiene dos caras: En una muestra la página inicial y en la otra el resultado de procesar dicha página.