Introducción: Information Server 3.0 de Microsoft en Diciembre de 1996. La Versión 4.0 de IIS (El Option Pack
Introducción: Information Server 3.0 de Microsoft en Diciembre de 1996. La Versión 4.0 de IIS (El Option Pack
Introducción: Information Server 3.0 de Microsoft en Diciembre de 1996. La Versión 4.0 de IIS (El Option Pack
Introduccin
Active Server Pages (ASP) es una nueva tecnologa creada por Microsoft, destinada a la creacin de sitios web. No se trata de un lenguaje de programacin 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 tecnologa ASP apareci por primera vez (version 1.0) con el servidor Internet Information Server 3.0 de Microsoft en Diciembre de 1996. La versin 4.0 de IIS (el Option Pack para NT 4.0) incluye la versin 2.0 de ASP, y la versin 5.0 de IIS, distribuda con Windows 2000, incluye ASP 3.0. Los predecesores de ASP incluyen CGI y Perl. Las tecnologas de Microsoft predecesoras de ASP incluyen IDC y WebDB. Otras tecnologas que compiten con ASP son ColdFusion (Allaire), JavaServer Pages (Sun Microsystems) y PHP (de libre distribucin bajo Open System). Algunas de las caractersticas de ASP son: ASP es totalmente gratuito para Microsoft Windows NT o Windows 95/98. El cdigo ASP se puede mezclar con el cdigo HTML en la misma pgina (no es necesario compilarlo por separado). El cdigo ASP se puede escribir con un simple editor de textos como el Bloc de notas de Windows o UltraEdit. Cmo el cdigo ASP se ejecuta en el servidor, y produce como salida cdigo HTML puro, su resultado es entendible por todos los navegadores existentes. Mediante ASP se pueden manipular bases de datos (consultas, actualizaciones, borrados, etc.) de prcticamente 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 instalacin, los guiones ASP se pueden programar en JScript o VBScript (este ltimo es el ms usado porque mas programadores lo dominan), pero tambin 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
1. Permite acceder a bases de datos de una forma sencilla y rpida. 2. Las pginas se generan dinmicamente mediante el cdigo de scripts, (guiones). 3. El cdigo de script se ejecuta en el servidor, y no se depende del navegador que se emplee. 4. Desde una pgina ASP se pueden ejecutar servidores OLE en el servidor de web, lo que abre un abanico de nuevas posibilidades slo accesibles previamente usando CGI y filtros ISAPI: acceso a base de datos, acceso a ficheros, logging en el sistema, envo de correo, etc.
La tecnologa ASP se emplea principalmente para crear aplicaciones interactivas que funcionan en Internet. Qu necesito para programar ASP
Para programar ASP se necesita, como mnimo, 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 conexin ODBC, una conexin OLE-DB, o una ruta fsica. Como plataforma de bases de datos, una simple base de datos hecha en Microsoft Access es suficiente[1].
Cmo se usa
Existen dos formas de incluir cdigo ASP en una pgina web: 1. Escribindolo entre las etiquetas <SCRIPT> y </SCRIPT>. En el atributo LANGUAGE podemos indicar en que lenguaje se est programando. Para distinguir el cdigo 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> cdigo </SCRIPT> 2. Escribindolo 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 pgina con la instruccin :
<%@ Language=Lenguaje %>
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 jerarqua. nicamente se relacionan entre s de forma lgica, no a travs de una relacin padre-hijo. El diagrama de la Figura 1 muestra las relaciones.
Figura 1 Request
Este objeto nos facilita toda la informacin sobre la peticin HTTP que un usuario realiza a nuestro servidor (informa sobre todo lo que llega al servidor desde el cliente). Puede incluir parmetros obtenidos a partir de un formulario HTML mediante los mtodos POST o GET, cookies y certificados que posea el cliente, y las variables del servidor. Esta tabla muestra las colecciones, propiedades, y mtodos a que podemos acceder con este objeto. Colecciones[2] QueryString Form ServerVariables Cookies ClientCertificate
Response
Mtodos BinaryRead
Este objeto maneja toda la informacin que se enva desde el servidor al cliente. Incluye el envo de informacin directamente al navegador del cliente, redireccin del navegador hacia otra URL o fijar el valor de las cookies[3]. Esta tabla muestra las colecciones, propiedades, y mtodos a que podemos acceder con este objeto. Colecciones Response Propiedades Mtodos
Cookies
Server
Este objeto proporciona propiedades y mtodos que estn relacionados con el servidor donde se ejecuta nuestra aplicacin. Normalmente se usa para crear una instancia de un componente ActiveX[4] o fijar el tiempo de validez de un guin. Esta tabla muestra las propiedades, y mtodos a que podemos acceder con este objeto. Colecciones Server Propiedades ScriptTimeout Mtodos CreateObject HTMLEncode MapPath URLEncode
Application
Este objeto se emplea para compartir informacin entre todos los usuarios de una aplicacin (existe un nico objeto Application que comparten todos los usuarios). Una aplicacin 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 mtodos a que podemos acceder con este objeto. Colecciones Contents StaticObjects
Session
A cada cliente que solicita una pgina ASP se le asigna un objeto Session. La informacin almacenada en este objeto es individual para cada usuario, y se conserva el valor al pasar de una pgina a otra. Se crea un objeto Session la primera vez que un cliente solicita una pgina y se destruye, por defecto, veinte minutos despus de que se haya realizado la ltima peticin. El tiempo de vida es configurable. Cuando se inicia una sesin se
produce el evento OnStart y cuando termina se produce OnEnd. Esta tabla muestra las colecciones, propiedades, y mtodos a que podemos acceder con este objeto.
Session
Mtodos Abandon
ObjectContext
Este objeto se emplea para gestionar transacciones[5]. La tabla muestra los mtodos y eventos a que podemos acceder con este objeto.
ObjectContext
Colecciones
Propiedades
Ejemplos de cdigo
Sentencias de control y repeticin Ejemplo 1
Muestra la hora y la fecha actuales. Segn la hora del da muestra un mensaje. Muestra otro mensaje de forma aleatoria. En la Figura 2 podemos observar el resultado que se obtiene al solicitar esta pgina. <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 da <% = 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 da, 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 esplndido.") End Select %> </B> </BODY> </HTML>
Figura 2 Ejemplo 2
Muestra el valor de una serie de variables que posee el servidor y que proporcionan informacin interesante sobre el servidor y sobre la conexin realizada por el cliente. En la Figura 3 se muestra la pgina que obtiene al solicitarla con un navegador Netscape Communicator 4.6. En la Figura 4 tenemos la misma pgina 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 espaol") 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
Obtiene los datos introducidos por un usuario y los muestra en una pgina. La pgina 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 pgina de respuesta al formulario. La pgina 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 conexin 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
Insercin en una base de datos a partir de un formulario. Se emplea la misma base de datos que la del ejemplo 4. El cdigo 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"> <INPUT TYPE="RESET" VALUE="Borrar"> </CENTER> </FORM> </BODY> </HTML> El cdigo del ASP que realiza la insercin en la base de datos es (fichero 5r.asp):
<HTML> <HEAD> <TITLE>Insercin 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) VALUES('" & nombre & "','" & apellidos & "','" & edad & "','" & ciudad & "')" con.Execute(sql) If Err = 0 Then Response.Write "Insercin correcta." Else Response.Write "Error en Insercin." End If 'Libera memoria con.Close Set con = Nothing %> </B> </CENTER> </BODY> </HTML>
Cdigo script de cliente y de servidor en la misma pgina Ejemplo 6
Diferencia entre el cdigo que se ejecuta en el cliente y en el servidor. A continuacin aparece el cdigo fuente de una pgina ASP, el cdigo que recibe el cliente una vez ejecutada la pgina en el servidor y como se visualiza en el navegador. El cdigo que se ejecuta en el servidor aparece en negritas. Este cdigo no llega al cliente. <HTML>
<HEAD> <TITLE>Mezcla de cdigo script de servidor</TITLE> </HEAD> <BODY BGCOLOR="beige" TEXT="darkseagreen"> <% VariableServidor = 6%> <P> Este valor se imprime por COLOR="chocolate">10</FONT>
<P>
cliente
de
HTML:
<FONT
Este valor se imprime por cdigo de servidor: <FONT COLOR="chocolate"><% = VariableServidor %></FONT>
<SCRIPT LANGUAGE="JavaScript">
</SCRIPT> </BODY> </HTML> El resultado que se ha obtenido al evaluar el cdigo de servidor aparece en negritas. <HTML> <HEAD> <TITLE>Mezcla de cdigo script de servidor</TITLE> </HEAD> <BODY BGCOLOR="beige" TEXT="darkseagreen">
cliente
de
<P> Este valor se imprime por HTML: COLOR="chocolate">10</FONT> <P> Este valor se imprime por cdigo de servidor: <FONT COLOR="chocolate">6</FONT>
<SCRIPT LANGUAGE="JavaScript"> var VariableCliente;
<FONT
VariableCliente = 6 + 1; document.write('<P>Este valor se imprime por cdigo de cliente: <FONT COLOR="chocolate">' + VariableCliente + '</FONT>'); </SCRIPT> </BODY>
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/ Kathis 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
Bibliografa
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 isActive 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
Crditos
Autor original : Sergio Lujn Mora, Laboratorio Multimedia de la Universidad de Alicante, Alicante, Espaa Editado y Revisado por : Juan T. Llibre, Universidad Nacional Pedro Henrquez Urea, Santo Domingo, Repblica 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
Una coleccin 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.
[2]
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 peticin. El principal uso de las cookies es poder identificar a los usuarios.
[3]
Conjunto de tecnologas de Microsoft, basado en OLE (Object Linking and Embedding) y COM (Component Object Model).
[4]
Una transaccin es un conjunto de acciones que, o se realizan todas ellas o no se realiza ninguna de ellas. Una transaccin tiene que cumplir el test ACID (Atomic, Consistent, Isolated y Durable).
[5]