ASP

Introducción

 

            Active Server Pages (ASP) es una nueva tecnología creada por Microsoft, destinada a la creación de sitios web. No se trata de un lenguaje de programación en sí mismo (ya que los ASP se pueden programar en VBScript, JavaScript, PerlScript o en varios otros lenguajes),  sino de un marco sobre el que construir aplicaciones basadas en Internet.

 

            La tecnología ASP apareció por primera vez (version 1.0) con el servidor Internet Information Server 3.0 de Microsoft en Diciembre de 1996. La versión 4.0 de IIS (el Option Pack para NT 4.0) incluye la versión 2.0 de ASP,
y la versión 5.0 de IIS, distribuída con Windows 2000, incluye ASP 3.0.

 

            Los predecesores de ASP incluyen CGI y Perl. Las tecnologías de Microsoft predecesoras de ASP incluyen IDC y WebDB. Otras tecnologías que compiten con ASP son ColdFusion (Allaire), JavaServer Pages (Sun Microsystems) y PHP (de libre distribución bajo Open System).

 

            Algunas de las características de ASP son:

 

·         ASP es totalmente gratuito para Microsoft Windows NT o Windows 95/98.

·         El código ASP se puede mezclar con el código HTML en la misma página (no es necesario compilarlo por separado).

·         El código ASP se puede escribir con un simple editor de textos como el Bloc de notas de Windows o UltraEdit.

·         Cómo el código ASP se ejecuta en el servidor, y produce como salida código HTML puro, su resultado es entendible por todos los navegadores existentes.

·         Mediante ASP se pueden manipular bases de datos (consultas, actualizaciones, borrados, etc.) de prácticamente cualquier plataforma, con tal de que proporcione un driver OLEDB u ODBC.

·         ASP permite usar componentes escritos en otros lenguajes (C++, Visual Basic, Delphi), que se pueden llamar desde los guiones ASP.

·         Sin modificar la instalación, los guiones ASP se pueden programar en JScript o VBScript (este último es el más usado porque mas programadores lo dominan), pero también existen otros lenguajes, como Perlscript y Rexx, que se pueden emplear para programar ASP.

·         Se ha portado a la plataforma Java por Chili!Soft y Halcyon Software, lo que permite que ASP sea usado en casi cualquier sistema operativo.

 

Ventajas

 

            Las principales ventajas que ofrece ASP son:

 

1.      Permite acceder a bases de datos de una forma sencilla y rápida.

2.      Las páginas se generan dinámicamente mediante el código de scripts, (guiones).

3.      El código de script se ejecuta en el servidor, y no se depende del navegador que se emplee.

4.      Desde una página ASP se pueden ejecutar servidores OLE en el servidor de web, lo que abre un abanico de nuevas posibilidades sólo accesibles previamente usando CGI y filtros ISAPI: acceso a base de datos, acceso a ficheros, logging en el sistema, envío de correo, etc.

 

La tecnología ASP se emplea principalmente para crear aplicaciones interactivas que funcionan en Internet.

Qué necesito para programar ASP

 

            Para programar ASP se necesita, como mínimo, un servidor de web (Microsoft Personal Web Server para Windows 95/98 o Internet Information Server 3.0/4.0/5.0 para Windows NT 4.0) y un simple editor de textos como el Bloc de notas de Windows para escribir los guiones.

 

            Si se quiere acceder a una base de datos, se puede usar una conexión ODBC, una conexión OLE-DB, o una ruta física. Como plataforma de bases de datos, una simple base de datos hecha en Microsoft Access es suficiente[1].

 

Cómo se usa

 

            Existen dos formas de incluir código ASP en una página web:

 

1.      Escribiéndolo entre las etiquetas <SCRIPT> y </SCRIPT>. En el atributo LANGUAGE podemos indicar en que lenguaje se está programando. Para distinguir el código de script que se ejecuta en el servidor del que se ejecuta en el cliente, se emplea el atributo RUNAT=”Server”:

<SCRIPT LANGUAGE=”VBScript” RUNAT=”Server”>

‘ código

</SCRIPT>

2.      Escribiéndolo entre los delimitadores <% y %>. Si se usa este atajo, por defecto se usará el lenguaje especificado por el usuario en el Registro de Opciones de ASP. Si se quiere utilizar otro lenguaje, se debe indicar al inicio de la página con la instrucción :

<%@ Language=”Lenguaje” %>

