Академический Документы
Профессиональный Документы
Культура Документы
Conceptos bsicos
ASP es una tecnologa desarrollada por MS para crear pginas web de contenido dinmico apoyndose en scripts ejecutados en el servidor. Bsicamente una pgina ASP es una mezcla entre una pgina HTML y un programa que da como resultado una pgina HTML que es enviada al cliente (navegador). Estos scripts o programas pueden en ASP ser escritos en uno de estos dos lenguajes de programacin VBScript o JavaScript, pero el ms extendido es VBScript, por eso centraremos todo este manual en VBScript y todas las posibilidades que l tiene.
ASP es una tecnologa que pertenece a la parte servidor, por esto no es necesario que el cliente o navegador la soporte ya que se ejecuta en el servidor, s que deberemos buscar un servidor que nos soporte este tipo de tecnologa para que nuestras pginas corran correctamente. Hay que destacar que ASP es una tecnologa propietaria de Microsoft, y que el uso de esta tecnologa implica el uso de los productos de Microsoft: MS Internet Information System y MS Windows en el servidor.
El cdigo ASP ejecutado tiene dos partes: la primera imprime "Parte de ASP" y la segunda es un bucle que se ejecuta 10 veces de 0 a 9, por cada vez que se ejecuta se escribe una lnea, la variable i contiene el nmero de lnea que se est escribiendo. No importa si no entiende muy bien el programa este ejemplo solo es para ilustrar como se intercala el cdigo HTML y el cdigo ASP.
Sintaxis
La sintaxis del VBScript es muy parecida a la de Visual Basic, ya que de hecho VBScript es un subconjunto de Visual Basic. Las caractersticas ms destacables son:
No hay distincin entre maysculas y minsculas. Las instrucciones terminan con un retorno de carro. No es necesario definir las variables antes de usarlas, pero por claridad lo haremos. Las cadenas de texto se delimitan entre comillas dobles. " Los comentarios empiezan con una comilla simple ' y terminan al final de lnea.
Variables
Una variable es un contenedor de informacin, en el que podemos meter nmeros enteros, nmeros decimales, carcteres... el contenido de las variables se puede leer y se puede cambiar durante la ejecucin de una pgina ASP. En ASP no es necesario definir las variables antes de usarlas. Tampoco tienen tipos, es decir que una misma variable puede contener un nmero y luego puede contener carcteres.
<!-- Manual de ASP de WebEstilo.com --> <html> <head> <title>Ejemplo de ASP</title> </head> <body> <% Dim a,b,c
En este ejemplo hemos definido tres variables, a, b y c y con la instruccinResponse.Write hemos impreso el valor que contenan, insertando un salto de lnea entre ellas. Existen 2 tipos de variables, las variables locales que solo pueden ser usadas dentro de funciones y las variables globales que tienen su mbito de uso fuera de las funciones.
Aritmticos
Los operadores de VBScript son muy parecidos a los de Visual Basic puesto que es un lenguaje que procede de este ltimo. Si usted conoce este lenguaje le resultaran familiares y fciles de reconocer. Estos son los operadores que se pueden aplicar a las variables y constantes numricas.
Operador + * /
Ejemplo
Descripcin Suma dos nmeros Resta dos nmeros Multiplica dos nmeros Divide dos nmeros
5 + 6 7 - 9 6 * 3 4 / 8
Mdulo
7 mod 2 8 ^ 4
Exponente
<!-- Manual de ASP de WebEstilo.com --> <html> <head> <title>Ejemplo de ASP</title> </head> <body> <% Dim a,b a = 8 b = 3 Response.Write( a + b & "<br>") Response.Write( a - b & "<br>") Response.Write( a * b & "<br>") Response.Write( a / b & "<br>") Response.Write( a ^ b & "<br>") %> </body> </html>
Comparacin
Los operadores de comparacin son usados para comparar valores y as poder tomar decisiones.
a es igual b a es distinto b a es menor que b a es mayor que b a es menor o igual que b a es mayor o igual que b
<!-- Manual de ASP de WebEstilo.com --> <html> <head> <title>Ejemplo de ASP</title> </head> <body> <% Dim a,b a = 8 b = 3 c = 3 Response.Write( (a = b) & "<br>") Response.Write( (a <> b) & "<br>") Response.Write( (a < b) & "<br>") Response.Write( (a > b) & "<br>") Response.Write( (a >= c) & "<br>") Response.Write( (b <= c) & "<br>") %> </body> </html>
Lgicos
Los operadores lgicos son usados para evaluar varias comparaciones, combinando los posibles valores de estas.
Operador
Nombre
Ejemplo
Devuelve cierto cuando: Devuelve verdadero cuando ambas condiciones son verdaderas. Devuelve verdadero cuando al menos una de las dos es verdadera. Devuelve verdadero cuando solo una de las dos es verdadera. Niega el valor de la expresin.
and
or
(7>2) or (2<4)
xor
XOR
not
No
<!-- Manual de ASP de WebEstilo.com --> <html> <head> <title>Ejemplo de ASP</title> </head> <body> <% Dim a,b,c a = 8 b = 3 c = 3 Response.Write( ((a = b) and (c > b)) & "<br>") Response.Write( ((a = b) or (b = c)) & "<br>") Response.Write( (not (b <= c)) & "<br>") %> </body> </html>
Condicionales
Las sentencias condicionales nos permiten ejecutar o no unas ciertas instrucciones dependiendo del resultado de evaluar una condicin. Las ms frecuentes son la instruccin if y la instruccin select. Sentencia if ... else
La sentencia if ejecuta una serie de instrucciones u otras dependiendo de la condicin que le pongamos. Probablemente sea la instruccin ms importante en cualquier lenguaje de programacin.
<!-- Manual de ASP de WebEstilo.com --> <html> <head> <title>Ejemplo de ASP</title> </head> <body> <% Dim a,b a = 8 b = 3 if a < b then Response.Write("a es menor que b") else Response.Write("a no es menor que b") end if %> </body> </html>
En este ejemplo la condicin no es verdadera por lo que se ejecuta la parte de cdigo correspondiente al else.
Con la sentencia select case podemos ejecutar unas u otras instrucciones dependiendo del valor de una variable, en el ejemplo anterior, dependiendo del valor de la variable posicion se ejecuta el bloque 1 cuando el valor es "arriba", el bloque 2 cuando el valor es "abajo" y el bloque 3 si no es ninguno de los valores anteriores.
Bucles
Los bucles nos permiten iterar conjuntos de instrucciones, es decir repetir la ejecucin de un conjunto de instrucciones mientras se cumpla una condicin. Sentencia while
<% while condicin intrucciones a ejecutar. wend %>
Mientras la condicin sea cierta se reiterar la ejecucin de las instrucciones que estn dentro del while.
<!-- Manual de ASP de WebEstilo.com --> <html> <head> <title>Ejemplo de ASP</title> </head> <body> Inicio<BR> <% Dim i i=0 while i<10 Response.Write("El valor de i es " & i & "<br>") i=i+1 wend %> Final<BR> </body> </html>
Sentencia for
<% for variable=inicial to final intrucciones a ejecutar. next %>
<!-- Manual de ASP de WebEstilo.com --> <html> <head> <title>Ejemplo de ASP</title> </head> <body> Inicio<BR> <% Dim i for i=0 to 9 Response.Write("El valor de i es " & i & "<br>") next %> Final<BR> </body> </html>
Con la instruccin for indicamos un rango de valores entre los que se mover la variable de iteracin, desde el valor indicado al principio hasta el valor que se indica al final, en este caso del 0 al 9. Dentro de la instruccin for se ejecutarn las instrucciones tomando i los valores del rango.
Salida
La nica manera que tenemos en ASP para producir una salida es usando el objeto del servidor Response, este objeto tiene varios mtodos y concretamente el mtodoWrite(cadena de texto) nos permite producir una salida que ira al navegador.
Response.Write
<% Response.Write(cadena de texto) %>
Si la variable a imprimir no es de texto, tampoco hay ningn problema porque esta es convertida al instante a texto.
Response.Write(variable) %>
<!-- Manual de ASP de WebEstilo.com --> <html> <head> <title>Ejemplo de ASP</title> </head> <body> <% Dim tex,num,fecha tex="variable de texto" num=45345 fecha=date Response.Write("Texto simple<br>") Response.Write(tex & "<br>") Response.Write("Un numero:" & num & "<br>") Response.Write("Una fecha:" & fecha & "<br>") %> <%=num%> </body> </html>
Manejo de cadenas
Dado el uso del lenguaje ASP el tratamiento de cadenas es muy importante, existen bastantes funciones para el manejo de cadenas, a continuacin explicaremos las ms usadas. 1.
len(cadena). Nos devuelve el nmero de carcteres de una cadena. 2. split(cadena,separador). Divide una cadena en varias usando un carcter separador. 3. mid(cadena, inicio, longitud). Devuelve una subcadena de otra, empezando por inicio y de longitudlongitud. 4. trim(cadena). Elimina los espacios iniciales y finales de una cadena. 5. instr(cadena1, cadena2). Busca la cadena2 dentro de cadena1 indicndonos la posicin en la que se encuentra. 6. replace(texto, cadena1, cadena2). Reemplaza la cadena1 por la cadena2 en el texto. 7. left(cadena, num). Devuelve los num caracteres de cadena empezando por la izquierda.
<!-- Manual de ASP de WebEstilo.com --> <html> <head> <title>Ejemplo de ASP</title> </head> <body> <% Dim palabras,i Response.Write(len("12345") & "<br>") i=0 palabras=split("Esto es una prueba"," ") Response.Write(palabras(0)&"<br>") Response.Write(palabras(1)&"<br>") Response.Write(palabras(2)&"<br>") Response.Write(palabras(3)&"<br><br>")
Response.Write(mid("Devuelve una subcadena de otra",9,3) & "<br><br>") if trim(" Cadena ") = "Cadena" then Response.Write("Iguales<br><br>") end if Response.Write(instr("Busca la palabra dentro de la frase", "palabra") & "<br><br>") Response.Write(replace("Un pez de color verde, como verde es la hierba.","verde","rojo") & "<br>") %> </body> </html>
Procedimientos y Funciones
El uso de procedimientos y funciones nos da la capacidad de agrupar varias instrucciones bajo un solo nombre y poder llamarlas a estas varias veces desde diferentes sitios, ahorrndonos la necesidad de escribirlas de nuevo. Procedimiento
<% sub Nombre(parametro1, parametro2,...) instruccin1; instruccin2; instruccin3; instruccin4; end sub %>
Las funciones son iguales que los procedimientos pero estas nos permiten devolver un valor. Funcin
<% function Nombre(parametro1, parametro2,...) instruccin1; instruccin2; instruccin3; instruccin4;
<!-- Manual de ASP de WebEstilo.com --> <html> <head> <title>Ejemplo de ASP</title> </head> <body> <% function media_aritmetica(a, b) Dim media media=(a + b)/2 media_aritmetica = media end function Response.Write(media_aritmetica(4,6) & "<br>") Response.Write(media_aritmetica(3242,524543) & "<br>") %> </body> </html>
Libreras
El uso de libreras es tremendamente til, nos permiten agrupar varias funciones y variables en un mismo fichero, de manera que luego podemos incluir esta librera en distintas pginas y disponer de esas funciones fcilmente.
<!-- Manual de ASP de WebEstilo.com --> <% sub CabeceraPagina %> <FONT SIZE="+1">Esta cabecera estar en todas sus pginas.</FONT><BR> <hr> <% end sub sub PiePagina %> <hr> <FONT SIZE="-1">Este es el pie de pgina.</FONT><BR> Autor: Joaquin Gracia <% end sub %>
Ahora vamos a crear 2 pginas que usan la librera definida anteriormente para conseguir que las dos paginas tengan la misma cabecera y pie de pagina. La instruccin para incluir una librera en nuestra pgina es <!--
#include
<!-- Manual de ASP de WebEstilo.com --> <html> <head> <title>Ejemplo de ASP</title> </head> <body> <!-- #include file="libreria01.asp" --> <% call CabeceraPagina %> Pgina 1 <BR><BR><BR><BR><BR> Contenido blalbl blalb alb<BR><BR> ms cosas...<BR><BR> fin<BR><BR> <% call PiePagina %> </body> </html> <!-- Manual de ASP de WebEstilo.com --> <html> <head> <title>Ejemplo de ASP</title> </head> <body> <!-- #include file="libreria01.asp" --> <% call CabeceraPagina %> Esta es otra pgina<BR><BR> completamente distinta<BR><BR> pero comparte el pie y la cabecera con la otra.<BR><BR> <% call PiePagina %> </body> </html>
Al pulsar el botn Enviar el contenido de cuadro de texto es enviado a la pgina que indicamos en el atributo ACTION de la etiqueta FORM. Para recoger los valores que han sido pasados a travs de un formulario, tenemos que usar el objeto del servidor Request y dependiendo de como han sido pasado, si por GET o por POST, usaremos QueryString o Form. Si hemos usado el mtodo GET,Request.QueryString("Nombre variable") y si hemos usado el mtodo POSTRequest.Form("Nombre variable").
<!-- Manual de ASP de WebEstilo.com --> <html> <head> <title>Ejemplo de ASP</title> </head> <body> <H1>Ejemplo de procesado de formularios</H1> El nombre que ha introducido es: <%=Request.QueryString("nombre")%> <br> </FORM> </body> </html>
Mtodo POST
Ahora usaremos el mtodo POST, a diferencia del mtodo GET con el mtodoPOST los datos enviados no se ven en la barra del navegador. Para recogerlos deberemos usarRequest.Form("Nombre variable")
<!-- Manual de ASP de WebEstilo.com --> <html> <head> <title>Ejemplo de ASP</title> </head> <body> <H1>Ejemplo de procesado de formularios</H1> <FORM ACTION="procesa3.asp" METHOD="POST"> Introduzca su nombre:<INPUT TYPE="text" NAME="nombre"><BR> Introduzca sus apellidos:<INPUT TYPE="text" NAME="apellidos"><BR> <INPUT TYPE="submit" VALUE="Enviar"> </FORM> </body> </html>
procesa3.asp
<!-- Manual de ASP de WebEstilo.com --> <html> <head> <title>Ejemplo de ASP</title> </head> <body> <H1>Ejemplo de procesado de formularios</H1>
En este ejemplo creamos una tabla llamada prueba con 3 campos: un campo identificador, que nos servir para identificar unvocamente una fila con el valor de dicho campo, otro campo con el nombre de una persona y por ltimo un campo con el apellido de la persona.
Para conectarnos a la Base de datos creamos un objeto de ADO de tipo conexin para ello usamos Server.CreateObject, una vez que tenemos el objeto, le indicamos el driver que tiene que usar, en este caso el de Access y en donde se encuentra la base de datos. Para cerrar la conexin con la base de datos usaremos el mtodo Close y seguidamente como ya no usaremos el objeto lo destruimos asignndole nothing.
En este ejemplo hemos ejecutado una consulta SQL a la base de datos con el mtodoExecute del objeto conexin, esto nos devuelve un objeto de tipo RecordSet del cual podemos obtener los datos de la tabla. El mtodo EOF nos permite saber si hemos llegado al final del RecordSet, y el mtodoMoveNext nos permite avanzar haca adelante en el RecordSet, de esta manera recorremos todo el RecordSet mostrando los datos que este contiene. Y finalmente cerramos la conexin con la base de datos y destruimos el RecordSet y el objeto Connection.
Insercin de registros
Hasta ahora nos hemos conectado a una base de datos y hemos hecho consultas a la misma, ahora presentaremos como introducir nuevo registros en la base de datos. Para ello usaremos un formulario y en el ACTION del FORM <FORM ACTION="programaASP"> indicaremos que debe ser procesado una pagina ASP, esta pgina lo que har ser introducir los datos del formulario en la base de datos.
ejem07d.asp
<!-- Manual de ASP de WebEstilo.com --> <html> <head> <title>Ejemplo de ASP</title> </head> <body> <H1>Ejemplo de uso de bases de datos con ASP y ADO</H1> <form action="procesar.asp" method="post"> <TABLE> <TR> <TD>Nombre:</TD> <TD><INPUT TYPE="text" NAME="nombre" SIZE="20" MAXLENGTH="30"></TD> </TR> <TR> <TD>Apellidos:</TD> <TD><INPUT TYPE="text" NAME="apellidos" SIZE="20" MAXLENGTH="30"></TD> </TR> </TABLE> <INPUT TYPE="submit" NAME="accion" VALUE="Grabar"> </FORM> <hr> <% Dim oConn,strSQL, objRS Set oConn = Server.CreateObject("ADODB.Connection") oConn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\webestilo\db\datos.mdb")) strSQL = "SELECT Nombre, Apellidos FROM prueba" Set objRS = oConn.Execute(strSQL)
%> <TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1> <TR><TD> Nombre</TD><TD> Apellidos </TD></TR> <% while (not objRS.Eof) Response.Write("<tr><td> " & objRS("Nombre") & "</td><td> " & objRS("Apellidos") & " </td></tr>") objRS.MoveNext wend oConn.Close set objRS = nothing set oConn = nothing %> </table> </body> </html>
procesar.asp
<% Dim oConn,strSQL Set oConn = Server.CreateObject("ADODB.Connection") oConn.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\webestilo\db\datos.mdb")) strSQL = "insert into prueba (nombre, apellidos) values ('" & Request.Form("nombre") & "','" & Request.Form("apellidos") & "')" oConn.Execute(strSQL) oConn.Close set oConn = nothing Response.Redirect("ejem07d.asp") %>
La primera pgina ASP ejem07d.asp es un formulario que nos permite introducir nombre y apellido para aadirlo a la base de datos, seguido de una consulta que nos muestra el contenido de la tabla prueba. El formulario llama a la pagina procesar.asp que aadir los datos a la tabla. La segunda pgina procesar.asp se conecta a la base de datos y aade un nuevo registro con la instruccin insert del lenguaje de base de datos SQL. Una vez el registro se ha aadido se vuelve a cargar la pgina ejem07d.asp