Active Server Pages                 ASP: Active Page Server1.- INTRODUCCIÓNASP (Active Server Page, página activa en el se...
Active Server Pages 2.- Modelo de Páginas ASP       2.1 - Cliente -> ServidorLas páginas ASP comienzan a ejecutarse, cuand...
Active Server Pages4.- Software Necesario.Para ejecutar una página .asp necesitamos un servidor WEB, y para ello tenemosdo...
Active Server Pages    5.-MARCAS DE CÓDIGO <%............%>ASP viene de forma nativa con dos motores de comandos, Visual B...
Active Server PagesVer ejemplos:1-Escribe-Texto    •   1Escribe-Texto-BVS.asp nos muestra cómo escribir texto        vari...
Active Server Pages6.1.- TIPOS DE DATOSExisten muchos tipos de datos que se pueden almacenar dentro de una variable.   1) ...
Active Server PagesArchivo: Código 3/Error2.asp<%@ Language=VBScript %><% miprimeravariable = 2 %><HTML> <BODY>  La variab...
Active Server PagesNormas que se suelen utilizar en VBscript para declarar variables y así saber qué tipo devariable es si...
Active Server Pages              arrDias(2) = "Martes"              arrDias(3) = "Miércoles"              arrDias(4) = "Ju...
Active Server Pages1.- La primera función es VartType, que se utiliza de la siguiente manera:VarType(nombre_variable) dev...
Active Server Pages            /            5 Mod 3 =>2            Exponención 3^ 3= 3*3*3            Concatenación & ...
Active Server Pages  strSalida = "Su media aritmética es " & sngAritmetica & _      " y su media geométrica es " & sngGeom...
Active Server Pages                 End if        Else                 Cuarto bloque de código        End ifNo se debe uti...
Active Server Pages8.5.- INSTRUCCIONES Do Until………LoopEs muy parecida a la anterior , la única diferencia es que el ciclo ...
Active Server Pages9.- SUBRUTINASLas subrutinas también llamados procedimientos realizan accionesFormato:        Sub nombr...
Active Server PagesDiferencia entre un procedimiento y una función :           o Los procedimientos no generan ningún resu...
Active Server Pagessi queremos modificar el pie de página, bastará con modificar un archivo yautomáticamente se reflejará ...
Active Server Pages                      OBJETOS ASPCada script ASP dispone desde el momento en que es ejecutado de una se...
Active Server PagesEsto nos sacará por pantalla el literal con formato de cabecera Se ha pasado de rosca.Ya que todo el có...
Active Server Pagesque queda en un buffer (espacio intermedio de almacenamiento) del servidor. Elmétodo Response.Flush env...
Active Server Pages2.-OBJETO REQUEST Este objeto se utiliza para recuperar los valores de un campo de formulario. Esteobje...
Active Server Pages       seleccionado el usuario. Su valor será 1 si se trata de un parámetro       monovaluado y 0 si es...
Active Server Pagesconsiste en datos del cliente que pueden resultar muy útiles. Por ejemplo, el tipo deexplorador que se ...
Active Server PagesLECTURA DE ENCABEZADOS HTTP CON Request.ServerVariables1.- Para desplegar una lista exacta de los encab...
Active Server Pages                     VARIABLES DE AMBIENTE ÚTILES VARIABLE DE AMBIENTE                              DES...
Active Server Pages2. Realiza una pagina que nos muestre un menú desplegable con variasdirecciones de Internet, de forma q...
Active Server Pages<p>Esta es <a href="mipagina.html">mi página</a> </p><% else %><p>Lo siento. Mi página ha desaparecido<...
Active Server Pages<title>Pequeña prueba del objeto Session</title></head><body><%nombre = Request.Form("nombre")if nombre...
Active Server Pages4.-OBJETO APPLICATIONEs prácticamente igual que el objeto Session y sirve para lo mismo (guardarvariabl...
Active Server Pagescuando acceda el primer usuario (creación del objeto Application). Asimismo,podemos escribir código de ...
Active Server Pages¿Cuánto dura una sesión y cómo funciona?Lógicamente el servidor web no puede saber si el usuario está t...
Active Server Pages               OBJETOS DEL SERVIDOR1.-COMPONENTES ACTIVEXLos comoponentes ActiveX se han diseñado para ...
Active Server Pages<OBJECT> y <PARAM>, que se corresponden a las operaciones de inserción delcomponente y paso de sus pará...
Active Server Pagesestándar ODBC (Open DataBase Connectivity). A continuación se muestra el códigoque tendría que colocar ...
Active Server Pages2.-FUENTES DE DATOS ODBCComo se ha escrito anteriormente Open Data Base Connectivity es una utilidad de...
Active Server PagesPara declarar una base de datos ODBC haremos doble clic en el icono Fuentes deDatos ODBC que encontrare...
Active Server PagesEn esta ventana elegiremos el driver adecuado para la tecnología de la base de datosque queremos tratar...
Active Server PagesNombre del origen de datos: es un nombre simbólico de nuestra base de datos, seráel que utilicemos desd...
Active Server PagesADO está formado por varios objetos organizados de forma jerárquica (cada uno deellos con sus métodos y...
Active Server PagesPROPIEDADES1.- ConnectionString: Especifica la referencia a la base de datos con la quequeremos conecta...
Active Server Pages<%Set conexion = Server.CreateObject("ADODB.Connection")conexion.ConnectionString = "DSN=Alumnos"conexi...
Active Server Pagesde Cursor) y el tipo de bloqueo que realizaremos sobre la base de datos con el fin deevitar que dos o m...
Active Server PagesIndica el tipo de bloqueo que se realiza sobre la base de datos cuando modificamos unRecordset, a fin d...
Active Server PagesTanto los cursores, como los cerrojos utilizados por ADO deben encontrarsedefinidos como constantes en ...
Active Server PagesAcrónimo de End Of File. Vale TRUE si estamos en el último registro y FALSE sino. Se usa mucho como con...
Active Server PagesMueve el cursor al siguiente registro4.- MovePreviousMueve el cursor al registro anteriorEjemplo de un ...
Active Server PagesEl recordset rstClientes representa a nuestra tabla de clientes que, entre otros, tienelos campos Provi...
Active Server Pagesúltimo invocamos el método Update para que se haga efectiva la incorporación delnuevo registro con los ...
Upcoming SlideShare
Loading in...5
×

Tutorial de ASP

2,725

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
2,725
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
56
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Tutorial de ASP

  1. 1. Active Server Pages ASP: Active Page Server1.- INTRODUCCIÓNASP (Active Server Page, página activa en el servidor), es la propuesta de Microsoftpara crear páginas Web dinámicas.Se puede combinar con páginas HTML, secuencias de comandos y componentesActiveX, para crear páginas y aplicaciones web interactivas.El sentido de ASP, es liberar espacio en el servidor: Las páginas HTML son estáticasy si el servidor tuviese que tenerlas guardadas ocuparían un espacio inmenso. Lasolución es tener una fuente de datos y dependiendo de las peticiones del clientegenerar las páginas en ese momento. Cuando el cliente desconecta desaparecen dichaspáginas.ASP, se basa en la programación para las redes TC-IP que se conoce con el nombrede programación cliente- servidor que consiste en desdoblar un programa en dospartes, una se ejecutará en el cliente y otra parte en el servidor.La parte cliente se encarga del interfaz e interacción con el usuario y la parte servidorse encarga de obtener y manipular los datos.Hasta ahora nosotros hemos creado aplicaciones con código HTML y algunas concódigo ejecutable, a través de JavaScript, pero siempre en el cliente, con nuestronavegador. A partir de ahora crearemos programas que serán ejecutados por elservidor y cuya salida se envía al navegador del cliente. Página 1 de 48
  2. 2. Active Server Pages 2.- Modelo de Páginas ASP 2.1 - Cliente -> ServidorLas páginas ASP comienzan a ejecutarse, cuando un usuario solicita un archivo .ASPal servidor web a través del navegador. El servidor web llama al motor ASP, que leeel archivo solicitado, ejecuta la secuencia de comandos y envía los resultados alordenador del cliente. Puesto que la secuencia de comandos se ejecuta en el servidory no en el cliente, es el servidor el que hace todo el trabajo para generar las páginasque se envían al explorador.Las secuencias de comandos quedan ocultas al usuario, estos solo reciben el resultadode la ejecución en formato HTML. El servidor solo envía el resultado en códigoHTML interpretable por cualquier navegador. 3.- Concepto de PG. ASPActive Server Page (ASP), es un entorno para crear y ejecutar aplicaciones dinámicase interactivas en la web.Se caracteriza por tener en un mismo archivo de extensión .asp código script, que seejecuta en el servidor, y código HTML, que se ejecuta en el cliente.Así pues, la gran ventaja que presentan las páginas ASP, es que engloba tanto páginasweb con HTML, como scripts CGI (Common Gateway Interface). Una página ASP,puede consistir solo en código HTML (sería una página web normal) o bien solocódigo ejecutable (sería como un CGI), o bien ambos, ejecutable en el servido yejecutable en el cliente.Para crear páginas ASP, se utiliza un procesador de texto normal, no es necesarioningún editor especial. Página 2 de 48
  3. 3. Active Server Pages4.- Software Necesario.Para ejecutar una página .asp necesitamos un servidor WEB, y para ello tenemosdos opciones o bien instalamos un servidor como APACHE, o bien utilizamos unsimulador de un servidor web como es el Internet Information Server.Para instalar el IIS:1) Inicio/Panel de control/Agregar-Quitar programas /Programas de windows/ Seleccionamos IIS2) Para acceder a él: Inicio/Panel de Contrl/Administrador de Herramientas/IIS3) Una vez instalado el servidor web que vamos a utilizar en local, el siguiente paso es crear un directorio virtual en el que alojaremos nuestras páginas.4) Para visualizar las páginas en el navegador debemos introducir: a. http://localhost/nombre -directorio-virtual/archivo.asp b. Pinchamos en nuestra máquina que aparece dentro de Servicios de Internet Information c. Nos vamos a “sitio web predeterminado” con el botón derecho del ratón seleccionamos: Nuevo/Directorio Virtual d. Seguimos el asistente /Siguiente….. nos pide el nombre del directorio virtual: asp (por ejemplo) / Siguiente…. Nos pide el nombre del directorio físico que contiene los archivos .asp para ello pinchamos en Examinar seleccionamos la carpeta y finalizamos. e. Para ejecutar un archivo .asp en el IIS seleccionamos el archivo, botón derecho/Explorar.5) Otra opción bastante más sencilla es utilizar el Babyweb, que simula un servidor web. Funciona sin grandes problemas. Página 3 de 48
  4. 4. Active Server Pages 5.-MARCAS DE CÓDIGO <%............%>ASP viene de forma nativa con dos motores de comandos, Visual Basic Script yMicrosoft JScript. Pero puede instalar y utilizar otros motores de lenguajes comoReXX y Perl.Para establecer el lenguaje principal de secuencias de comandos, en todas las páginasde una aplicación, hay que agregar la directiva <%@LANGUAGE=VBscript%> obien <%@LANGUAGE=Javascript%>.Por defecto, si no especificamos nada, el lenguaje utilizado es Visual Basic Script(VBScript). Si utilizamos las marcas <%...........%> sin especificar lenguaje utilizarápor defecto el VBScript.Tenemos otra forma de marcar el código ASP sin utilizar las etiquetas <%........%>: 1. <script LANGUAGE=”VBscript “ RUNAT=SERVER> </script> 2. <script LANGUAGE=”JAVASCRIPT” RUNAT=SERVER> </script> Con “Runat= Server” estamos indicando que el código se ejecute en la parte del servidorCOMENTARIOSPara escribir un comentario en VBScript utilizaremos el apóstrofe:<% ‘este es un comentario de VBScript %> Página 4 de 48
  5. 5. Active Server PagesVer ejemplos:1-Escribe-Texto • 1Escribe-Texto-BVS.asp nos muestra cómo escribir texto variables • 2Escribe-Texto-BVS.asp muestra declaración de vbles de forma implícia • Error2.asp muestra la ejecución del código pero no nos dice dónde está el error • Error3.asp con Option Explict nos indica dónde nos hemos equivocado. 6.-VARIABLES Una variable es una pequeña sección de memoria de una computadora a la que se leasigna un nombre. Página 5 de 48
  6. 6. Active Server Pages6.1.- TIPOS DE DATOSExisten muchos tipos de datos que se pueden almacenar dentro de una variable. 1) Enteras (Integer) , sin parte fraccionaria 2) Float (numero de puntos flotantes), pueden tener un decimal p.ejem 5.1 • Podemos diferenciar Single y Double, la diferencia entre os dos tiene que ver con la precisión utilizada para almacenar el número. El tipo de datos Double requiere el doble de memoria que el tipo Single, pero obviamente mantiene un rango de números mucho más grande y con mayor precisión . 3) String (cadena de caracteres), siempre debe ir escrita entre comillas 4) Bolean (true o false),muy utilizadas en estructuras de control 5) Date (fecha) 6) Currency (dato de tipo dinero), se podrí utilizar un tipo de dato Single, pero este tipo en conjunto con una serie de funciones especiales de VBScript permite una mejor representación.6.2.- DECLARACIÓN DE VARIABLESMuchos lenguajes de programación requieren que, antes de utilizar una variable seindique al sistema el tipo de datos que va a almacenar.En VBScript podemos realizar la declaración de dos formas:1.- Declaración Implícita: No es necesario indicar al sistema (declarar) el tipo de datoque va a contener la variable (NO ES LO MÁS ACONSEJABLE) mi_variable=2  Sería una variable con datos enteros mi_variable=”Hola”  Sería una variable que contiene cadena de caracteres2.- Declaración Explícita: De esta forma antes de introducir cualquier variable deberemosintroducir la siguiente línea <% OPTION EXPLCIT%> y además declararlas previamentecon DIM.¿Por qué utilizar declaraciones Explícitas en VBScript ¿Veamos un ejemplo: Página 6 de 48
  7. 7. Active Server PagesArchivo: Código 3/Error2.asp<%@ Language=VBScript %><% miprimeravariable = 2 %><HTML> <BODY> La variable llamada "miprimeravariable" tiene un valor de<% Response.Write(miprmeravariable)%> </BODY></HTML>En este caso hemos hecho una declaración implícita, si ejecutamos el código no nosdará ningún error, simplemente no mostrará el valor de “miprimeravariable”. Sinembargo si realizamos una declaración Explícita, nos indicará que el error está en elnombre de la variable, lo que nos ahorrará bastantes quebraderos de cabeza.Archivo: Código 3/Error3.asp<%@ Language=VBScript %><% Option Explicit %><% Dim miprimeravariable miprimeravariable = 2%><HTML> <BODY> La variable llamada "miprimeravariable" tiene un valor de<% Ver ejemplos: Response.Write(miprmeravariable) Declara-Vables%> • DemoAsignacion.asp nos muestra cómo asignar valores a </BODY> variables</HTML> • Error1.asp muestra declaración de vbles de forma implícia • Error2.asp muestra la ejecución del código pero no nos dice dónde está el error • Error3.asp con Option Explict nos indica dónde nos hemos equivocado. Página 7 de 48
  8. 8. Active Server PagesNormas que se suelen utilizar en VBscript para declarar variables y así saber qué tipo devariable es sin lugar a equivocarnos. i (entero) Str (string) Dt (fecha) Cur (currency) Arr(array) Ejemplo: inota=7m, strnombre=”Sergio”…etc 6.3 -MATRICES:Existe otro tipo de datos fundamental, la matriz. Una matriz de variables es unasecuencia de variables, con el mismo nombre, pero diferenciadas por un índice.En nuestro ejemplo el (6) indica el límite superior de la matriz, siendo el límiteinferior el (0). <%@ Language=VBScript %> <% Option Explicit Dim ArrDias(6), iIndice %> <HTML> <BODY> <% iIndice = 3 arrDias(0) = "Domingo" arrDias(1) = "Lunes" Página 8 de 48
  9. 9. Active Server Pages arrDias(2) = "Martes" arrDias(3) = "Miércoles" arrDias(4) = "Jueves" arrDias(5) = "Viernes" arrDias(6) = "Sábado" Response.Write ("iIndice tiene un valor de ") Response.Write(iIndice) %> <BR> arrDias(1) tiene un valor de <% Response.Write(arrDias(1)) %> <BR> arrDias(iIndice) tiene un valor de <% Response.Write(arrDias(iIndice)) %> <BR> arrDias(2+3) tiene un valor de <% Response.Write(arrDias(2+3)) %> <BR> arrDias(iIndice+1) tiene un valor de <% Response.Write(arrDias(iIndice+1)) %> </BODY> </HTML>Otra forma de asignar valores rápidamente a cada elemento de una matriz esutilizando la Función ArrayNuestro ejemplo anterior quedaría:arrDias = Array(“Domingo”,”Lunes”,“Martes”,“Miércoles”,“Jueves”, “Viernes”,“Sábado”)6.4.- CÓMO DETERMINAR EL TIPO DE VARIABLEExisten dos tipos de funciones para determinar el tipo de datos que será almacenadoen una variable. Página 9 de 48
  10. 10. Active Server Pages1.- La primera función es VartType, que se utiliza de la siguiente manera:VarType(nombre_variable) devolviendo un código entero que corresponde al tipode datos. 1=> Es un dato no valido 2=>Entero 3=>Entero largo 4=>Singer 5=>double 6=>currency 7=>date 8=>string2.- La segunda función es TypeName, ésta devuelve una cadena con el nombre deltipo de datos en lugar de un código. Se utiliza de la misma forma que la anterior :TypeName(nombre_variable) Ejemplo: <%@ Language=VBScript %> <% Option Explicit Dim strNombre, iEdad %> <HTML> <BODY> <% Response.Write("Antes de asignar un valor, strNombre es de tipo ") Response.Write(TypeName(strNombre)) Response.Write(", que es el número del tipo ") Response.Write(VarType(strNombre)) %>7.- OPERADORES  =  +  -  * Página 10 de 48
  11. 11. Active Server Pages  /  5 Mod 3 =>2  Exponención 3^ 3= 3*3*3  Concatenación &  Operadores Lógicos ------AND, OREjemplo:<%@ Language=VBScript %><% Option Explicit Dim iTermino1, iTermino2, sngAritmetica, sngGeometrica, strSalida %><HTML> <BODY><% iTermino1 = 5 iTermino2 = 16 strSalida = "El programa calcula los promedios de " & iTermino1 & _ " y " & iTermino2 & "<BR>" Response.Write(strSalida) sngAritmetica = iTermino1 + iTermino2 sngAritmetica = sngAritmetica / 2 sngGeometrica = (iTermino1 * iTermino2)^0.5 Página 11 de 48
  12. 12. Active Server Pages strSalida = "Su media aritmética es " & sngAritmetica & _ " y su media geométrica es " & sngGeometrica Response.Write(strSalida) %> </BODY> </HTML>8.- ESTRUCTURAS DE CONTROL8.1 -CONDICION “ IF “ Formato: If condición then Bloque de código End If8.2.- IF ANIDADOS Formato: If condición1 Then Primer bloque de código If condición2 Then Segundo bloque de código Else Tercer bloque de código Página 12 de 48
  13. 13. Active Server Pages End if Else Cuarto bloque de código End ifNo se debe utilizar muchas instrucciones If anidadas ya que dificulta la revisión rápida8.3 INSTRUCCIONES FOR…….NEXTEsta instrucción ejecuta un bloque de código un número especificado de veces, mientrasincrementa un contador.Formato: For variable-contador = valor-inicio to valor- final Step valor-incremental Bloque de código Next8.4.- INSTRUCCIONES Do While………LoopFormato: Do While condición Bloque de código LoopEl bloque de código se ejecuta mientras que la condición sea verdadera Página 13 de 48
  14. 14. Active Server Pages8.5.- INSTRUCCIONES Do Until………LoopEs muy parecida a la anterior , la única diferencia es que el ciclo se ejecuta hasta que lacondición es verdadera y no falsa. Ambos tipos de instrucciones oueden realizar las mismasfunciones, la única diferencia es que la condición se escribe en forma positiva o negativaFormato: Do Until condición Bloque de código LoopVer Ejemplos3Estructuras de Control Página 14 de 48
  15. 15. Active Server Pages9.- SUBRUTINASLas subrutinas también llamados procedimientos realizan accionesFormato: Sub nombre Bloque de código End SubLa llamada a una subrutina indica al sistema que ejecute la subrutina y despuésregrese a la ejecución normal de la secuencia de comandos.Dentro de la subrutina se puede crear un bucle for por ejemplo. Los procedimientos nodevuelven un valor, sino que realizan la ejecución de lo que haydentro de él. La funciónprincipal será la de poder llamar el resultado obtenido en alguna otra parte del código.çEjemplo:Sub subEncabezado For iCounter = 1 to 3 Response.Write("Su Nombre<BR>") NextEnd Sub10.- FUNCIONESLas funciones calculan valores. Página 15 de 48
  16. 16. Active Server PagesDiferencia entre un procedimiento y una función : o Los procedimientos no generan ningún resultado o La forma de llamar a un procedimiento es mediante una líneaPor otra parte las funciones devuelven valores, lo que significa que una llamada afunción puede colocarse en una expresión, se le pueden agregar elementos, etc.Formato: Function nombre_funcion (parámetros) …… End FunctionPara llamar a una función : Nombrefunción (listaparámetros), si la función no tieneparámetros se puede llamr ya sea con los paréntesis vacíos o sin paréntesis.11.- PÁGINAS SSI (Server Side Include)De los comandos SSI (Server Side Include), las páginas ASP sólo soportan el#include, aunque ciertamente se trata del más importante. Este comando es útil sitenemos código (bien sea HTML o ejecutable) que se va a repetir en distintas páginasweb.Por ejemplo, tenemos un pie de página común para todas nuestras páginas web. Enlugar de escribir el código en todas ellas, creamos un archivo con el pie de página y loincluimos en todas las páginas de nuestra web. No sólo ahorraremos trabajo, sino que Página 16 de 48
  17. 17. Active Server Pagessi queremos modificar el pie de página, bastará con modificar un archivo yautomáticamente se reflejará el cambio en toda la web.En el caso del código de servidor, resulta muy útil crear bibliotecas de funciones quese puedan reutilizar más adelante. Una forma de reutilizar funciones es guardarlas enarchivos e incluir éstos cuando sea necesario. Esto es mucho mejor que copiar y pegarla función. Ahorra trabajo y al igual que antes, si realizamos una mejora en la funciónse reflejará en todo el código que la llame.El Visual Basic Script es un lenguaje que no tiene facilidades de inclusión de código.Esto se puede suplir mediante este comando. Sin embargo, si se programa enPerlScript, se pueden utilizar las facilidades del lenguaje para incluir código de otrosscripts o de bibliotecas mediante las palabas clave require o use.Formato:La sintaxis del comando tiene dos variantes:<!--#include file="archivo.asp"-->En la variante file hay que escribir la ruta del archivo relativa al directorio en el quese encuentra el ASP que se está ejecutando. En nuestro ejemplo, archivo.asp está enel mismo directorio que el ASP que lo incluye.<!--#include virtual="/dirweb/archivo.asp"-->En este caso se escribe la dirección web comenzando desde el raíz del servidor web.En nuestro ejemplo, estamos incluyendo el archivo cuya dirección web completa eswww.midominio.com/dirweb/archivo.asp. Es decir, en el primer caso nos referimos aarchivos según la estructura de directorios, y en el segundo, según la estructura de laweb.El archivo a incluir no tiene por qué ser un ASP, puede tener cualquier extensión. Sise trata de archivos que sólo están pensados para ser incluídos, es una buena prácticade programación el colocarles la extensión .inc. El preprocesado de los #include esprevio a la ejecución del script, por lo que no puede haber includes condicionados asentencias if then. Hay que imaginarse que cada include es sustituido por el archivocompleto y que entonces es cuando se procesa el código ASP. Página 17 de 48
  18. 18. Active Server Pages OBJETOS ASPCada script ASP dispone desde el momento en que es ejecutado de una serie deobjetos predefinidos. No es necesario crear estos objetos ya que vienen integrados enASP. Se encuentran disponibles para cualquier script y permiten realizar funcionesbásicas como averiguar los parámetros pasados al script, enviar información alusuario, guardar variables persistentes, etcétera. Aquí exponemos un breve resumende los más importantes, con sus propiedades y métodos más utilizados.1.-OBJETO RESPONSE:Se utiliza para enviar la salida del script, es decir, lo que verá el usuario en sunavegador. Response también puede controlar la forma y el momento en que seenvían los datos, y escribir cookies para almacenar información.MÉTODOS MÁS IMPORTANTES1.- Response.Write (“cadena de caracteres”): Envía la cadena de caracteres alcliente. También se utiliza para intercalar código HTML entre el ejecutable.Ejemplo:<%Response.Write ("<h1>Se ha pasado de rosca</h1>")%> Página 18 de 48
  19. 19. Active Server PagesEsto nos sacará por pantalla el literal con formato de cabecera Se ha pasado de rosca.Ya que todo el código HTML que escribamos dentro de las comillas delResponse.Write esté lo ejecutará sacando en el navegador su resultado.2.- Response.Write(Server.HTMLEncode) :Utilizaremos esta sentencia si lo quepretendemos es enviar texto codificado para que el explorador no lo interprete comoHTML.Ejemplo:<%Response.Write (Server.HTMLEncode(“<P align=right>"))%>Ocasionará que se implima <P align=right> en la pantalla sin interpretarlo comoHTML.3.- Response.Redirect (Url) : Redirige la página ASP a la URL especificada. Porejemplo, esto que sigue es una página ASP completa que simplemente redirige a laweb www.arsys.es. Pg 190<% Response.Redirect ("http://www.arsys.es") %>La redirección se implementa mediante cabeceras HTTP que son distintas que lasenviadas cuando se muestra una página web. Eso significa que si se utilizaResponse.Write o se intercala cualquier código HTML, ya no funcionará un posteriorResponse.Redirect porque se habrán enviado las cabeceras de mostrar una páginaweb, no las de redirección. Es decir sólo funcionará si no se le ha enviado algo alcliente. Esto significa que debemos colocar el Response.Redirect antes de enviarcualquier salida o de utilizar el almacenamiento en búfer.Esto implica el uso de la propiedad Buffer y los métodos Flush y Clear, como seexplica a continuación.4.- Response.Buffer. Si se establece en True, se utiliza un búffer para la salida dedatos, en combinación con los métodos anteriormente descritos. A pesar de lainsistencia en el buffer, es algo que prácticamente no se usa a no ser que searealmente necesario, pues ralentiza el mostrado de la página web.5.- Response.Flush. Envía de inmediato los datos del buffer. Si se establece en Truela propiedad Response.Buffer, la salida del script (enviada mediante comandosResponse.Write o HTML intercalado) no se envía directamente al navegador, sino Página 19 de 48
  20. 20. Active Server Pagesque queda en un buffer (espacio intermedio de almacenamiento) del servidor. Elmétodo Response.Flush envía los datos del buffer al navegador. Otra forma de enviarlos datos del buffer es simplemente dejar que termine el script o invocar el métodoEnd. Primero envía los datos y luego los elimina.6.- Response.Clear. Supongamos que tenemos activado el almacenamiento en búfer.A medida que su secuencia de comandos se ejecuta, la salida es enviada al búfer. Alllamar a Response.Clear el búfer será vaciado. ¿Por qué es deseable esto? Talveztnemos una página que no queremos que sea vista bajo un conjunto de circunstanciasespeciales. Si la página no sabe que dichas circunstancias se han cumplido, hasta quela secuencia ya se haya ejecutado, Response.Clear podría ser la mejor opción.7.- Response.End. Finaliza la ejecución de la secuencia de comandos. Si elalmacenamiento en búfer está activado y hay muchos datos almacenados, éstos sonenviados. Cualquier instrucción que esté después de Response.End no es ejecutada .Ésta es una finalización más abrupta que simplemente permitir que la secuencia decomandos termine por sí misma y , por lo tanto, debe evitarse si es posible. Noobstante, puede ser útil al detectar problemas (tales como datos erróneos), sobre todopara evitar que éstos empeoren.8.- Response.Expires: se utiliza para especificar por cuanto tiempo, desde elmomento actual debe almacenarse una página en cache. <%Response.Expires= 4 %> le estamos indicando al explorador que la paginaque se guarda en caché, debe caducar a los 4 min.9.- Response.ExpiresAbsolute. le indica al navegador que la página almacenada encaché Ver ejemplos: una fecha indicada y a una hora determinada. debe caducar en 5-Objeto-Response <%Response .Expires.Absolute=Now ()-1%> • Response.write.asp Muestra cómo escribir código HTML dentro del Response • Response-buffer.asp nos muestra cómo se almacenan los datos en el búfer • Response-flush.asp • Response-clear.asp • Response-end.asp • Response.expires.asp Comprobamos que la página permanecerá almacenada en caché durante 3 minutos, si navegamos durante 4 minutos y volvemos a cargar la página comprobaremos que la Página 20 de 48 hora se actualizó.
  21. 21. Active Server Pages2.-OBJETO REQUEST Este objeto se utiliza para recuperar los valores de un campo de formulario. Esteobjeto tiene cuatro colecciones, de momento nos ocuparemos de dos : Form yQueryString1.-Request.Form(Nombrevariable): Recupera los valores de un campo deformulario cuando éste tiene su propiedad METHOD establecida como POST. 1.1.-Reques.Form (“param”): nos da el valor del parámetro llamado “param” siempre y cuando exista un único valor para dicho parámetro. 1.2.-Reques.Form (numero): nos da el valor de la posición del elemento en el formulario.Por ejemplo; si primero es el nombre, segundo la contraseña y tercer mi edad; mi Request.Form (3), me cogerá la edad. 1.3.- Reques.Form.Count: recoge el número de parámetros que hay en un formulario.. 1.4.- Request.Form(“param”).Count: nos devuelve el numero de selecciones que ha hecho el usuario, solo serviría para el caso en el que hubiera mas de una opción. Por ejemplo, si en nuestro formulario tenemos una lista de selección múltiple, cuyo nombre sea Lista, la expresión Request.Form ("Lista")[2] nos daría el segundo elemento seleccionado de la lista, y Request.Form("Lista").Count nos daría el número de elementos que ha Página 21 de 48
  22. 22. Active Server Pages seleccionado el usuario. Su valor será 1 si se trata de un parámetro monovaluado y 0 si es un parámetro no definido en el formularioTambién es posible iterar sobre las colecciones anteriores mediante bucles For each.El siguiente ejemplo nos muestra todos los parámetros pasados al script y sus valores:<%For each param In Request.FormResponse.Write ("<p>")Response.Write("El parámetro " & param & " toma el valor " &Request.Form(param) )Response.Write("</p>")Next%>2.- Request.QueryString(Nombrevariable): Recupera los valores de un campo deformulario cuando éste tiene su propiedad METHOD establecida como GET. En estecaso se pasan los valores de los campos de formulario a través de la cadena deconsulta.Por ejemplo: http://www.dominio.com/cgi-bin/miprog.asp?nombre=Pepe&apellido=Gotera3.- Request.ServerVariables: Cada vez que visitamos una página Web, nuestroexplorador envía gran cantidad de información al servidor Web. La colecciónServerVariables puede acceder a esta información. Asimismo, el servidor Web tienemuchas variables de ambiente a las que podemos acceder con esta colección.Cuando el cliente solicita una página Web al servidor, éste no solamente envía elURL de la página Web solicitada, sino también alguna información adicional que Página 22 de 48
  23. 23. Active Server Pagesconsiste en datos del cliente que pueden resultar muy útiles. Por ejemplo, el tipo deexplorador que se está utilizando, el sistema operativo que está ejecutando el cliente yel URL de donde proviene el usuario. Cada segmento de información adicional seconoce como : Encabezado de solicitud porque son enviados cuando el clientesolicita una página Web.Cuando el servidor devuelve al cliente la página Web solicitada, también envía unconjunto de encabezados, conocidos como Encabezados de Respuesta. Losencabezados de respuesta son porciones adicionales de información acerca de lapágina Web que está siendo enviada al cliente. Tanto los encabezados de solicitudcomo los de respuesta se conocen comúnmente como encabezados HTTP.¿Qué encabezados envía el explorador al servidor web? El explorador podría enviarcualquier encabezado que eligiera. Existe un conjunto estándar de encabezados que lagran mayorñia de exploradores envía al servidor Web. De estos encabezados uno delos más útiles es el User-Agent.Este encabezado contiene la información sobre el explorador que se está utilizando yel sistema operativo del cliente. Una página ASP puede utilizar esta información parapersonalizar el contenido basándose en el tipo de explorador que el visitante utilice.Por ejemplo : Netscape Nvigator e Internet Explorer manejan en forma diferente lashojas de estilo, si quisiéramos utilizar hojas de estilo en nuestro sitio web podríamosutilizar ASP para determinar el tipo de explorador que hace la solicitud de la páginaASP y después ajustar las definiciones de la hoja de estilo para que correspondan conel explorador específico. ENCABEZADOS HTTP ESTÁNDAR NOMBRE DEL ENCABEZADO DESCRIPCIÓNHTTP_ACCEPT Una lista de los tipos MIME (siglas en inglés de Extensiones Multipropósito de Correo en Internet) que el cliente aceptaráHTTP_ACCEPT_LANGUAGE Qué tipo de lenguajes espera el explorador. Éstos son leguajes humanos conocidos como idiomasHTTP_CONNECTION El tipo de conexión establecida entre el cliente y el servidor Web.HTTP_HOST El nombre de host de la computadora del clienteHTTP_USER_AGENT El tipo y versión de explorador y la información del sistema operativo del cliente.HTTP_REFERER El URL completo de la página Web que contiene el hipervínculo empleado para llegar a la página ASP que está 23 de 48 Página siendo ejecutada en ese momentoHTTP_COOKIE Las cookies enviadas desde el explorador
  24. 24. Active Server PagesLECTURA DE ENCABEZADOS HTTP CON Request.ServerVariables1.- Para desplegar una lista exacta de los encabezados enviados por el explorador alservidor Web.<% =Request.ServerVariables(“ALL_RAW”) %>2.- Para desplegar una lista de encabezados con formato utilizaremos la siguienteinstrucción<% =Request.ServerVariables(“ALL_HTTP”) %>3.- Para desplegar un encabezado HTTP específico, utilizaremos el siguienteformato:<% =Request.ServerVariables(“HTTP_NombreEmcabezado”) %>ACCESO A LAS VARIABLES DE AMBIENTE CON Request.ServerVariablesLas variables de ambiente son segmentos de información que proporciona el servidorWeb a cualquier programa que las solicita. Esta información la podemos obtener através de Request.ServerVariables. Las variables de ambiente contienen informacióncomo el nombre del servidor Web, el Url de la página ASP procesada actualmente oel nombre del software que el servidor Web está utilizando Página 24 de 48
  25. 25. Active Server Pages VARIABLES DE AMBIENTE ÚTILES VARIABLE DE AMBIENTE DESCRIPCIÓNURL El URL de la página ASP que esta después de http://www.suServidorweb.com/ hasta la cadena de consultaPATH_TRANSLATED La ruta física completa de la página ASP en ejecución.QUERY_STRING La cadena de consulta (equivalente al Request.QueryString)SERVER_NAME El nombre de la computadora del servidor webSERVER_SOFTWARE El nombre del software del servidor web, por ejemplo Microsoft-IIS/5.0 Ejemplo:<h3> Usted está viendo el dominio<%= Request.ServerVariables("SERVER_NAME") %></h3>4.- Request.Cookies: Con el uso de las Cookies las páginas Web pueden almacenarpequeños segmentos de información en la computadora del cliente. Estos segmentosde información pueden utilizarse para identificar a un visitante anterior o parapersonalizar el contenido de sus páginas Web para cada visitante específico. REALIZAR PRÁCTICAS1. Realiza una página Web que nos pida por pantalla el nombre y el apellido deforma que al pulsar el botón de enviar nos lleve a otra página mostrando elnombre y el apellido. (en el action tenemos que poner comillas y el nombre de lapagina .asp donde vamos a almacenar la información) Página 25 de 48
  26. 26. Active Server Pages2. Realiza una pagina que nos muestre un menú desplegable con variasdirecciones de Internet, de forma que al seleccionar una y pulsar el botón deenviar nos lleve a ella.3. Realiza una página que nos muestre un formulario con la opción deseleccionar los idiomas que conocemos de forma que al pulsar el botón de enviar,nos lleve a otra página donde nos de los BUENOS DÍAS en los idiomasseleccionados.4. Realiza una página que muestre un formulario donde se recoja el precio de unproducto cualquiera de forma que al pulsar el botón de envío nos devuelva elprecio del producto incrementando el IVA (18%). Para ello utilizad funciones.5. Realiza una página que nos muestre por pantalla todos los enacabezadosHTTP.6. Realiza una página que nos muestre por pantalla todas las variables deambiente.3.-OBJETO SERVEREl objeto Server sólo tiene un método importante, pero es el más importante detodo el esquema ASP, ya que es el que permite crear objetos componentes yextender la funcionalidad del ASP de forma ilimitada. Con el Visual Basic Script delASP y sin utilizar objetos componentes, no se puede hacer prácticamente nada; nisiquiera leer un archivo del disco. Toda la funcionalidad reside en objetoscomponentes ActiveX.El método Server.CreateObject: Crea una instancia del componente de servidorque se le pase como parámetro.Su sintaxis es :Server.CreateObject(ProgID)El parámetro ProgID es un identificador único del componente que suele darse en laforma Vendedor.Componente. Por ejemplo:<%Set herram = Server.CreateObject ("MSWC. Tools")if herram.FileExists ("mipagina.html") Then%> Página 26 de 48
  27. 27. Active Server Pages<p>Esta es <a href="mipagina.html">mi página</a> </p><% else %><p>Lo siento. Mi página ha desaparecido</p><% end if %>MSWC.Tools es el ProgID del objeto Tools de Microsoft, que viene con lainstalación de ASP. No es un objeto predefinido como Response o Request, sino quehay que crearlo como cualquier otro. En VisualBasic los objetos se asignan avariables utilizando Set. Después de creado, podemos acceder a sus métodos ypropiedades. En este caso, utilizamos el método FileExists que nos dice si existe o noun archivo dada su URL relativa.4.-OBJETO SESSIONSólo para poder beneficiarse de este objeto predefinido en sus aplicaciones de la Web,hay proveedores que se pasan de Unix a Windows NT. ¿Cuáles son entonces susmaravillosos métodos, propiedades o colecciones? Respuesta: lo interesante delobjeto Session son las variables que nosotros podemos guardar en él. Esasvariables permanecen entre distintas páginas web y son únicas para cada usuario. Así,si guardamos el nombre del usuario en una variable del objeto Session, podremosincorporarlo a todas las demás páginas, ya que ese dato no se pierde al terminar elscript. Además, aunque haya varios usuarios viendo simultáneamente las páginas nohay problema, ya que cada uno tiene un objeto sesión distinto. La sintaxis es:Session("variable") = valorEsto guarda el valor en la variable. Para recuperarlo más adelante en éste u otro scriptdistinto, sólo tendríamos que escribir Session("variable").$Session{variable} = valorEjemploPuede guardar este script con el nombre p2.asp. Se guarda el nombre del usuario en elobjeto Session.<html><head> Página 27 de 48
  28. 28. Active Server Pages<title>Pequeña prueba del objeto Session</title></head><body><%nombre = Request.Form("nombre")if nombre = "" then%><p>Por favor, escriba su nombre </p><form method = "Post" action="p2.asp"><input type ="text" name = "nombre"><input type = "submit" value = " Enviar "><%elseResponse.Write ("Su nombre es " & nombre & ". No se preocupeque no se me va a olvidar.")Session("Nombre") = nombreend if%></body></html>Para escribir el nombre del usuario en páginas ASP posteriores a ésta, basta con queintercale el código<%= Session("Nombre") %>en el HTML de la página.Una vez definida, la variable Session, será almacenada en memoria y podrá serempleada en cualquier script del sitio web.La duración de una sesión viene definida por defecto en 20 minutos. Esto quiere decirque si en 20 minutos no realizamos ninguna acción, el servidor dará por finalizada lasesión y todas las variables Session serán abandonadas. Esta duración puede sermodificada con la propiedad Timeout:Session.Timeout = n° de minutos que queramos que dureUna forma de borrar las variables Session sin necesidad de esperar a que pase esteplazo es a partir del método Abandon:Session.AbandonDe este modo todas las variables Session serán borradas y la sesión se dará porfinalizada. Este método puede resultar practico cuando estemos haciendo pruebas conel script y necesitemos reinicializar las variables. Página 28 de 48
  29. 29. Active Server Pages4.-OBJETO APPLICATIONEs prácticamente igual que el objeto Session y sirve para lo mismo (guardarvariables), con la única diferencia de que las variables son únicas para la aplicaciónen su conjunto, no para cada sesión de usuario. Por tanto, en el objeto Applicationse deben guardar variables que vayan a ser comunes a todos los usuarios, no lasespecíficas como su nombre. Esto implica también que si deseamos modificar el valorde una variable guardada en el objeto Application, es necesario bloquear el objetopara evitar que desde otra sesión se acceda simultáneamente a la misma variable. Paraello existen los métodos Lock y Unlock.El método Application.LockBloquea el objeto impidiendo que otros clientes modifiquen cualquier variableguardada.El método Application.UnlockDesbloquea el objeto permitiendo que otros clientes modifiquen las variables delobjeto Application.EjemploUna variable típica para guardar en el objeto Application es el número de visitas a laweb. La variable no debe estar asociada a un cliente en concreto, sino que debe sergeneral. En la página en cuestión pondríamos el siguiente código:<%Application.LockApplication("NumVisitas") = Application("NumVisitas") + 1Application.Unlock%>Cuando queramos mostrar el número de visitas recibidas, bastará con que insertemos<%= Application("NumVisitas") %>Los eventos de los objetos Session y Application y el archivo global.asaLos objetos Application y Session tienen eventos al estilo de los formularios deVisual Basic, sólo que mucho más limitados. De hecho cada objeto sólo tiene doseventos: uno que se lanza cuando es creado y otro cuando es destruido. Eso significaque podemos escribir código de inicialización que se ejecutará cada vez que unusuario acceda por primera vez a nuestras páginas (creación de un objeto Session) o Página 29 de 48
  30. 30. Active Server Pagescuando acceda el primer usuario (creación del objeto Application). Asimismo,podemos escribir código de limpieza justo cuando se termine la sesión de un usuarioo al terminar la aplicación en su conjunto.El código de estos eventos ha de estar en un archivo de nombre global.asa que debeestar en el directorio raíz de la aplicación. El archivo global.asa es opcional y puedecontener tres tipos de información: Eventos de creación y destrucción de aplicación y sesiones. Marcas <OBJECT> para crear objetos de servidor con alcance de sesión oaplicación (método alternativo al de Server.CreateObject). Bibliotecas de tipos de objetos componentes.Los eventos de Session y Application han de estar en marcas <SCRIPT> como seindica en el ejemplo de global.asa siguiente:<SCRIPT LANGUAGE=VBScript RUNAT=Server>sub Application_onStartApplication("NumSesionesActivas") = 0Application("NumSesionesTotales") = 0End subsub Session_onStartApplication.LockApplication("NumSesionesActivas") =Application("NumSesionesActivas") + 1Application("NumSesionesTotales") =Application("NumSesionesTotales") + 1Application.UnLockEnd subsub Session_onEndApplication.LockApplication("NumSesionesActivas") =Application("NumSesionesActivas") -1Application.UnLockEnd subsub Application_onEndEnd sub</SCRIPT>Aquí se utilizan los eventos para guardar el número de sesiones activas y totales denuestra aplicación, es decir, el número de clientes que nos está viendo en un momentodado, y el total que nos ha visitado. Como se trata de datos globales y no ligados auna sesión, hay que guardarlos en el objeto Application, y cuando se quierenmodificar, es necesario bloquear primero dicho objeto. Página 30 de 48
  31. 31. Active Server Pages¿Cuánto dura una sesión y cómo funciona?Lógicamente el servidor web no puede saber si el usuario está todavía leyendo laúltima página que descargó de la web o se ha ido ya a dormir. De ahí que la duraciónde una sesión se mida por el tiempo de inactividad del usuario. Para medir éste elobjeto Session dispone de una propiedad llamada Session.Timeout en la que eltiempo se mide en minutos. Cuando un usuario de Internet ve por primera vezcualquier página ASP de nuestra aplicación, el servidor web automáticamente leenvía un cookie y crea para él un objeto Session con llamada al evento de creaciónque se encuentre en global.asa. Si pasan los minutos indicados en Session.Timeoutsin que el usuario haya visto una nueva página, la sesión se da por concluida y elobjeto Session del usuario es destruido.El cookie es una pieza de información que el servidor web envía al cliente para que seguarde en su disco duro. Cuando el cliente vuelve al sitio web reenvía el cookie alservidor y de esa forma éste puede distinguir a los usuarios y hacerles un seguimientoindividual.Más sobre objetos componentes: alcance y creaciónLos objetos que se crean mediante Server.CreateObject (ProgID) tienen un alcance anivel de script, es decir, cuando termina el script los objetos son eliminados. Sinembargo, en ciertas ocasiones será conveniente que los objetos tengan duración desesión o incluso de aplicación. Hay dos formas de dar alcance de sesión o deaplicación a un objeto: Guardarlo en una variable del objeto Session o Application. Crearlo en global.asa mediante una marca <OBJECT>.Primer método, ejemplo<% Para crearlo con alcance de sesion lo guardamos en el objetoSessionSet Session("miobjeto") = Server.CreateObject("MPX.Tool")................ Para verlo después en otra página ASPSet miobjeto = Session("miobjeto")miobjeto.show%>1. Realiza una página que recoja tu nombre y con un botón de envío te lleve aotra página donde te saldrá un mensaje de bienvenida con tu nombre. Además aparecerá un formulario donde deberás seleccionar distintas aficiones de formaque al pulsar el botón de envío te llevará a una página donde mostrará tunombre con las aficiones seleccionadas. Página 31 de 48
  32. 32. Active Server Pages OBJETOS DEL SERVIDOR1.-COMPONENTES ACTIVEXLos comoponentes ActiveX se han diseñado para que se ejecuten en el servidorWeb como parte de las aplicaciones Web , proporcionan funcionalidad a lasaplicaciones, como el acceso a ficheros, Bases de datos, etc. Existen componentesActiveX para tareas muy diversas, por ejemplo: • Adrotator: Inserción de publicidad rotatoria • FileSystemObject: Acceso a ficheros en el servidor • TextStream: Acceso a ficheros en el servidor • ActiveX Data Object: acceso a bases de datosSu fundamento es tratar de hacer que estos componentes sean reutilizables. Para ello,utiliza un modelo orientado a objetos para definir una jerarquía de componentes,entre los que pueden existir relaciones de dependencia. Cada componente (objeto) secaracteriza por un comportamiento, que se puede alterar a través de sus métodos,propiedades o la interacción con otros objetos.¿Qué son los controles ActiveX?Se trata de pequeñas aplicaciones capaces de interactuar con el usuario, realizarcálculos o representar datos, y que se insertan en páginas web a través de las etiquetas Página 32 de 48
  33. 33. Active Server Pages<OBJECT> y <PARAM>, que se corresponden a las operaciones de inserción delcomponente y paso de sus parámetros de ejecución.¿Qué diferencia hay entre controles y componentes ActiveX?Los elementos desarrollados con esta tecnología pueden aplicarse tanto en el ladocliente como en el lado servidor. Esta es la diferencia fundamental entre un controlActiveX, que se ejecuta localmente en nuestra aplicación, de un objeto ActiveX, queutiliza un "automation interface" (o interfaz automatizada) para que otras aplicacioneso herramientas de programación puedan utilizarlo.Se denomina formalmente componente al objeto ActiveX y no al control. Uncomponente tiene la ventaja de que se trata de un estándar prácticamente universal,multiplataforma y, por tanto, independiente de las aplicaciones y sus lenguajes. Enesta guía de referencia obviaremos los controles (en clara desventaja) frente a lasposibilidades que nos ofrecen los objetos de servidor, al poder combinarse, a travésde ASP, con scripts y páginas HTML para poder crear webs profesionales. Sufuncionamiento precisa la instalación del objeto en la máquina sobre la que se ejecute,y suele encontrarse bajo archivos de extensión OCX o DLL.¿Cómo utilizo un componente en mi web?Para poder utilizar un objeto, deberá enlazarlo con su página web a través deprogramación en un lenguaje de script, directamente, o a través del uso de ASP(Active Server Pages). En cualquiera de los casos, deberá introducir cierto códigopara poder usar el objeto, una vez instalado en el servidor sobre el que vaya aejecutarse. Se trata, principalmente de una línea en la que crea una "instancia" delobjeto que va a usar, y el resto de código que utiliza los métodos y propiedades de lainstancia que acaba de crear. Por ejemplo, si escribimos en una página ASP, el códigodebe quedar de la forma:<%Set OBJETO = Server.CreateObject(IDENTIFICADOR)OBJETO.Metodo(Argumentos).......%>El parámetro "IDENTIFICADOR" es un identificador único del componente quesuele darse en la forma Vendedor.Componente.Los valores "OBJETO.Metodo(Argumentos)" referencian a las funciones, yparámetros que necesitan las mismas para su llamada, que incorpora el componenteque estamos usando.Por ejemplo, el componente Acceso a bases de datos utiliza objetos de datos deActiveX (ADO) para proporcionar un fácil acceso a la información almacenada enuna base de datos (o en otra estructura de datos en forma de tabla), que cumpla con el Página 33 de 48
  34. 34. Active Server Pagesestándar ODBC (Open DataBase Connectivity). A continuación se muestra el códigoque tendría que colocar en su página ASP para poder usar este objeto:<%Aquí creamos la instancia del objetoSet miconexion = Server.CreateObject("ADODB.Connection")Ahora usamos la instancia y sus propiedades para nuestros finesIndicamos al objeto la cadena de conexiónmiconexion.ConnectionString = "DSN=midsn"Se abre la base de datosmiconexion.Open ...............Se cierra la base de datosmiconexion.Close%>Así pues, una de las características más interesantes de ASP es su facilidad para elmanejo de bases de Datos que residen en el servidor. Esto lo conseguimos medianteel uso de ADO (ActiveX Data Object), de forma fácil, rápida y con un mínimoconsumo de rescursos del sistema.Por otra parte ADO (ActiveX Data Object) para el acceso a una base de datos usaODBC (Open Data Base Connectivity), es una utilidad de Windows que permite alas aplicaciones acceder a los datos usando SQL como lenguaje estándar. Página 34 de 48
  35. 35. Active Server Pages2.-FUENTES DE DATOS ODBCComo se ha escrito anteriormente Open Data Base Connectivity es una utilidad deWindows, concretamente la encontramos en Inicio/Panel de Control/HerramientasAdministrativasSe pueden configurar tres diferentes fuentes de datos ODBC, la forma más interesantees la DSN de Sistema, que presenta la ventaja de poder ser accedida por cualquierusuario, siendo el tipo usado en las aplicaciones ASP. Página 35 de 48
  36. 36. Active Server PagesPara declarar una base de datos ODBC haremos doble clic en el icono Fuentes deDatos ODBC que encontraremos en Panel de Control/Herramientas Administrativas.Una vez abierto el programa nos situamos en la pestaña DSN de Sistema.DSN: Data Source Name. Es un identificador único de la base de datos en elsistema. Al definir un DSN hay que especificar tanto la ruta completa del archivo debase de datos como el controlador adecuado a la misma (MSAccess, FoxPro, etc…).Una vez creado, es todo lo que necesitamos saber acerca de la base de datos parapoder abrirla, consultarla, modificarla, etc.Pulsaremos el botón AGREGAR para añadir una fuente de datos, lo que nos llevará ala pantalla de controladores. Página 36 de 48
  37. 37. Active Server PagesEn esta ventana elegiremos el driver adecuado para la tecnología de la base de datosque queremos tratar desde nuestras páginas ASP y pulsaremos finalizar. La siguientepantalla que se nos muestra nos pedirá la ubicación física de nuestra base de datos yel nombre ODBC con el que queremos acceder a ella. Página 37 de 48
  38. 38. Active Server PagesNombre del origen de datos: es un nombre simbólico de nuestra base de datos, seráel que utilicemos desde ASP para referirnos a ella, es decir será el DSN.Descripción: Es una descripción de la base de datosBase de datos: Es el camino físico de la base de datos, para establecerlo pulsaremosel botón SELECCIONAR y mediante un explorador elegiremos nuestra base dedatos.Una vez hecho esto pulsaremos el botón ACEPTAR y ya tendremos nuestra base dedatos disponible para su uso desde nuestras aplicaciones WEB.Ya sabemos conectar ASPADOODBC, nos queda conocer los objetos ADO pararealizar todo esto3.- OBJETOS ADO Página 38 de 48
  39. 39. Active Server PagesADO está formado por varios objetos organizados de forma jerárquica (cada uno deellos con sus métodos y propiedades específicos) de los cuales vamos a estudiar losmás interesantes.3.1 CONNECTIONEste objeto lo podemos considerar como el más importante, estaría en la cúspide de laestructura jerárquica comentada anteriormente.Representa una conexión a una base de datos desde una página ASP. Esta conexiónnos permitirá efectuar las operaciones que deseemos sobre la base de datos.Es el primer objeto que debemos crear para poder conectar con la base de datos.Tanto el objeto ADO que nos permite acceder a los datos (Recordset) como el quenos permite realizar consultas (Command) disponen de una propiedad llamadaActiveConnection que es una referencia al objeto Connection que enlaza con la basede datos a la que queremos atacar. De ahí que el primer paso sea crear la conexión.Pues bien para crear la conexión, lo primero será crear el Objeto Connection pormedio de la propiedad CreateObject del objeto Server. <% Set conexion=Server.CreateObject(“ADODB.Connection”) %>Una vez establecida la instancia del objeto pasamos a configurarlo mediante suspropiedades y métodos: Página 39 de 48
  40. 40. Active Server PagesPROPIEDADES1.- ConnectionString: Especifica la referencia a la base de datos con la quequeremos conectar, conteniendo en una cadena de texto la información necesaria paraefectuar la conexión mediante parejas de valores separadas por “;”. Hay hasta 7argumentos distintos que se pueden suministrar en esta cadena pero los básicos son: • Data Source Name (DSN) = Nombre ODBC de la base de datos • Usuario: User = nombre de usuario • Password: Password = Password del usuario para la base de datos.Ejemplo:<% conexion.ConnectionString=”DSN=Alumnos;User=Inma;Password=1234” %>2.- Mode: Especifica los permisos de la conexión. Algunos de los valores máshabituales que podemos asignar son: 1 Establece permiso sólo de Lectura 2 Establece permiso sólo de Escritura 3 Establece permiso de Lectura/EscrituraEjemplo: <% conexion.Mode=3 %>MÉTODOS1.- Open: Abre la conexión con la base de datos con los parámetros especificados enlas propiedades2.- Close: Cierra la conexión con la base de datosEjemplo: Página 40 de 48
  41. 41. Active Server Pages<%Set conexion = Server.CreateObject("ADODB.Connection")conexion.ConnectionString = "DSN=Alumnos"conexion.Open ...............conexion.Close%>3.2 RECORDSETCon este objeto accederemos directamente a los datos de las tablas, tanto para leerloscomo para modificarlos.Un objeto Recordset representa una tabla, que puede ser una tabla física de la base dedatos o bien una obtenida mediante una operación como un filtrado o sentencia SQL.En cualquier caso, el objeto representa a la tabla con todos sus registros, aunque sólouno de ellos es el activo. El registro activo es en el que podemos leer o modificar losvalores de los campos. También se le llama cursor.Entendemos como cursor el puntero que nos permite desplazarnos por los registrosdel Recordset. Dependiendo del tipo elegido determinaremos los desplazamientos ycambios realizables en los datos 1.- PROPIEDADES QUE HACEN REFERENCIA AL ORIGEN DE DATOSEstas dos propiedades deben ser asignadas a todo Recordset, pues le dicen la base dedatos y la tabla de la que obtener sus datos.1.- ActiveConnectionComo se ha comentado antes a esta propiedad se le debe asignar un objeto connectionque se haya creado previamente. Indicará al Recordset la base de datos en la quebuscar su tabla.2.- SourceIndica al objeto Recordset la tabla a la que representará. A la propiedad Source se leasigna normalmente una cadena de caracteres con el nombre de la tabla. Sin embargo,también es posible asignarle una sentencia SQL y entonces el objeto Recordset será elresultado de aplicar dicha sentencia.Una vez que hemos determinado la base de datos y la tabla con la que vamos atrabajar debemos indicar, en este orden, cómo nos vamos a mover por la tabla (Tipo Página 41 de 48
  42. 42. Active Server Pagesde Cursor) y el tipo de bloqueo que realizaremos sobre la base de datos con el fin deevitar que dos o más usuarios accedan a modificar un mismo registro a la vezRecordar¡¡¡¡¡ primero se especifica la propiedad del tipo de Cursor y luego el tipo deCerrojo3.- CursorTypeCon esta propiedad especificamos el tipo de cursor que se utiliza para recorrer losregistros de un recordset.Los posibles valores son:1.- adOpenForwardOnly (Valor 0): que como su nombre indica sólo permitemoverse hacia adelante. (no se puede volver hacia atrás) no permite modificacionesen los registros. Por el contrario es el de menos consumo. No vemos los cambiosrealizados en las tablas por otro Recordset. Por defecto toma este valor.2.- adOpenKeyset (Valor 1): Nos permite movernos en los dos sentidos, permitemodificaciones en los registros y además podemos ver los cambios realizados en latabla por otro Recordset a excepción de las nuevas entradas3.- adOpenDynamic (Valor 2): Nos permite movernos en los dos sentidos, permitemodificaciones en los registros y vemos todos los cambios realizados en la tabla porotro Recordset.4.- adOpenStatic (Valor 3): Nos permite movernos en los dos sentidos, no permitemodificaciones en los registros. No vemos los cambios realizados en la tabla por otroRecordset.4.- LockType Página 42 de 48
  43. 43. Active Server PagesIndica el tipo de bloqueo que se realiza sobre la base de datos cuando modificamos unRecordset, a fin de evitar que dos o más usuarios accedan a modificar un mismoregistro a la vez.Los posibles valores son:Por defecto toma el valor adLockReadOnly que como su nombre indica sólo sirvepara leer datos. Si deseamos editar o añadir registros, tendremos que cambiar estapropiedad por otro valor. El más usado es adLockOptimistic que permite editar labase de datos o añadir registros realizando un bloqueo optimista (sólo cuando seaestrictamente necesario)Ejemplo:Aquí creamos en primer lugar un objeto Connection y luego un Recordset al que seasigna dicho objeto. Este ejemplo es una especie de esqueleto para los demás quesigan: Se supone que debe hacerse algo parecido a esto para abrir el Recordset. Esdecir, en los restantes ejemplos escribimos sólo el código que iría en el lugar de lospuntos suspensivos de este script (NOTA: Recuerde que si hay que añadir registros esnecesario cambiar el LockType antes de inicializar el recordset).<%Set miconexion = Server.CreateObject("ADODB.Connection")miconexion.ConnectionString = "DSN=midsn"miconexion.OpenSet mirecordset = Server.CreateObject("ADODB.Recordset")mirecordset.ActiveConnection = miconexionmirecordset.Source = "Clientes"mirecordset.Open........ Operaciones con los datos........ de la tabla Clientes.mirecordset.Closemiconexion.Close%>Definiendo nuestras Constantes: ADOVBS.INC o METADATA Página 43 de 48
  44. 44. Active Server PagesTanto los cursores, como los cerrojos utilizados por ADO deben encontrarsedefinidos como constantes en nuestras aplicaciones para poder ser usados en nuestrocódigo.Uno de los métodos existentes para definir estas constantes consiste en utilizar unabiblioteca de tipos de componentes. Una biblioteca de tipos de componentescorresponde a un archivo que almacena todos los parámetros ADO. Para utilizar estetipo de archivos basta con agregar, al archivo .asp o al Global.asa, la siguiente líneade códigos: <!-- METADATA NAME="Microsoft ActiveX Data Objects 2.5 Library" TYPE="TypeLib" UUID="{00000205-0000-0010-8000-00AA006D2EA4}"-->Otra alternativa, mucho más simple y por ello más utilizada es la de incluir el archivoADOVBS.INC. Este archivo se incluye en la instalación del IIS y contiene todas lasconstantes ADO posibles de utilizar desde ASP. Para poder utilizar este archivo sedebe agregar la siguiente línea en nuestro código: <!-- #include virtual = "adovbs.inc" -->Una vez que hemos incluido este archivo, podremos utilizar las constantes definidasen él, haciendo referencia a los valores declarados para cada uno de los parámetrosADO. Por ejemplo, si queremos definir un recordset que utilice un cursor de tipoadOpenKeySet escribiremos el siguiente código, haciendo referencia al valor 1 quecorresponde a la constante adOpenKeySet: rs.Open SQL, oConn, 1Propiedades que hacen referencia al número de registros:1.- RecordCountNúmero de registros de la tabla a la que representa el objeto Recordset.Ejemplo:<h3>Tenemos <%= rstClientes.RecordCount%> clientes registrados en nuestra basede datos</h3>2.- EOF Página 44 de 48
  45. 45. Active Server PagesAcrónimo de End Of File. Vale TRUE si estamos en el último registro y FALSE sino. Se usa mucho como condición en bucles while, los cuales se ejecutan hasta llegaral último registro.3.- BOFAcrónimo de Begin Of File. Vale TRUE si estamos en el primer registro y FALSE sino.Métodos para mover el cursor (registro activo):Estos métodos pueden funcionar todos o no dependiendo del tipo de cursor creado. Eltipo de cursor se asigna en la propiedad CursorType.Por ejemplo, para asignar un cursor adOpenKeySet que permita moverse haciaadelante o hacia atrás:<%Set miconexion = Server.CreateObject("ADODB.Connection")miconexion.ConnectionString = "DSN=midsn"miconexion.OpenSet mirecordset = Server.CreateObject("ADODB.Recordset")mirecordset.ActiveConnection = miconexionmirecordset.Source = "Clientes"mirecordset.CursorType = adOpenKeySetmirecordset.Open........ Operaciones con los datos........ de la tabla Clientes.mirecordset.Closemiconexion.Close%>Nótese que la asignación de propiedades al recordset debe hacerse antes de invocar elmétodo open que es el que lo inicializa con registros.1.- MoveFirstMueve el cursor al primer registro de la tabla2.- MoveLastMueve el cursor al último registro de la tabla3.- MoveNext Página 45 de 48
  46. 46. Active Server PagesMueve el cursor al siguiente registro4.- MovePreviousMueve el cursor al registro anteriorEjemplo de un bucle que recorre todos los registros de una tabla<%mirecordset.MoveFirstdo while not mirecordset.EOF..... Tratamiento..... de datosmirecordset.MoveNextloop%>Lectura y modificación de los campos del registro activoLa sintaxis para acceder a los datos de un campo del registro activo de un recordset esmirecordset ("Domicilio")Esto se usa tanto para leer como asignar valores. En nuestro ejemplo, el objetomirecordset representa a una tabla uno de cuyos campos tiene el nombre"Domicilio". Así, con la expresióndom = mirecordset("Domicilio")Leemos el valor del campo domicilio del registro activo y se lo asignamos a lavariable dom. Con la expresiónmirecordset("Domicilio") = "C/ Bretón de los Herreros 19, 1º M"mirecordset.Updateasignamos un valor al campo Domicilio del registro activo. Tras la edición delregistro, es necesario llamar al método Update. El motivo es que los cambios en elregistro activo se realizan sobre un buffer (espacio de almacenamiento intermedio) yno sobre el registro propiamente dicho.Ejemplo: Página 46 de 48
  47. 47. Active Server PagesEl recordset rstClientes representa a nuestra tabla de clientes que, entre otros, tienelos campos Provincia e IVA . El siguiente bucle recorre todos los clientes, compruebasu provincia y le asigna el IVA correspondiente: 0 para Canarias y 16 para los demás<%rstClientes.MoveFirstdo while not rstClientes.EOFif rstClientes("Provincia") = "Las Palmas" or rstClientes("Provincia")= "Tenerife" ThenrstClientes("IVA") = 0elserstClientes("IVA") = 16end ifrstClientes.UpdaterstClientes.MoveNextloop%>Métodos para agregar o eliminar registros de la tabla1.- DeleteEliminar el registro activo es muy fácil. Basta con invocar este método. Por ejemplo,este bucle elimina todos los clientes morosos de nuestra base de datos:<%rstClientes.MoveFirstdo while not rstClientes.EOFif rstClientes("Deuda") > 0 ThenrstClientes.Deleteend ifrstClientes.MoveNextloop%>2.- AddNew y UpdateCrear un nuevo registro involucra dos métodos: Primero AddNew crea un nuevoregistro en blanco. Después asignamos valores a los distintos campos del registro. Por Página 47 de 48
  48. 48. Active Server Pagesúltimo invocamos el método Update para que se haga efectiva la incorporación delnuevo registro con los valores asignados.En este ejemplo incorporamos un nuevo cliente a nuestra base de datos<%rstClientes.AddNewrstClientes("Nombre") = "Pepe Gotera"rstClientes("Direccion") = "Rue del Percebe, 13"rstClientes("Localidad") = "Sildavia"rstClientes("Profesion") = "Chapuzas a domicilio"rsClientes.Update%>Recuerde que para que esto funcione hay que asignar un tipo de bloqueo que permitala edición de la base de datos. Esto se hace asignando a la propiedad LockType delrecordset uno de estos valores: adLockOptimistic, adLockPessimistic oadLockBatchOptimistic Página 48 de 48

×