Modelo de objetos ASP

 

            ASP incluye seis objetos nativos, que podemos usar en nuestros programas. Al contrario que otros modelos de objetos (como DOM, por ejemplo), los objetos ASP no forman una jerarquía. Únicamente se relacionan entre sí de forma lógica, no a través de una relación padre-hijo. El diagrama de la Figura 1 muestra las relaciones.

 

Figura 1

 

Request

 

            Este objeto nos facilita toda la información sobre la petición HTTP que un usuario realiza a nuestro servidor (informa sobre todo lo que llega al servidor desde el cliente). Puede incluir parámetros obtenidos a partir de un formulario HTML mediante los métodos POST o GET, cookies y certificados que posea el cliente, y las variables del servidor. Esta tabla muestra las colecciones, propiedades, y métodos a que podemos acceder con este objeto.

 

Request

Colecciones[2]

Propiedades

Métodos

QueryString

Form

ServerVariables

Cookies

ClientCertificate

TotalBytes

BinaryRead

 

Response

 

            Este objeto maneja toda la información que se envía desde el servidor al cliente. Incluye el envío de información directamente al navegador del cliente, redirección del navegador hacia otra URL o fijar el valor de las cookies[3]. Esta tabla muestra las colecciones, propiedades, y métodos a que podemos acceder con este objeto.

Response

Colecciones

Propiedades

Métodos

Cookies

Buffer

CacheControl

Charset

ContentType

Expires

ExpiresAbsolute

IsClientConnected

PICS

Status

AddHeader

AppendToLog

BinaryWrite

Clear

End

Flush

Redirect

Write

 

Server

 

            Este objeto proporciona propiedades y métodos que están relacionados con el servidor donde se ejecuta nuestra aplicación. Normalmente se usa para crear una instancia de un componente ActiveX[4] o fijar el tiempo de validez de un guión. Esta tabla muestra las propiedades, y métodos a que podemos acceder con este objeto.

Server

Colecciones

Propiedades

Métodos

 

ScriptTimeout

CreateObject

HTMLEncode

MapPath

URLEncode

 

Application

 

            Este objeto se emplea para compartir información entre todos los usuarios de una aplicación (existe un único objeto Application que comparten todos los usuarios). Una aplicación tiene un periodo de vida, como cualquier otro programa. Cuando se inicia se ejecuta el evento OnStart y cuando termina se produce el evento OnEnd.
Esta tabla muestra las colecciones, propiedades, y métodos a que podemos acceder con este objeto.

 

Application

Colecciones

Métodos

Eventos

Contents

StaticObjects

Lock

Unlock

OnStart

OnEnd

 

Session

 

            A cada cliente que solicita una página ASP se le asigna un objeto Session. La información almacenada en este objeto es individual para cada usuario, y se conserva el valor al pasar de una página a otra. Se crea un objeto Session la primera vez que un cliente solicita una página y se destruye, por defecto, veinte minutos después de que se haya realizado la última petición. El tiempo de vida es configurable. Cuando se inicia una sesión se produce el evento OnStart y cuando termina se produce OnEnd. Esta tabla muestra las colecciones, propiedades, y métodos a que podemos acceder con este objeto.

Session

Colecciones

Propiedades

Métodos

Eventos

Contents

StaticObjects

CodePage

LCID

SessionID

Timeout

Abandon

OnStart

OnEnd

 

ObjectContext

 

Este objeto se emplea para gestionar transacciones[5].
La tabla muestra los métodos y eventos a que podemos acceder con este objeto.

ObjectContext

Colecciones

Propiedades

Métodos

Eventos

 

 

SetComplete

SetAbandon

OnTransactionCommit

OnTransactionAbort

 

Ejemplos de código

 

Sentencias de control y repetición

 

Ejemplo 1

            Muestra  la hora y la fecha actuales. Según la hora del día muestra un mensaje. Muestra otro mensaje de forma aleatoria. En la Figura 2 podemos observar el resultado que se obtiene al solicitar esta página.

 

<HTML>

<HEAD>

<TITLE>Servidor educado</TITLE>

</HEAD>

<BODY BGCOLOR="Wheat">

<FONT COLOR="Teal" SIZE="5"><B>

El servidor educado le informa que son las <% = Time %> del día <% = Date %>

</B></FONT>

<P><B>

<% If Hour(Now) < 8 Then %>

Estas no son horas de conectarse, estoy durmiendo!

<% ElseIf Hour(Now) < 15 Then %>

Estoy trabajando, no moleste.

<% Else %>

La tarde es para descansar, ver la tele, dormir, ...

<% End If

 

   Response.Write("<BR><BR>")

   Randomize

   i = Int(Rnd * 4)

   Select Case i

     Case 0

                Response.Write("Hace buen día, ¿ verdad ?")

     Case 1

       Response.Write("Me parece que hoy lloverá.")

     Case 2

       Response.Write("Esta tarde llueve seguro.")

     Case 3

       Response.Write("Que sol mas espléndido.")

   End Select

%>

</B>

</BODY>

</HTML>

 

Figura 2

 

Ejemplo 2

            Muestra el valor de una serie de variables que posee el servidor y que proporcionan información interesante sobre el servidor y sobre la conexión realizada por el cliente. En la Figura 3 se muestra la página que obtiene al solicitarla con un navegador Netscape Communicator 4.6. En la Figura 4 tenemos la misma página cuando se solicita con Microsoft Internet Explorer 4.0.

 

<HTML>

<HEAD>

<TITLE>Variables del servidor</TITLE>

</HEAD>

<BODY BGCOLOR="#FFFFFF">

<%

   Response.Write("<PRE>" & vbCrLf)

   Response.Write("ALL_HTTP: " & Request.ServerVariables("ALL_HTTP") & "<BR>")

   Response.Write("</PRE>" & vbCrLf)

   Response.Write("<HR>" & vbCrLf)

   Response.Write("HTTP_ACCEPT_LANGUAGE: " & Request.ServerVariables("HTTP_ACCEPT_LANGUAGE") & "<BR>")

   Response.Write("HTTP_USER_AGENT: " & Request.ServerVariables("HTTP_USER_AGENT") & "<BR>")

   Response.Write("REMOTE_ADDR: " & Request.ServerVariables("REMOTE_ADDR") & "<BR>")

   Response.Write("REMOTE_HOST: " & Request.ServerVariables("REMOTE_HOST") & "<BR>")

   Response.Write("URL: " & Request.ServerVariables("URL") & "<BR>")

   Response.Write("<HR>" & vbCrLf)

   If InStr(Request.ServerVariables("HTTP_ACCEPT_LANGUAGE"), "es") > 0 Then

     Response.Write("Se elige el idioma español")

   Else

     Response.Write("Se elige otro idioma")

   End If

%>

</BODY>

</HTML>

Las siguientes 2 figuras muestran el resultado obtenido con distintos navegadores.

 

Figura 3

 

Figura 4

 

Recuperación de los datos de un formulario

 

Ejemplo 3

            Obtiene los datos introducidos por un usuario y los muestra en una página. La página que solicita los datos es (fichero 3f.html):

 

<HTML>

<HEAD>

<TITLE>Formulario de entrada</TITLE>

</HEAD>

<BODY BGCOLOR="#FFFFFF">

<FORM NAME="Formulario" ACTION="3r.asp" METHOD="POST">

Nombre: <INPUT TYPE="TEXT" NAME="nombre" SIZE="20"><BR>

Apellidos: <INPUT TYPE="TEXT" NAME="apellidos" SIZE="40"><BR>

Sexo:<BR>

H <INPUT TYPE="RADIO" NAME="sexo" VALUE="varon"> M <INPUT TYPE="RADIO" NAME="sexo" VALUE="hembra">

<BR><BR>

<INPUT TYPE="SUBMIT" VALUE="Enviar">

</FORM>

</BODY>

</HTML>

 

            En la etiqueta FORM, el atributo ACTION contiene el nombre de la página de respuesta al formulario. La página de respuesta que muestra los datos introducidos en el formulario es (fichero 3r.asp):

 

<HTML>

<HEAD>

<TITLE>Datos obtenidos del formulario</TITLE>

</HEAD>

<BODY BGCOLOR="#FFFFFF">

Su nombre es <% = Request.Form("nombre") %>

<BR>

Sus apellidos son <% = Request.Form("apellidos") %>

<BR>

Su sexo es <% = Request.Form("sexo") %>

</BODY>

</HTML>

 

Acceso a base de datos

 

Ejemplo 4

            Accede a una base de datos realizada en Microsoft Access que contiene una tabla Personal con los campos Nombre, Apellidos, Edad y Ciudad. Consulta las personas que viven en la ciudad de Alicante y las muestra en una tabla. Se accede mediante ODBC (el nombre asignado a la conexión es curso) a la base de datos.

 

<HTML>

<HEAD>

<TITLE>Acceso a base de datos</TITLE>

</HEAD>

<BODY BGCOLOR="#FFFFFF">

Personal de la oficina de Alicante:

<BR>

<TABLE BORDER="3">

<TR>

  <TD><B>Nombre</B></TD>

  <TD><B>Apellidos</B></TD>

  <TD><B>Edad</B></TD>

</TR>

<%

   'Abre la conexion con la base de datos a traves de una conexion ODBC

   Set con = Server.CreateObject("ADODB.Connection")

   con.Open "curso"

 

   'Ejecuta un sentencia SQL de consulta

   sql = "SELECT * FROM Personal WHERE Ciudad = 'Alicante'"

   Set result = con.Execute(sql)

 

   'Recorre todas las filas del resultado

   Do While Not result.EOF

     ' Muestra la fila actual

     Response.Write("<TR>" & vbCrLf)

     Response.Write("<TD>" & result("Nombre") & "</TD>" & vbCrLf)

     Response.Write("<TD>" & result("Apellidos") & "</TD>" & vbCrLf)

     Response.Write("<TD>" & result("Edad") & "</TD>" & vbCrLf)

     Response.Write("</TR>" & vbCrLf)

     'Pasa a la siguiente fila

     result.MoveNext

   Loop

 

   'Libera memoria

   result.Close

   Set result = Nothing

   con.Close

   Set con = Nothing

%>

</TABLE>

</BODY>

</HTML>

 

Ejemplo 5

            Inserción en una base de datos a partir de un formulario. Se emplea la misma base de datos que la del ejemplo 4.

 

            El código del formulario para la entrada de datos es (fichero 5f.html):

 

<HTML>

<HEAD>

<TITLE>Formulario de entrada</TITLE>

</HEAD>

<BODY BGCOLOR="#FFFFFF">

<FORM NAME="Formulario" ACTION="5r.asp" METHOD="POST">

<CENTER>

<TABLE BORDER=0>

<TR>

  <TD>Nombre: </TD>

  <TD><INPUT TYPE="TEXT" NAME="nombre" SIZE="20"></TD>

</TR>

<TR>

  <TD>Apellidos: </TD>

  <TD><INPUT TYPE="TEXT" NAME="apellidos" SIZE="40"></TD>

</TR>

<TR>

  <TD>Edad: </TD>

  <TD><INPUT TYPE="TEXT" NAME="edad" SIZE="2" MAXLENGTH="2"></TD>

</TR>

<TR>

  <TD>Ciudad: </TD>

  <TD><SELECT NAME="ciudad">

        <OPTION VALUE="Alcoy">Alcoy

        <OPTION VALUE="Alicante">Alicante

        <OPTION VALUE="Elche">Elche

        <OPTION VALUE="Orihuela">Orihuela

      </SELECT></TD>

</TR>

</TABLE>

<BR><BR>

<INPUT TYPE="SUBMIT" VALUE="Enviar">&nbsp;&nbsp;<INPUT TYPE="RESET" VALUE="Borrar">

</CENTER>

</FORM>

</BODY>

</HTML>

 

            El código del ASP que realiza la inserción en la base de datos es (fichero 5f.asp):

 

<HTML>

<HEAD>

<TITLE>Inserción en la base de datos</TITLE>

</HEAD>

<BODY BGCOLOR="#FFFFFF">

<CENTER>

<B>

<%

   nombre = Request.Form("nombre")

   apellidos = Request.Form("apellidos")

   edad = Request.Form("edad")

   ciudad = Request.Form("ciudad")

 

   'Abre la conexion con la base de datos a traves de una conexion ODBC

   Set con = Server.CreateObject("ADODB.Connection")

   con.Open "curso"

 

   'Ejecuta un sentencia SQL de consulta

   sql = "INSERT INTO Personal (Nombre, Apellidos, Edad, Ciudad) “
   sql = sql & “VALUES('" & nombre & "', '"

   sql = sql & apellidos & "', " & edad & ", '" & ciudad & "')"

   con.Execute(sql)

 

   If Err = 0 Then

     Response.Write "Inserción correcta."

   Else

     Response.Write "Error en Inserción."

   End If

 

   'Libera memoria

   con.Close

   Set con = Nothing

%>

</B>

</CENTER>

</BODY>

</HTML>

 

Código script de cliente y de servidor en la misma página

 

Ejemplo 6

            Diferencia entre el código que se ejecuta en el cliente y en el servidor. A continuación aparece el código fuente de una página ASP, el código que recibe el cliente una vez ejecutada la página en el servidor y como se visualiza en el navegador. El código que se ejecuta en el servidor aparece en negritas. Este código no llega al cliente.

 

<HTML>

<HEAD>

<TITLE>Mezcla de código script de cliente y de servidor</TITLE>

</HEAD>

<BODY BGCOLOR="beige" TEXT="darkseagreen">

<% VariableServidor = 6%>

<P>

Este valor se imprime por HTML: <FONT COLOR="chocolate">10</FONT>

<P>

Este valor se imprime por código de servidor:
<FONT COLOR="chocolate"><% = VariableServidor %></FONT>

<SCRIPT LANGUAGE="JavaScript">

var VariableCliente;

 

VariableCliente = <% = VariableServidor %> + 1;

document.write('<P>Este valor se imprime por código de cliente:
<FONT COLOR="chocolate">' + VariableCliente + '</FONT>');
// OJO : las 2 líneas escritas arriba deben escribirse en una sola línea.

</SCRIPT>

</BODY>

</HTML>

 

El resultado que se ha obtenido al evaluar el código de servidor aparece en negritas.

 

<HTML>

<HEAD>

<TITLE>Mezcla de código script de cliente y de servidor</TITLE>

</HEAD>

<BODY BGCOLOR="beige" TEXT="darkseagreen">

 

<P>

Este valor se imprime por HTML: <FONT COLOR="chocolate">10</FONT>

<P>

Este valor se imprime por código de servidor:
<FONT COLOR="chocolate">6</FONT>

<SCRIPT LANGUAGE="JavaScript">

var VariableCliente;

 

VariableCliente = 6 + 1;

document.write('<P>Este valor se imprime por código de cliente: <FONT COLOR="chocolate">' + VariableCliente + '</FONT>');

</SCRIPT>

</BODY>

</HTML>

 

è Visualización en el navegador.

 

Figura 5

 

Direcciones de Internet

 

AspTracker.com: http://asptracker.com/

4GuysFromRolla.com: http://www.4guysfromrolla.com/

Allaire: http://www.allaire.com

ASP 101: http://www.asp101.com/

ASP Today: http://www.asptoday.com/

Chili!Soft, Inc.: http://www.chilisoft.net/

Halcyon Software: http://www.halcyonsoft.com/

Kathi’s Place: Active Server Pages (ASP):

http://www.attitude.com/users/kathi/asp/tools.html

LearnASP.com: http://www.learnasp.com/

PHP: http://www.php.net/

ServerObjects Inc.: http://www.serverobjects.com/products.htm

 

Bibliografía

 

Llibre, Juan; Francis, Brian y otros (2000), Beginnning Active Server Pages 3.0, (Wrox Press, Ltd.)

 

Fedorov, Alex; Francis, Brian y otros (1998), Professional Active Server Pages 2.0, (Wrox Press, Ltd.)


Homer, Alex; Sussman, David (1998), Professional MTS and MSMQ with VB and ASP, (Wrox Press, Ltd.)

 

Whatis.com Inc. (1999), “What is…Active Server Pages (ASP (a definition))”, en http://www.whatis.com/asp.htm

 

Whitcomb, Valerie (1997), “Client and Server Scripting in Web Pages”, en http://msdn.microsoft.com/library/techart/msdn_viscript.htm

Créditos


Autor original : Sergio Luján Mora, Laboratorio Multimedia de la Universidad de Alicante, Alicante, España

Editado y Revisado por : Juan T. Llibre, Universidad Nacional Pedro Henríquez Ureña, Santo Domingo,
República Dominicana;  http://asptracker.com y http://aspespanol.com

Comentarios a : aspespanol@aspespanol.com



[1] Para acceder a los ficheros .mdb de Access desde un ASP no es necesario tener instalado Microsoft Access. Sólo hace falta el driver ODBC correspondiente.

[2] Una colección es una estructura de datos, similar a un vector, pero que almacena los valores junto con una clave de acceso. Para recuperar los valores hay que indicar la clave correspondiente.

[3] Una cookie es un mensaje enviado a un navegador desde un servidor. El navegador almacena el mensaje en un fichero de texto y se lo devuelve al servidor cada vez que realiza una petición. El principal uso de las cookies es poder identificar a los usuarios.

[4] Conjunto de tecnologías de Microsoft, basado en OLE (Object Linking and Embedding) y COM (Component Object Model).

[5] Una transacción es un conjunto de acciones que, o se realizan todas ellas o no se realiza ninguna de ellas. Una transacción tiene que cumplir el test ACID (Atomic, Consistent, Isolated y Durable).