SlideShare ist ein Scribd-Unternehmen logo
1 von 48
Active Server Pages




                 ASP: Active Page Server



1.- INTRODUCCIÓN
ASP (Active Server Page, página activa en el servidor), es la propuesta de Microsoft
para crear páginas Web dinámicas.

Se puede combinar con páginas HTML, secuencias de comandos y componentes
ActiveX, para crear páginas y aplicaciones web interactivas.

El sentido de ASP, es liberar espacio en el servidor: Las páginas HTML son estáticas
y si el servidor tuviese que tenerlas guardadas ocuparían un espacio inmenso. La
solución es tener una fuente de datos y dependiendo de las peticiones del cliente
generar las páginas en ese momento. Cuando el cliente desconecta desaparecen dichas
páginas.

ASP, se basa en la programación para las redes TC-IP que se conoce con el nombre
de programación cliente- servidor que consiste en desdoblar un programa en dos
partes, 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 servidor
se encarga de obtener y manipular los datos.

Hasta ahora nosotros hemos creado aplicaciones con código HTML y algunas con
código ejecutable, a través de JavaScript, pero siempre en el cliente, con nuestro
navegador. A partir de ahora crearemos programas que serán ejecutados por el
servidor y cuya salida se envía al navegador del cliente.




                                                                          Página 1 de 48
Active Server Pages




 2.- Modelo de Páginas ASP
       2.1 - Cliente -> Servidor

Las páginas ASP comienzan a ejecutarse, cuando un usuario solicita un archivo .ASP
al servidor web a través del navegador. El servidor web llama al motor ASP, que lee
el archivo solicitado, ejecuta la secuencia de comandos y envía los resultados al
ordenador del cliente. Puesto que la secuencia de comandos se ejecuta en el servidor
y no en el cliente, es el servidor el que hace todo el trabajo para generar las páginas
que se envían al explorador.

Las secuencias de comandos quedan ocultas al usuario, estos solo reciben el resultado
de la ejecución en formato HTML. El servidor solo envía el resultado en código
HTML interpretable por cualquier navegador.




  3.- Concepto de PG. ASP
Active Server Page (ASP), es un entorno para crear y ejecutar aplicaciones dinámicas
e interactivas en la web.

Se caracteriza por tener en un mismo archivo de extensión .asp código script, que se
ejecuta 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áginas
web 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 solo
código ejecutable (sería como un CGI), o bien ambos, ejecutable en el servido y
ejecutable en el cliente.

Para crear páginas ASP, se utiliza un procesador de texto normal, no es necesario
ningún editor especial.




                                                                         Página 2 de 48
Active Server Pages




4.- Software Necesario.
Para ejecutar una página .asp necesitamos un servidor WEB, y para ello tenemos
dos opciones o bien instalamos un servidor como APACHE, o bien utilizamos un
simulador 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 IIS

2) Para acceder a él: Inicio/Panel de Contrl/Administrador de Herramientas/IIS

3) 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
Active Server Pages

    5.-MARCAS DE CÓDIGO <%............%>
ASP viene de forma nativa con dos motores de comandos, Visual Basic Script y
Microsoft JScript. Pero puede instalar y utilizar otros motores de lenguajes como
ReXX y Perl.

Para establecer el lenguaje principal de secuencias de comandos, en todas las páginas
de una aplicación, hay que agregar la directiva <%@LANGUAGE=VBscript%> o
bien <%@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
         servidor



COMENTARIOS

Para escribir un comentario en VBScript utilizaremos el apóstrofe:



<% ‘este es un comentario de VBScript %>




                                                                         Página 4 de 48
Active Server Pages




Ver 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 le
asigna un nombre.



                                                                    Página 5 de 48
Active Server Pages

6.1.- TIPOS DE DATOS

Existen 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 VARIABLES

Muchos lenguajes de programación requieren que, antes de utilizar una variable se
indique 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 dato
que 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
        caracteres

2.- Declaración Explícita: De esta forma antes de introducir cualquier variable deberemos
introducir la siguiente línea <% OPTION EXPLCIT%> y además declararlas previamente
con DIM.

¿Por qué utilizar declaraciones Explícitas en VBScript ¿Veamos un ejemplo:



                                                                           Página 6 de 48
Active Server Pages

Archivo: 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 nos
dará ningún error, simplemente no mostrará el valor de “miprimeravariable”. Sin
embargo si realizamos una declaración Explícita, nos indicará que el error está en el
nombre 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
Active Server Pages




Normas que se suelen utilizar en VBscript para declarar variables y así saber qué tipo de
variable 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 una
secuencia 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ímite
inferior 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
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 es
utilizando la Función Array

Nuestro ejemplo anterior quedaría:

arrDias = Array(“Domingo”,”Lunes”,“Martes”,“Miércoles”,“Jueves”, “Viernes”,
“Sábado”)



6.4.- CÓMO DETERMINAR EL TIPO DE VARIABLE



Existen dos tipos de funciones para determinar el tipo de datos que será almacenado
en una variable.


                                                                          Página 9 de 48
Active Server Pages

1.- La primera función es VartType, que se utiliza de la siguiente manera:

VarType(nombre_variable) devolviendo un código entero que corresponde al tipo
de datos.



                              1=> Es un dato no valido
                              2=>Entero
                              3=>Entero largo
                              4=>Singer
                              5=>double
                              6=>currency
                              7=>date
                              8=>string

2.- La segunda función es TypeName, ésta devuelve una cadena con el nombre del
tipo 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
Active Server Pages

            /

            5 Mod 3 =>2

            Exponención 3^ 3= 3*3*3

            Concatenación &

            Operadores Lógicos ------AND, OR




Ejemplo:

<%@ 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
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 CONTROL

8.1 -CONDICION “ IF “

      Formato:

             If condición then

                      Bloque de código

             End If



8.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
Active Server Pages

                 End if

        Else

                 Cuarto bloque de código

        End if



No se debe utilizar muchas instrucciones If anidadas ya que dificulta la revisión rápida




8.3 INSTRUCCIONES FOR…….NEXT

Esta instrucción ejecuta un bloque de código un número especificado de veces, mientras
incrementa un contador.

Formato:



        For variable-contador = valor-inicio   to valor- final Step valor-incremental

        Bloque de código

        Next




8.4.- INSTRUCCIONES Do While………Loop

Formato:



        Do While condición

                 Bloque de código

        Loop



El bloque de código se ejecuta mientras que la condición sea verdadera

                                                                               Página 13 de 48
Active Server Pages




8.5.- INSTRUCCIONES Do Until………Loop

Es muy parecida a la anterior , la única diferencia es que el ciclo se ejecuta hasta que la
condición es verdadera y no falsa. Ambos tipos de instrucciones oueden realizar las mismas
funciones, la única diferencia es que la condición se escribe en forma positiva o negativa

Formato:

               Do Until condición

                       Bloque de código

               Loop




Ver Ejemplos

3Estructuras de Control




                                                                           Página 14 de 48
Active Server Pages




9.- SUBRUTINAS

Las subrutinas también llamados procedimientos realizan acciones

Formato:

        Sub nombre

                Bloque de código

        End Sub



La llamada a una subrutina indica al sistema que ejecute la subrutina y después
regrese a la ejecución normal de la secuencia de comandos.

Dentro de la subrutina se puede crear un bucle for por ejemplo. Los procedimientos no
devuelven un valor, sino que realizan la ejecución de lo que haydentro de él. La función
principal 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>")
  Next
End Sub

10.- FUNCIONES

Las funciones calculan valores.


                                                                              Página 15 de 48
Active Server Pages

Diferencia 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ínea

Por otra parte las funciones devuelven valores, lo que significa que una llamada a
función puede colocarse en una expresión, se le pueden agregar elementos, etc.




Formato:



       Function nombre_funcion (parámetros)

           ……

       End Function




Para llamar a una función : Nombrefunción (listaparámetros), si la función no tiene
pará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 si
tenemos código (bien sea HTML o ejecutable) que se va a repetir en distintas páginas
web.

Por ejemplo, tenemos un pie de página común para todas nuestras páginas web. En
lugar de escribir el código en todas ellas, creamos un archivo con el pie de página y lo
incluimos en todas las páginas de nuestra web. No sólo ahorraremos trabajo, sino que



                                                                        Página 16 de 48
Active Server Pages

si queremos modificar el pie de página, bastará con modificar un archivo y
automáticamente se reflejará el cambio en toda la web.

En el caso del código de servidor, resulta muy útil crear bibliotecas de funciones que
se puedan reutilizar más adelante. Una forma de reutilizar funciones es guardarlas en
archivos e incluir éstos cuando sea necesario. Esto es mucho mejor que copiar y pegar
la función. Ahorra trabajo y al igual que antes, si realizamos una mejora en la función
se 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 en
PerlScript, se pueden utilizar las facilidades del lenguaje para incluir código de otros
scripts 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 que
se encuentra el ASP que se está ejecutando. En nuestro ejemplo, archivo.asp está en
el 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 es
www.midominio.com/dirweb/archivo.asp. Es decir, en el primer caso nos referimos a
archivos según la estructura de directorios, y en el segundo, según la estructura de la
web.

El archivo a incluir no tiene por qué ser un ASP, puede tener cualquier extensión. Si
se trata de archivos que sólo están pensados para ser incluídos, es una buena práctica
de programación el colocarles la extensión .inc. El preprocesado de los #include es
previo a la ejecución del script, por lo que no puede haber includes condicionados a
sentencias if then. Hay que imaginarse que cada include es sustituido por el archivo
completo y que entonces es cuando se procesa el código ASP.




                                                                         Página 17 de 48
Active Server Pages




                      OBJETOS ASP



Cada script ASP dispone desde el momento en que es ejecutado de una serie de
objetos predefinidos. No es necesario crear estos objetos ya que vienen integrados en
ASP. Se encuentran disponibles para cualquier script y permiten realizar funciones
básicas como averiguar los parámetros pasados al script, enviar información al
usuario, guardar variables persistentes, etcétera. Aquí exponemos un breve resumen
de 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 su
navegador. Response también puede controlar la forma y el momento en que se
envían los datos, y escribir cookies para almacenar información.

MÉTODOS MÁS IMPORTANTES

1.- Response.Write (“cadena de caracteres”): Envía la cadena de caracteres al
cliente. 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
Active Server Pages

Esto 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 del
Response.Write esté lo ejecutará sacando en el navegador su resultado.



2.- Response.Write(Server.HTMLEncode) :Utilizaremos esta sentencia si lo que
pretendemos es enviar texto codificado para que el explorador no lo interprete como
HTML.

Ejemplo:

<%
Response.Write (Server.HTMLEncode(“<P align=right>"))
%>

Ocasionará que se implima <P align=right> en la pantalla sin interpretarlo como
HTML.



3.- Response.Redirect (Url) : Redirige la página ASP a la URL especificada. Por
ejemplo, esto que sigue es una página ASP completa que simplemente redirige a la
web www.arsys.es. Pg 190

<% Response.Redirect ("http://www.arsys.es") %>

La redirección se implementa mediante cabeceras HTTP que son distintas que las
enviadas cuando se muestra una página web. Eso significa que si se utiliza
Response.Write o se intercala cualquier código HTML, ya no funcionará un posterior
Response.Redirect porque se habrán enviado las cabeceras de mostrar una página
web, no las de redirección. Es decir sólo funcionará si no se le ha enviado algo al
cliente. Esto significa que debemos colocar el Response.Redirect antes de enviar
cualquier 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 se
explica a continuación.

4.- Response.Buffer. Si se establece en True, se utiliza un búffer para la salida de
datos, en combinación con los métodos anteriormente descritos. A pesar de la
insistencia en el buffer, es algo que prácticamente no se usa a no ser que sea
realmente 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 True
la propiedad Response.Buffer, la salida del script (enviada mediante comandos
Response.Write o HTML intercalado) no se envía directamente al navegador, sino


                                                                       Página 19 de 48
Active Server Pages

que queda en un buffer (espacio intermedio de almacenamiento) del servidor. El
método Response.Flush envía los datos del buffer al navegador. Otra forma de enviar
los datos del buffer es simplemente dejar que termine el script o invocar el método
End. 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. Al
llamar a Response.Clear el búfer será vaciado. ¿Por qué es deseable esto? Talvez
tnemos una página que no queremos que sea vista bajo un conjunto de circunstancias
especiales. Si la página no sabe que dichas circunstancias se han cumplido, hasta que
la 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 el
almacenamiento en búfer está activado y hay muchos datos almacenados, éstos son
enviados. 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 de
comandos termine por sí misma y , por lo tanto, debe evitarse si es posible. No
obstante, puede ser útil al detectar problemas (tales como datos erróneos), sobre todo
para evitar que éstos empeoren.



8.- Response.Expires: se utiliza para especificar por cuanto tiempo, desde el
momento actual debe almacenarse una página en cache.

       <%Response.Expires= 4 %> le estamos indicando al explorador que la pagina
que se guarda en caché, debe caducar a los 4 min.



9.- Response.ExpiresAbsolute. le indica al navegador que la página almacenada en
caché 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ó.
Active Server Pages




2.-OBJETO REQUEST


 Este objeto se utiliza para recuperar los valores de un campo de formulario. Este
objeto tiene cuatro colecciones, de momento nos ocuparemos de dos : Form y
QueryString



1.-Request.Form(Nombrevariable): Recupera los valores de un campo de
formulario 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
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 formulario




Tambié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.Form
Response.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 de
formulario cuando éste tiene su propiedad METHOD establecida como GET. En este
caso se pasan los valores de los campos de formulario a través de la cadena de
consulta.

Por ejemplo:

       http://www.dominio.com/cgi-bin/miprog.asp?nombre=Pepe&apellido=Gotera



3.- Request.ServerVariables: Cada vez que visitamos una página Web, nuestro
explorador envía gran cantidad de información al servidor Web. La colección
ServerVariables puede acceder a esta información. Asimismo, el servidor Web tiene
muchas 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 el
URL de la página Web solicitada, sino también alguna información adicional que


                                                                       Página 22 de 48
Active Server Pages

consiste en datos del cliente que pueden resultar muy útiles. Por ejemplo, el tipo de
explorador que se está utilizando, el sistema operativo que está ejecutando el cliente y
el URL de donde proviene el usuario. Cada segmento de información adicional se
conoce como : Encabezado de solicitud porque son enviados cuando el cliente
solicita una página Web.

Cuando el servidor devuelve al cliente la página Web solicitada, también envía un
conjunto de encabezados, conocidos como Encabezados de Respuesta. Los
encabezados de respuesta son porciones adicionales de información acerca de la
página Web que está siendo enviada al cliente. Tanto los encabezados de solicitud
como los de respuesta se conocen comúnmente como encabezados HTTP.

¿Qué encabezados envía el explorador al servidor web? El explorador podría enviar
cualquier encabezado que eligiera. Existe un conjunto estándar de encabezados que la
gran mayorñia de exploradores envía al servidor Web. De estos encabezados uno de
los más útiles es el User-Agent.

Este encabezado contiene la información sobre el explorador que se está utilizando y
el sistema operativo del cliente. Una página ASP puede utilizar esta información para
personalizar el contenido basándose en el tipo de explorador que el visitante utilice.
Por ejemplo : Netscape Nvigator e Internet Explorer manejan en forma diferente las
hojas de estilo, si quisiéramos utilizar hojas de estilo en nuestro sitio web podríamos
utilizar ASP para determinar el tipo de explorador que hace la solicitud de la página
ASP y después ajustar las definiciones de la hoja de estilo para que correspondan con
el explorador específico.



                      ENCABEZADOS HTTP ESTÁNDAR


  NOMBRE DEL ENCABEZADO                                   DESCRIPCIÓN
HTTP_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 idiomas
HTTP_CONNECTION                             El tipo de conexión establecida entre el
                                            cliente y el servidor Web.
HTTP_HOST                                   El nombre de host de la computadora del
                                            cliente
HTTP_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 momento
HTTP_COOKIE                                 Las cookies enviadas desde el explorador
Active Server Pages




LECTURA DE ENCABEZADOS HTTP CON Request.ServerVariables



1.- Para desplegar una lista exacta de los encabezados enviados por el explorador al
servidor Web.

<% =Request.ServerVariables(“ALL_RAW”) %>

2.- Para desplegar una lista de encabezados con formato utilizaremos la siguiente
instrucción

<% =Request.ServerVariables(“ALL_HTTP”) %>

3.- Para desplegar un encabezado HTTP         específico, utilizaremos el siguiente
formato:

<% =Request.ServerVariables(“HTTP_NombreEmcabezado”) %>




ACCESO A LAS VARIABLES DE AMBIENTE CON Request.ServerVariables

Las variables de ambiente son segmentos de información que proporciona el servidor
Web a cualquier programa que las solicita. Esta información la podemos obtener a
través de Request.ServerVariables. Las variables de ambiente contienen información
como el nombre del servidor Web, el Url de la página ASP procesada actualmente o
el nombre del software que el servidor Web está utilizando




                                                                     Página 24 de 48
Active Server Pages



                     VARIABLES DE AMBIENTE ÚTILES


 VARIABLE DE AMBIENTE                              DESCRIPCIÓN
URL                                 El URL de la página ASP que esta después de
                                    http://www.suServidorweb.com/ hasta la
                                    cadena de consulta
PATH_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 web
SERVER_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 almacenar
pequeños segmentos de información en la computadora del cliente. Estos segmentos
de información pueden utilizarse para identificar a un visitante anterior o para
personalizar el contenido de sus páginas Web para cada visitante específico.




                      REALIZAR PRÁCTICAS
1. Realiza una página Web que nos pida por pantalla el nombre y el apellido de
forma que al pulsar el botón de enviar nos lleve a otra página mostrando el
nombre y el apellido. (en el action tenemos que poner comillas y el nombre de la
pagina .asp donde vamos a almacenar la información)




                                                                  Página 25 de 48
Active Server Pages

2. Realiza una pagina que nos muestre un menú desplegable con varias
direcciones de Internet, de forma que al seleccionar una y pulsar el botón de
enviar nos lleve a ella.

3. Realiza una página que nos muestre un formulario con la opción de
seleccionar 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 idiomas
seleccionados.

4. Realiza una página que muestre un formulario donde se recoja el precio de un
producto cualquiera de forma que al pulsar el botón de envío nos devuelva el
precio del producto incrementando el IVA (18%). Para ello utilizad funciones.

5. Realiza una página que nos muestre por pantalla todos los enacabezados
HTTP.

6. Realiza una página que nos muestre por pantalla todas las variables de
ambiente.




3.-OBJETO SERVER


El objeto Server sólo tiene un método importante, pero es el más importante de
todo el esquema ASP, ya que es el que permite crear objetos componentes y
extender la funcionalidad del ASP de forma ilimitada. Con el Visual Basic Script del
ASP y sin utilizar objetos componentes, no se puede hacer prácticamente nada; ni
siquiera leer un archivo del disco. Toda la funcionalidad reside en objetos
componentes ActiveX.

El método Server.CreateObject:      Crea una instancia del componente de servidor
que 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 la
forma Vendedor.Componente. Por ejemplo:

<%
Set herram = Server.CreateObject ("MSWC. Tools")
if herram.FileExists ("mipagina.html") Then
%>


                                                                     Página 26 de 48
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 la
instalación de ASP. No es un objeto predefinido como Response o Request, sino que
hay que crearlo como cualquier otro. En VisualBasic los objetos se asignan a
variables utilizando Set. Después de creado, podemos acceder a sus métodos y
propiedades. En este caso, utilizamos el método FileExists que nos dice si existe o no
un archivo dada su URL relativa.




4.-OBJETO SESSION


Só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 sus
maravillosos métodos, propiedades o colecciones? Respuesta: lo interesante del
objeto Session son las variables que nosotros podemos guardar en él. Esas
variables 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, podremos
incorporarlo a todas las demás páginas, ya que ese dato no se pierde al terminar el
script. Además, aunque haya varios usuarios viendo simultáneamente las páginas no
hay problema, ya que cada uno tiene un objeto sesión distinto. La sintaxis es:

Session("variable") = valor

Esto guarda el valor en la variable. Para recuperarlo más adelante en éste u otro script
distinto, sólo tendríamos que escribir Session("variable").

$Session{variable} = valor




Ejemplo

Puede guardar este script con el nombre p2.asp. Se guarda el nombre del usuario en el
objeto Session.

<html>
<head>


                                                                         Página 27 de 48
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 ">
<%
else
Response.Write ("Su nombre es " & nombre & ". No se preocupe
que no se me va a olvidar.")
Session("Nombre") = nombre
end if
%>
</body>
</html>

Para escribir el nombre del usuario en páginas ASP posteriores a ésta, basta con que
intercale el código

<%= Session("Nombre") %>

en el HTML de la página.

Una vez definida, la variable Session, será almacenada en memoria y podrá ser
empleada      en       cualquier       script     del     sitio    web.

La duración de una sesión viene definida por defecto en 20 minutos. Esto quiere decir
que si en 20 minutos no realizamos ninguna acción, el servidor dará por finalizada la
sesión y todas las variables Session serán abandonadas. Esta duración puede ser
modificada          con           la          propiedad          Timeout:

Session.Timeout = n° de minutos que queramos que dure

Una forma de borrar las variables Session sin necesidad de esperar a que pase este
plazo      es      a        partir      del       método         Abandon:

Session.Abandon
De este modo todas las variables Session serán borradas y la sesión se dará por
finalizada. Este método puede resultar practico cuando estemos haciendo pruebas con
el script y necesitemos reinicializar las variables.



                                                                      Página 28 de 48
Active Server Pages




4.-OBJETO APPLICATION
Es prácticamente igual que el objeto Session y sirve para lo mismo (guardar
variables), con la única diferencia de que las variables son únicas para la aplicación
en su conjunto, no para cada sesión de usuario. Por tanto, en el objeto Application
se deben guardar variables que vayan a ser comunes a todos los usuarios, no las
específicas como su nombre. Esto implica también que si deseamos modificar el valor
de una variable guardada en el objeto Application, es necesario bloquear el objeto
para evitar que desde otra sesión se acceda simultáneamente a la misma variable. Para
ello existen los métodos Lock y Unlock.

El método Application.Lock

Bloquea el objeto impidiendo que otros clientes modifiquen cualquier variable
guardada.

El método Application.Unlock

Desbloquea el objeto permitiendo que otros clientes modifiquen las variables del
objeto Application.

Ejemplo

Una variable típica para guardar en el objeto Application es el número de visitas a la
web. La variable no debe estar asociada a un cliente en concreto, sino que debe ser
general. En la página en cuestión pondríamos el siguiente código:

<%
Application.Lock
Application("NumVisitas") = Application("NumVisitas") + 1
Application.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.asa

Los objetos Application y Session tienen eventos al estilo de los formularios de
Visual Basic, sólo que mucho más limitados. De hecho cada objeto sólo tiene dos
eventos: uno que se lanza cuando es creado y otro cuando es destruido. Eso significa
que podemos escribir código de inicialización que se ejecutará cada vez que un
usuario acceda por primera vez a nuestras páginas (creación de un objeto Session) o


                                                                       Página 29 de 48
Active Server Pages

cuando 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 usuario
o 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 debe
estar en el directorio raíz de la aplicación. El archivo global.asa es opcional y puede
contener 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 o
aplicació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 se
indica en el ejemplo de global.asa siguiente:

<SCRIPT LANGUAGE=VBScript RUNAT=Server>
sub Application_onStart
Application("NumSesionesActivas") = 0
Application("NumSesionesTotales") = 0
End sub
sub Session_onStart
Application.Lock
Application("NumSesionesActivas") =
Application("NumSesionesActivas") + 1
Application("NumSesionesTotales") =
Application("NumSesionesTotales") + 1
Application.UnLock
End sub
sub Session_onEnd
Application.Lock
Application("NumSesionesActivas") =
Application("NumSesionesActivas") -1
Application.UnLock
End sub
sub Application_onEnd
End sub
</SCRIPT>

Aquí se utilizan los eventos para guardar el número de sesiones activas y totales de
nuestra aplicación, es decir, el número de clientes que nos está viendo en un momento
dado, y el total que nos ha visitado. Como se trata de datos globales y no ligados a
una sesión, hay que guardarlos en el objeto Application, y cuando se quieren
modificar, es necesario bloquear primero dicho objeto.



                                                                        Página 30 de 48
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ón
de una sesión se mida por el tiempo de inactividad del usuario. Para medir éste el
objeto Session dispone de una propiedad llamada Session.Timeout en la que el
tiempo se mide en minutos. Cuando un usuario de Internet ve por primera vez
cualquier página ASP de nuestra aplicación, el servidor web automáticamente le
envía un cookie y crea para él un objeto Session con llamada al evento de creación
que se encuentre en global.asa. Si pasan los minutos indicados en Session.Timeout
sin que el usuario haya visto una nueva página, la sesión se da por concluida y el
objeto Session del usuario es destruido.

El cookie es una pieza de información que el servidor web envía al cliente para que se
guarde en su disco duro. Cuando el cliente vuelve al sitio web reenvía el cookie al
servidor y de esa forma éste puede distinguir a los usuarios y hacerles un seguimiento
individual.

Más sobre objetos componentes: alcance y creación

Los objetos que se crean mediante Server.CreateObject (ProgID) tienen un alcance a
nivel de script, es decir, cuando termina el script los objetos son eliminados. Sin
embargo, en ciertas ocasiones será conveniente que los objetos tengan duración de
sesión o incluso de aplicación. Hay dos formas de dar alcance de sesión o de
aplicació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 objeto
Session
Set Session("miobjeto") = Server.CreateObject("MPX.Tool")
........
........
' Para verlo después en otra página ASP
Set miobjeto = Session("miobjeto")
miobjeto.show
%>

1. Realiza una página que recoja tu nombre y con un botón de envío te lleve a
otra página donde te saldrá un mensaje de bienvenida con tu nombre. Además a
parecerá un formulario donde deberás seleccionar distintas aficiones de forma
que al pulsar el botón de envío te llevará a una página donde mostrará tu
nombre con las aficiones seleccionadas.

                                                                        Página 31 de 48
Active Server Pages




               OBJETOS DEL SERVIDOR




1.-COMPONENTES ACTIVEX
Los comoponentes ActiveX se han diseñado para que se ejecuten en el servidor
Web como parte de las aplicaciones Web , proporcionan funcionalidad a las
aplicaciones, como el acceso a ficheros, Bases de datos, etc. Existen componentes
ActiveX 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 datos

Su 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) se
caracteriza 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, realizar
cálculos o representar datos, y que se insertan en páginas web a través de las etiquetas

                                                                        Página 32 de 48
Active Server Pages

<OBJECT> y <PARAM>, que se corresponden a las operaciones de inserción del
componente 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 lado
cliente como en el lado servidor. Esta es la diferencia fundamental entre un control
ActiveX, que se ejecuta localmente en nuestra aplicación, de un objeto ActiveX, que
utiliza un "automation interface" (o interfaz automatizada) para que otras aplicaciones
o herramientas de programación puedan utilizarlo.

Se denomina formalmente componente al objeto ActiveX y no al control. Un
componente 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. En
esta guía de referencia obviaremos los controles (en clara desventaja) frente a las
posibilidades que nos ofrecen los objetos de servidor, al poder combinarse, a través
de ASP, con scripts y páginas HTML para poder crear webs profesionales. Su
funcionamiento 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 de
programació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ódigo
para poder usar el objeto, una vez instalado en el servidor sobre el que vaya a
ejecutarse. Se trata, principalmente de una línea en la que crea una "instancia" del
objeto que va a usar, y el resto de código que utiliza los métodos y propiedades de la
instancia que acaba de crear. Por ejemplo, si escribimos en una página ASP, el código
debe quedar de la forma:

<%
Set OBJETO = Server.CreateObject(IDENTIFICADOR)
OBJETO.Metodo(Argumentos)
.......
%>

El parámetro "IDENTIFICADOR" es un identificador único del componente que
suele       darse         en       la        forma         Vendedor.Componente.
Los valores "OBJETO.Metodo(Argumentos)" referencian a las funciones, y
parámetros que necesitan las mismas para su llamada, que incorpora el componente
que estamos usando.

Por ejemplo, el componente Acceso a bases de datos utiliza objetos de datos de
ActiveX (ADO) para proporcionar un fácil acceso a la información almacenada en
una base de datos (o en otra estructura de datos en forma de tabla), que cumpla con el

                                                                        Página 33 de 48
Active Server Pages

estándar ODBC (Open DataBase Connectivity). A continuación se muestra el código
que tendría que colocar en su página ASP para poder usar este objeto:

<%
'Aquí creamos la instancia del objeto
Set miconexion = Server.CreateObject("ADODB.Connection")
'Ahora usamos la instancia y sus propiedades para nuestros fines
'Indicamos al objeto la cadena de conexión
miconexion.ConnectionString = "DSN=midsn"
'Se abre la base de datos
miconexion.Open
' .......
'........
'Se cierra la base de datos
miconexion.Close
%>



Así pues, una de las características más interesantes de ASP es su facilidad para el
manejo de bases de Datos que residen en el servidor. Esto lo conseguimos mediante
el uso de ADO (ActiveX Data Object), de forma fácil, rápida y con un mínimo
consumo de rescursos del sistema.

Por otra parte ADO (ActiveX Data Object) para el acceso a una base de datos usa
ODBC (Open Data Base Connectivity), es una utilidad de Windows que permite a
las aplicaciones acceder a los datos usando SQL como lenguaje estándar.




                                                                     Página 34 de 48
Active Server Pages




2.-FUENTES DE DATOS ODBC
Como se ha escrito anteriormente Open Data Base Connectivity es una utilidad de
Windows, concretamente la encontramos en Inicio/Panel de Control/Herramientas
Administrativas




Se pueden configurar tres diferentes fuentes de datos ODBC, la forma más interesante
es la DSN de Sistema, que presenta la ventaja de poder ser accedida por cualquier
usuario, siendo el tipo usado en las aplicaciones ASP.




                                                                     Página 35 de 48
Active Server Pages

Para declarar una base de datos ODBC haremos doble clic en el icono Fuentes de
Datos 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 el
sistema. Al definir un DSN hay que especificar tanto la ruta completa del archivo de
base 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 para
poder abrirla, consultarla, modificarla, etc.




Pulsaremos el botón AGREGAR para añadir una fuente de datos, lo que nos llevará a
la pantalla de controladores.




                                                                     Página 36 de 48
Active Server Pages




En esta ventana elegiremos el driver adecuado para la tecnología de la base de datos
que queremos tratar desde nuestras páginas ASP y pulsaremos finalizar. La siguiente
pantalla que se nos muestra nos pedirá la ubicación física de nuestra base de datos y
el nombre ODBC con el que queremos acceder a ella.




                                                                      Página 37 de 48
Active Server Pages




Nombre 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 datos

Base de datos: Es el camino físico de la base de datos, para establecerlo pulsaremos
el botón SELECCIONAR y mediante un explorador elegiremos nuestra base de
datos.

Una vez hecho esto pulsaremos el botón ACEPTAR y ya tendremos nuestra base de
datos disponible para su uso desde nuestras aplicaciones WEB.

Ya sabemos conectar ASPADOODBC, nos queda conocer los objetos ADO para
realizar todo esto




3.- OBJETOS ADO

                                                                     Página 38 de 48
Active Server Pages



ADO está formado por varios objetos organizados de forma jerárquica (cada uno de
ellos con sus métodos y propiedades específicos) de los cuales vamos a estudiar los
más interesantes.



3.1 CONNECTION
Este objeto lo podemos considerar como el más importante, estaría en la cúspide de la
estructura jerárquica comentada anteriormente.

Representa una conexión a una base de datos desde una página ASP. Esta conexión
nos 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 que
nos permite realizar consultas (Command) disponen de una propiedad llamada
ActiveConnection que es una referencia al objeto Connection que enlaza con la base
de 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 por
medio de la propiedad CreateObject del objeto Server.

       <% Set conexion=Server.CreateObject(“ADODB.Connection”) %>

Una vez establecida la instancia del objeto pasamos a configurarlo mediante sus
propiedades y métodos:




                                                                      Página 39 de 48
Active Server Pages

PROPIEDADES



1.- ConnectionString: Especifica la referencia a la base de datos con la que
queremos conectar, conteniendo en una cadena de texto la información necesaria para
efectuar la conexión mediante parejas de valores separadas por “;”. Hay hasta 7
argumentos 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ás
habituales que podemos asignar son:

       1 Establece permiso sólo de Lectura

       2 Establece permiso sólo de Escritura

       3 Establece permiso de Lectura/Escritura

Ejemplo:

       <% conexion.Mode=3 %>



MÉTODOS



1.- Open: Abre la conexión con la base de datos con los parámetros especificados en
las propiedades

2.- Close: Cierra la conexión con la base de datos




Ejemplo:

                                                                    Página 40 de 48
Active Server Pages



<%
Set conexion = Server.CreateObject("ADODB.Connection")
conexion.ConnectionString = "DSN=Alumnos"
conexion.Open
' .......
'........
conexion.Close
%>

3.2 RECORDSET
Con este objeto accederemos directamente a los datos de las tablas, tanto para leerlos
como para modificarlos.

Un objeto Recordset representa una tabla, que puede ser una tabla física de la base de
datos 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ólo
uno de ellos es el activo. El registro activo es en el que podemos leer o modificar los
valores de los campos. También se le llama cursor.

Entendemos como cursor el puntero que nos permite desplazarnos por los registros
del Recordset. Dependiendo del tipo elegido determinaremos los desplazamientos y
cambios realizables en los datos

 1.- PROPIEDADES QUE HACEN REFERENCIA AL ORIGEN DE DATOS

Estas dos propiedades deben ser asignadas a todo Recordset, pues le dicen la base de
datos y la tabla de la que obtener sus datos.

1.- ActiveConnection

Como se ha comentado antes a esta propiedad se le debe asignar un objeto connection
que se haya creado previamente. Indicará al Recordset la base de datos en la que
buscar su tabla.

2.- Source

Indica al objeto Recordset la tabla a la que representará. A la propiedad Source se le
asigna 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á el
resultado de aplicar dicha sentencia.

Una vez que hemos determinado la base de datos y la tabla con la que vamos a
trabajar debemos indicar, en este orden, cómo nos vamos a mover por la tabla (Tipo

                                                                        Página 41 de 48
Active Server Pages

de Cursor) y el tipo de bloqueo que realizaremos sobre la base de datos con el fin de
evitar que dos o más usuarios accedan a modificar un mismo registro a la vez



Recordar¡¡¡¡¡ primero se especifica la propiedad del tipo de Cursor y luego el tipo de
Cerrojo

3.- CursorType

Con esta propiedad especificamos el tipo de cursor que se utiliza para recorrer los
registros de un recordset.

Los posibles valores son:

1.- adOpenForwardOnly (Valor 0): que como su nombre indica sólo permite
moverse hacia adelante. (no se puede volver hacia atrás) no permite modificaciones
en los registros. Por el contrario es el de menos consumo. No vemos los cambios
realizados en las tablas por otro Recordset. Por defecto toma este valor.

2.- adOpenKeyset (Valor 1): Nos permite movernos en los dos sentidos, permite
modificaciones en los registros y además podemos ver los cambios realizados en la
tabla por otro Recordset a excepción de las nuevas entradas

3.- adOpenDynamic (Valor 2): Nos permite movernos en los dos sentidos, permite
modificaciones en los registros y vemos todos los cambios realizados en la tabla por
otro Recordset.

4.- adOpenStatic (Valor 3): Nos permite movernos en los dos sentidos, no permite
modificaciones en los registros. No vemos los cambios realizados en la tabla por otro
Recordset.




4.- LockType



                                                                       Página 42 de 48
Active Server Pages

Indica el tipo de bloqueo que se realiza sobre la base de datos cuando modificamos un
Recordset, a fin de evitar que dos o más usuarios accedan a modificar un mismo
registro a la vez.

Los posibles valores son:

Por defecto toma el valor adLockReadOnly que como su nombre indica sólo sirve
para leer datos. Si deseamos editar o añadir registros, tendremos que cambiar esta
propiedad por otro valor. El más usado es adLockOptimistic que permite editar la
base de datos o añadir registros realizando un bloqueo optimista (sólo cuando sea
estrictamente necesario)




Ejemplo:

Aquí creamos en primer lugar un objeto Connection y luego un Recordset al que se
asigna dicho objeto. Este ejemplo es una especie de esqueleto para los demás que
sigan: Se supone que debe hacerse algo parecido a esto para abrir el Recordset. Es
decir, en los restantes ejemplos escribimos sólo el código que iría en el lugar de los
puntos suspensivos de este script (NOTA: Recuerde que si hay que añadir registros es
necesario cambiar el LockType antes de inicializar el recordset).

<%
Set miconexion = Server.CreateObject("ADODB.Connection")
miconexion.ConnectionString = "DSN=midsn"
miconexion.Open
Set mirecordset = Server.CreateObject("ADODB.Recordset")
mirecordset.ActiveConnection = miconexion
mirecordset.Source = "Clientes"
mirecordset.Open
........ ' Operaciones con los datos
........' de la tabla Clientes.
mirecordset.Close
miconexion.Close
%>




Definiendo nuestras Constantes: ADOVBS.INC o METADATA


                                                                       Página 43 de 48
Active Server Pages

Tanto los cursores, como los cerrojos utilizados por ADO deben encontrarse
definidos como constantes en nuestras aplicaciones para poder ser usados en nuestro
código.

Uno de los métodos existentes para definir estas constantes consiste en utilizar una
biblioteca de tipos de componentes. Una biblioteca de tipos de componentes
corresponde a un archivo que almacena todos los parámetros ADO. Para utilizar este
tipo de archivos basta con agregar, al archivo .asp o al Global.asa, la siguiente línea
de 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 archivo
ADOVBS.INC. Este archivo se incluye en la instalación del IIS y contiene todas las
constantes ADO posibles de utilizar desde ASP. Para poder utilizar este archivo se
debe agregar la siguiente línea en nuestro código:

                  <!-- #include virtual = "adovbs.inc" -->

Una vez que hemos incluido este archivo, podremos utilizar las constantes definidas
en él, haciendo referencia a los valores declarados para cada uno de los parámetros
ADO. Por ejemplo, si queremos definir un recordset que utilice un cursor de tipo
adOpenKeySet escribiremos el siguiente código, haciendo referencia al valor 1 que
corresponde a la constante adOpenKeySet:

                              rs.Open SQL, oConn, 1




Propiedades que hacen referencia al número de registros:

1.- RecordCount

Número de registros de la tabla a la que representa el objeto Recordset.

Ejemplo:

<h3>Tenemos <%= rstClientes.RecordCount%> clientes registrados en nuestra base
de datos</h3>

2.- EOF




                                                                           Página 44 de 48
Active Server Pages

Acrónimo de End Of File. Vale TRUE si estamos en el último registro y FALSE si
no. Se usa mucho como condición en bucles while, los cuales se ejecutan hasta llegar
al último registro.

3.- BOF

Acrónimo de Begin Of File. Vale TRUE si estamos en el primer registro y FALSE si
no.

Métodos para mover el cursor (registro activo):

Estos métodos pueden funcionar todos o no dependiendo del tipo de cursor creado. El
tipo     de     cursor  se      asigna    en     la    propiedad      CursorType.
Por ejemplo, para asignar un cursor adOpenKeySet que permita moverse hacia
adelante o hacia atrás:

<%
Set miconexion = Server.CreateObject("ADODB.Connection")
miconexion.ConnectionString = "DSN=midsn"
miconexion.Open
Set mirecordset = Server.CreateObject("ADODB.Recordset")
mirecordset.ActiveConnection = miconexion
mirecordset.Source = "Clientes"
mirecordset.CursorType = adOpenKeySet
mirecordset.Open
........ ' Operaciones con los datos
........' de la tabla Clientes.
mirecordset.Close
miconexion.Close
%>

Nótese que la asignación de propiedades al recordset debe hacerse antes de invocar el
método open que es el que lo inicializa con registros.



1.- MoveFirst

Mueve el cursor al primer registro de la tabla

2.- MoveLast

Mueve el cursor al último registro de la tabla

3.- MoveNext


                                                                      Página 45 de 48
Active Server Pages

Mueve el cursor al siguiente registro

4.- MovePrevious

Mueve el cursor al registro anterior

Ejemplo de un bucle que recorre todos los registros de una tabla

<%
mirecordset.MoveFirst
do while not mirecordset.EOF
..... ' Tratamiento
..... ' de datos
mirecordset.MoveNext
loop
%>

Lectura y modificación de los campos del registro activo

La sintaxis para acceder a los datos de un campo del registro activo de un recordset es

mirecordset ("Domicilio")

Esto se usa tanto para leer como asignar valores. En nuestro ejemplo, el objeto
mirecordset representa a una tabla uno de cuyos campos tiene el nombre
"Domicilio". Así, con la expresión

dom = mirecordset("Domicilio")

Leemos el valor del campo domicilio del registro activo y se lo asignamos a la
variable dom. Con la expresión

mirecordset("Domicilio") = "C/ Bretón de los Herreros 19, 1º M"
mirecordset.Update

asignamos un valor al campo Domicilio del registro activo. Tras la edición del
registro, es necesario llamar al método Update. El motivo es que los cambios en el
registro activo se realizan sobre un buffer (espacio de almacenamiento intermedio) y
no sobre el registro propiamente dicho.




Ejemplo:

                                                                        Página 46 de 48
Active Server Pages

El recordset rstClientes representa a nuestra tabla de clientes que, entre otros, tiene
los campos Provincia e IVA . El siguiente bucle recorre todos los clientes, comprueba
su provincia y le asigna el IVA correspondiente: 0 para Canarias y 16 para los demás

<%
rstClientes.MoveFirst
do while not rstClientes.EOF
if rstClientes("Provincia") = "Las Palmas" or rstClientes("Provincia")
= "Tenerife" Then
rstClientes("IVA") = 0
else
rstClientes("IVA") = 16
end if
rstClientes.Update
rstClientes.MoveNext
loop
%>

Métodos para agregar o eliminar registros de la tabla

1.- Delete

Eliminar 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.MoveFirst
do while not rstClientes.EOF
if rstClientes("Deuda") > 0 Then
rstClientes.Delete
end if
rstClientes.MoveNext
loop
%>




2.- AddNew y Update

Crear un nuevo registro involucra dos métodos: Primero AddNew crea un nuevo
registro en blanco. Después asignamos valores a los distintos campos del registro. Por


                                                                        Página 47 de 48
Active Server Pages

último invocamos el método Update para que se haga efectiva la incorporación del
nuevo registro con los valores asignados.

En este ejemplo incorporamos un nuevo cliente a nuestra base de datos

<%
rstClientes.AddNew
rstClientes("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 permita
la edición de la base de datos. Esto se hace asignando a la propiedad LockType del
recordset uno de estos valores: adLockOptimistic, adLockPessimistic o
adLockBatchOptimistic




                                                                        Página 48 de 48

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (15)

EQUIPO 2,LAS AGUILAS
EQUIPO 2,LAS AGUILASEQUIPO 2,LAS AGUILAS
EQUIPO 2,LAS AGUILAS
 
Curso Java Avanzado 3 Js Ps
Curso Java Avanzado   3 Js PsCurso Java Avanzado   3 Js Ps
Curso Java Avanzado 3 Js Ps
 
Servicios web
Servicios webServicios web
Servicios web
 
Programacion Web 2o dept
Programacion Web 2o deptProgramacion Web 2o dept
Programacion Web 2o dept
 
Curso Jsp Mas
Curso Jsp MasCurso Jsp Mas
Curso Jsp Mas
 
Revision de tecnologias web
Revision de tecnologias webRevision de tecnologias web
Revision de tecnologias web
 
Ekipo 2
Ekipo 2Ekipo 2
Ekipo 2
 
Rails intro
Rails introRails intro
Rails intro
 
Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011Ruby on Rails - ETyC 2011
Ruby on Rails - ETyC 2011
 
Curso Java Avanzado 2 Servlets
Curso Java Avanzado   2 ServletsCurso Java Avanzado   2 Servlets
Curso Java Avanzado 2 Servlets
 
Curso Jsp
Curso JspCurso Jsp
Curso Jsp
 
Manual php
Manual phpManual php
Manual php
 
Servlets y jsp
Servlets y jspServlets y jsp
Servlets y jsp
 
Curso Java Avanzado 3 4 Js Ps Con Java Beans
Curso Java Avanzado   3 4 Js Ps Con Java BeansCurso Java Avanzado   3 4 Js Ps Con Java Beans
Curso Java Avanzado 3 4 Js Ps Con Java Beans
 
Servicios web
Servicios webServicios web
Servicios web
 

Ähnlich wie Tutorial de ASP

2009_asp.net_capitulo_1
2009_asp.net_capitulo_12009_asp.net_capitulo_1
2009_asp.net_capitulo_1zhylz Zevallos
 
Programación asp2
Programación asp2Programación asp2
Programación asp2alb3rto-soga
 
ASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicas
ASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicasASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicas
ASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicasVíctor Acosta Santivañez
 
Intro a ASP.NET
Intro a ASP.NETIntro a ASP.NET
Intro a ASP.NETwilliamsm
 
Presentacion sobre asp
Presentacion sobre aspPresentacion sobre asp
Presentacion sobre aspkarenReyes152
 
Asp.net conceptos
Asp.net conceptosAsp.net conceptos
Asp.net conceptosXstremsX
 
Programacion - Php
Programacion - PhpProgramacion - Php
Programacion - PhpPROD LARD
 
Programación en Internet
Programación en InternetProgramación en Internet
Programación en InternetFernando Solis
 
Institcion educatica colegio guatiquia CRACION Y EDICION DE PAG. WEBS
Institcion educatica colegio guatiquia CRACION Y EDICION DE PAG. WEBSInstitcion educatica colegio guatiquia CRACION Y EDICION DE PAG. WEBS
Institcion educatica colegio guatiquia CRACION Y EDICION DE PAG. WEBSJohan Barbosa Herrera
 
Institcion educatica colegio guatiquia
Institcion educatica colegio guatiquiaInstitcion educatica colegio guatiquia
Institcion educatica colegio guatiquiaJohan Barbosa Herrera
 
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control ToolkitDesarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkitpabloesp
 

Ähnlich wie Tutorial de ASP (20)

20001020 Programación ASP y WML
20001020 Programación ASP y WML20001020 Programación ASP y WML
20001020 Programación ASP y WML
 
2009_asp.net_capitulo_1
2009_asp.net_capitulo_12009_asp.net_capitulo_1
2009_asp.net_capitulo_1
 
Programación asp2
Programación asp2Programación asp2
Programación asp2
 
Asp.net
Asp.netAsp.net
Asp.net
 
ASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicas
ASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicasASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicas
ASP.NET Guia de desarrollo de sitios y aplicaciones web dinamicas
 
Asp
AspAsp
Asp
 
2 web-forms
2 web-forms2 web-forms
2 web-forms
 
2 web-forms
2 web-forms2 web-forms
2 web-forms
 
Intro a ASP.NET
Intro a ASP.NETIntro a ASP.NET
Intro a ASP.NET
 
Presentacion sobre asp
Presentacion sobre aspPresentacion sobre asp
Presentacion sobre asp
 
Asp.net conceptos
Asp.net conceptosAsp.net conceptos
Asp.net conceptos
 
Programacion - Php
Programacion - PhpProgramacion - Php
Programacion - Php
 
Introduccion aspnet
Introduccion aspnetIntroduccion aspnet
Introduccion aspnet
 
Introduccion aspnet
Introduccion aspnetIntroduccion aspnet
Introduccion aspnet
 
Manual asp
Manual aspManual asp
Manual asp
 
Programación en Internet
Programación en InternetProgramación en Internet
Programación en Internet
 
Institcion educatica colegio guatiquia CRACION Y EDICION DE PAG. WEBS
Institcion educatica colegio guatiquia CRACION Y EDICION DE PAG. WEBSInstitcion educatica colegio guatiquia CRACION Y EDICION DE PAG. WEBS
Institcion educatica colegio guatiquia CRACION Y EDICION DE PAG. WEBS
 
Institcion educatica colegio guatiquia
Institcion educatica colegio guatiquiaInstitcion educatica colegio guatiquia
Institcion educatica colegio guatiquia
 
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control ToolkitDesarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
Desarrollo de Aplicaciones con Microsoft Ajax 1.0 y Ajax Control Toolkit
 
Asp.net
Asp.netAsp.net
Asp.net
 

Kürzlich hochgeladen

PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesYanirisBarcelDelaHoz
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónLourdes Feria
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioELIASAURELIOCHAVEZCA1
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.amayarogel
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxMaritzaRetamozoVera
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxYadi Campos
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dstEphaniiie
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxlupitavic
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfPaolaRopero2
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxlclcarmen
 
Imperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperioImperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperiomiralbaipiales2016
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfNancyLoaa
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...JAVIER SOLIS NOYOLA
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Alejandrino Halire Ccahuana
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfenelcielosiempre
 
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática5    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática5    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdfDemetrio Ccesa Rayme
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADauxsoporte
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfAngélica Soledad Vega Ramírez
 

Kürzlich hochgeladen (20)

PIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonablesPIAR v 015. 2024 Plan Individual de ajustes razonables
PIAR v 015. 2024 Plan Individual de ajustes razonables
 
Estrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcciónEstrategia de prompts, primeras ideas para su construcción
Estrategia de prompts, primeras ideas para su construcción
 
origen y desarrollo del ensayo literario
origen y desarrollo del ensayo literarioorigen y desarrollo del ensayo literario
origen y desarrollo del ensayo literario
 
Sesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronósticoSesión de clase: Fe contra todo pronóstico
Sesión de clase: Fe contra todo pronóstico
 
La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.La triple Naturaleza del Hombre estudio.
La triple Naturaleza del Hombre estudio.
 
Sesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docxSesión de aprendizaje Planifica Textos argumentativo.docx
Sesión de aprendizaje Planifica Textos argumentativo.docx
 
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptxSEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
SEXTO SEGUNDO PERIODO EMPRENDIMIENTO.pptx
 
Dinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes dDinámica florecillas a María en el mes d
Dinámica florecillas a María en el mes d
 
Presentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza MultigradoPresentacion Metodología de Enseñanza Multigrado
Presentacion Metodología de Enseñanza Multigrado
 
PLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docxPLAN DE REFUERZO ESCOLAR primaria (1).docx
PLAN DE REFUERZO ESCOLAR primaria (1).docx
 
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdfGUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
GUIA DE CIRCUNFERENCIA Y ELIPSE UNDÉCIMO 2024.pdf
 
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptxTIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
TIPOLOGÍA TEXTUAL- EXPOSICIÓN Y ARGUMENTACIÓN.pptx
 
Imperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperioImperialismo informal en Europa y el imperio
Imperialismo informal en Europa y el imperio
 
Cuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdfCuaderno de trabajo Matemática 3 tercer grado.pdf
Cuaderno de trabajo Matemática 3 tercer grado.pdf
 
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
ACERTIJO DE LA BANDERA OLÍMPICA CON ECUACIONES DE LA CIRCUNFERENCIA. Por JAVI...
 
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
Lecciones 05 Esc. Sabática. Fe contra todo pronóstico.
 
plande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdfplande accion dl aula de innovación pedagogica 2024.pdf
plande accion dl aula de innovación pedagogica 2024.pdf
 
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
Programacion Anual Matemática5    MPG 2024  Ccesa007.pdfProgramacion Anual Matemática5    MPG 2024  Ccesa007.pdf
Programacion Anual Matemática5 MPG 2024 Ccesa007.pdf
 
CALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDADCALENDARIZACION DE MAYO / RESPONSABILIDAD
CALENDARIZACION DE MAYO / RESPONSABILIDAD
 
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdfSELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
SELECCIÓN DE LA MUESTRA Y MUESTREO EN INVESTIGACIÓN CUALITATIVA.pdf
 

Tutorial de ASP

  • 1. Active Server Pages ASP: Active Page Server 1.- INTRODUCCIÓN ASP (Active Server Page, página activa en el servidor), es la propuesta de Microsoft para crear páginas Web dinámicas. Se puede combinar con páginas HTML, secuencias de comandos y componentes ActiveX, para crear páginas y aplicaciones web interactivas. El sentido de ASP, es liberar espacio en el servidor: Las páginas HTML son estáticas y si el servidor tuviese que tenerlas guardadas ocuparían un espacio inmenso. La solución es tener una fuente de datos y dependiendo de las peticiones del cliente generar las páginas en ese momento. Cuando el cliente desconecta desaparecen dichas páginas. ASP, se basa en la programación para las redes TC-IP que se conoce con el nombre de programación cliente- servidor que consiste en desdoblar un programa en dos partes, 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 servidor se encarga de obtener y manipular los datos. Hasta ahora nosotros hemos creado aplicaciones con código HTML y algunas con código ejecutable, a través de JavaScript, pero siempre en el cliente, con nuestro navegador. A partir de ahora crearemos programas que serán ejecutados por el servidor y cuya salida se envía al navegador del cliente. Página 1 de 48
  • 2. Active Server Pages 2.- Modelo de Páginas ASP 2.1 - Cliente -> Servidor Las páginas ASP comienzan a ejecutarse, cuando un usuario solicita un archivo .ASP al servidor web a través del navegador. El servidor web llama al motor ASP, que lee el archivo solicitado, ejecuta la secuencia de comandos y envía los resultados al ordenador del cliente. Puesto que la secuencia de comandos se ejecuta en el servidor y no en el cliente, es el servidor el que hace todo el trabajo para generar las páginas que se envían al explorador. Las secuencias de comandos quedan ocultas al usuario, estos solo reciben el resultado de la ejecución en formato HTML. El servidor solo envía el resultado en código HTML interpretable por cualquier navegador. 3.- Concepto de PG. ASP Active Server Page (ASP), es un entorno para crear y ejecutar aplicaciones dinámicas e interactivas en la web. Se caracteriza por tener en un mismo archivo de extensión .asp código script, que se ejecuta 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áginas web 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 solo código ejecutable (sería como un CGI), o bien ambos, ejecutable en el servido y ejecutable en el cliente. Para crear páginas ASP, se utiliza un procesador de texto normal, no es necesario ningún editor especial. Página 2 de 48
  • 3. Active Server Pages 4.- Software Necesario. Para ejecutar una página .asp necesitamos un servidor WEB, y para ello tenemos dos opciones o bien instalamos un servidor como APACHE, o bien utilizamos un simulador 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 IIS 2) Para acceder a él: Inicio/Panel de Contrl/Administrador de Herramientas/IIS 3) 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. Active Server Pages 5.-MARCAS DE CÓDIGO <%............%> ASP viene de forma nativa con dos motores de comandos, Visual Basic Script y Microsoft JScript. Pero puede instalar y utilizar otros motores de lenguajes como ReXX y Perl. Para establecer el lenguaje principal de secuencias de comandos, en todas las páginas de una aplicación, hay que agregar la directiva <%@LANGUAGE=VBscript%> o bien <%@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 servidor COMENTARIOS Para escribir un comentario en VBScript utilizaremos el apóstrofe: <% ‘este es un comentario de VBScript %> Página 4 de 48
  • 5. Active Server Pages Ver 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 le asigna un nombre. Página 5 de 48
  • 6. Active Server Pages 6.1.- TIPOS DE DATOS Existen 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 VARIABLES Muchos lenguajes de programación requieren que, antes de utilizar una variable se indique 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 dato que 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 caracteres 2.- Declaración Explícita: De esta forma antes de introducir cualquier variable deberemos introducir la siguiente línea <% OPTION EXPLCIT%> y además declararlas previamente con DIM. ¿Por qué utilizar declaraciones Explícitas en VBScript ¿Veamos un ejemplo: Página 6 de 48
  • 7. Active Server Pages Archivo: 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 nos dará ningún error, simplemente no mostrará el valor de “miprimeravariable”. Sin embargo si realizamos una declaración Explícita, nos indicará que el error está en el nombre 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. Active Server Pages Normas que se suelen utilizar en VBscript para declarar variables y así saber qué tipo de variable 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 una secuencia 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ímite inferior 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. 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 es utilizando la Función Array Nuestro ejemplo anterior quedaría: arrDias = Array(“Domingo”,”Lunes”,“Martes”,“Miércoles”,“Jueves”, “Viernes”, “Sábado”) 6.4.- CÓMO DETERMINAR EL TIPO DE VARIABLE Existen dos tipos de funciones para determinar el tipo de datos que será almacenado en una variable. Página 9 de 48
  • 10. Active Server Pages 1.- La primera función es VartType, que se utiliza de la siguiente manera: VarType(nombre_variable) devolviendo un código entero que corresponde al tipo de datos. 1=> Es un dato no valido 2=>Entero 3=>Entero largo 4=>Singer 5=>double 6=>currency 7=>date 8=>string 2.- La segunda función es TypeName, ésta devuelve una cadena con el nombre del tipo 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. Active Server Pages  /  5 Mod 3 =>2  Exponención 3^ 3= 3*3*3  Concatenación &  Operadores Lógicos ------AND, OR Ejemplo: <%@ 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. 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 CONTROL 8.1 -CONDICION “ IF “ Formato: If condición then Bloque de código End If 8.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. Active Server Pages End if Else Cuarto bloque de código End if No se debe utilizar muchas instrucciones If anidadas ya que dificulta la revisión rápida 8.3 INSTRUCCIONES FOR…….NEXT Esta instrucción ejecuta un bloque de código un número especificado de veces, mientras incrementa un contador. Formato: For variable-contador = valor-inicio to valor- final Step valor-incremental Bloque de código Next 8.4.- INSTRUCCIONES Do While………Loop Formato: Do While condición Bloque de código Loop El bloque de código se ejecuta mientras que la condición sea verdadera Página 13 de 48
  • 14. Active Server Pages 8.5.- INSTRUCCIONES Do Until………Loop Es muy parecida a la anterior , la única diferencia es que el ciclo se ejecuta hasta que la condición es verdadera y no falsa. Ambos tipos de instrucciones oueden realizar las mismas funciones, la única diferencia es que la condición se escribe en forma positiva o negativa Formato: Do Until condición Bloque de código Loop Ver Ejemplos 3Estructuras de Control Página 14 de 48
  • 15. Active Server Pages 9.- SUBRUTINAS Las subrutinas también llamados procedimientos realizan acciones Formato: Sub nombre Bloque de código End Sub La llamada a una subrutina indica al sistema que ejecute la subrutina y después regrese a la ejecución normal de la secuencia de comandos. Dentro de la subrutina se puede crear un bucle for por ejemplo. Los procedimientos no devuelven un valor, sino que realizan la ejecución de lo que haydentro de él. La función principal 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>") Next End Sub 10.- FUNCIONES Las funciones calculan valores. Página 15 de 48
  • 16. Active Server Pages Diferencia 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ínea Por otra parte las funciones devuelven valores, lo que significa que una llamada a función puede colocarse en una expresión, se le pueden agregar elementos, etc. Formato: Function nombre_funcion (parámetros) …… End Function Para llamar a una función : Nombrefunción (listaparámetros), si la función no tiene pará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 si tenemos código (bien sea HTML o ejecutable) que se va a repetir en distintas páginas web. Por ejemplo, tenemos un pie de página común para todas nuestras páginas web. En lugar de escribir el código en todas ellas, creamos un archivo con el pie de página y lo incluimos en todas las páginas de nuestra web. No sólo ahorraremos trabajo, sino que Página 16 de 48
  • 17. Active Server Pages si queremos modificar el pie de página, bastará con modificar un archivo y automáticamente se reflejará el cambio en toda la web. En el caso del código de servidor, resulta muy útil crear bibliotecas de funciones que se puedan reutilizar más adelante. Una forma de reutilizar funciones es guardarlas en archivos e incluir éstos cuando sea necesario. Esto es mucho mejor que copiar y pegar la función. Ahorra trabajo y al igual que antes, si realizamos una mejora en la función se 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 en PerlScript, se pueden utilizar las facilidades del lenguaje para incluir código de otros scripts 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 que se encuentra el ASP que se está ejecutando. En nuestro ejemplo, archivo.asp está en el 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 es www.midominio.com/dirweb/archivo.asp. Es decir, en el primer caso nos referimos a archivos según la estructura de directorios, y en el segundo, según la estructura de la web. El archivo a incluir no tiene por qué ser un ASP, puede tener cualquier extensión. Si se trata de archivos que sólo están pensados para ser incluídos, es una buena práctica de programación el colocarles la extensión .inc. El preprocesado de los #include es previo a la ejecución del script, por lo que no puede haber includes condicionados a sentencias if then. Hay que imaginarse que cada include es sustituido por el archivo completo y que entonces es cuando se procesa el código ASP. Página 17 de 48
  • 18. Active Server Pages OBJETOS ASP Cada script ASP dispone desde el momento en que es ejecutado de una serie de objetos predefinidos. No es necesario crear estos objetos ya que vienen integrados en ASP. Se encuentran disponibles para cualquier script y permiten realizar funciones básicas como averiguar los parámetros pasados al script, enviar información al usuario, guardar variables persistentes, etcétera. Aquí exponemos un breve resumen de 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 su navegador. Response también puede controlar la forma y el momento en que se envían los datos, y escribir cookies para almacenar información. MÉTODOS MÁS IMPORTANTES 1.- Response.Write (“cadena de caracteres”): Envía la cadena de caracteres al cliente. 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. Active Server Pages Esto 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 del Response.Write esté lo ejecutará sacando en el navegador su resultado. 2.- Response.Write(Server.HTMLEncode) :Utilizaremos esta sentencia si lo que pretendemos es enviar texto codificado para que el explorador no lo interprete como HTML. Ejemplo: <% Response.Write (Server.HTMLEncode(“<P align=right>")) %> Ocasionará que se implima <P align=right> en la pantalla sin interpretarlo como HTML. 3.- Response.Redirect (Url) : Redirige la página ASP a la URL especificada. Por ejemplo, esto que sigue es una página ASP completa que simplemente redirige a la web www.arsys.es. Pg 190 <% Response.Redirect ("http://www.arsys.es") %> La redirección se implementa mediante cabeceras HTTP que son distintas que las enviadas cuando se muestra una página web. Eso significa que si se utiliza Response.Write o se intercala cualquier código HTML, ya no funcionará un posterior Response.Redirect porque se habrán enviado las cabeceras de mostrar una página web, no las de redirección. Es decir sólo funcionará si no se le ha enviado algo al cliente. Esto significa que debemos colocar el Response.Redirect antes de enviar cualquier 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 se explica a continuación. 4.- Response.Buffer. Si se establece en True, se utiliza un búffer para la salida de datos, en combinación con los métodos anteriormente descritos. A pesar de la insistencia en el buffer, es algo que prácticamente no se usa a no ser que sea realmente 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 True la propiedad Response.Buffer, la salida del script (enviada mediante comandos Response.Write o HTML intercalado) no se envía directamente al navegador, sino Página 19 de 48
  • 20. Active Server Pages que queda en un buffer (espacio intermedio de almacenamiento) del servidor. El método Response.Flush envía los datos del buffer al navegador. Otra forma de enviar los datos del buffer es simplemente dejar que termine el script o invocar el método End. 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. Al llamar a Response.Clear el búfer será vaciado. ¿Por qué es deseable esto? Talvez tnemos una página que no queremos que sea vista bajo un conjunto de circunstancias especiales. Si la página no sabe que dichas circunstancias se han cumplido, hasta que la 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 el almacenamiento en búfer está activado y hay muchos datos almacenados, éstos son enviados. 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 de comandos termine por sí misma y , por lo tanto, debe evitarse si es posible. No obstante, puede ser útil al detectar problemas (tales como datos erróneos), sobre todo para evitar que éstos empeoren. 8.- Response.Expires: se utiliza para especificar por cuanto tiempo, desde el momento actual debe almacenarse una página en cache. <%Response.Expires= 4 %> le estamos indicando al explorador que la pagina que se guarda en caché, debe caducar a los 4 min. 9.- Response.ExpiresAbsolute. le indica al navegador que la página almacenada en caché 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. Active Server Pages 2.-OBJETO REQUEST Este objeto se utiliza para recuperar los valores de un campo de formulario. Este objeto tiene cuatro colecciones, de momento nos ocuparemos de dos : Form y QueryString 1.-Request.Form(Nombrevariable): Recupera los valores de un campo de formulario 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. 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 formulario Tambié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.Form Response.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 de formulario cuando éste tiene su propiedad METHOD establecida como GET. En este caso se pasan los valores de los campos de formulario a través de la cadena de consulta. Por ejemplo: http://www.dominio.com/cgi-bin/miprog.asp?nombre=Pepe&apellido=Gotera 3.- Request.ServerVariables: Cada vez que visitamos una página Web, nuestro explorador envía gran cantidad de información al servidor Web. La colección ServerVariables puede acceder a esta información. Asimismo, el servidor Web tiene muchas 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 el URL de la página Web solicitada, sino también alguna información adicional que Página 22 de 48
  • 23. Active Server Pages consiste en datos del cliente que pueden resultar muy útiles. Por ejemplo, el tipo de explorador que se está utilizando, el sistema operativo que está ejecutando el cliente y el URL de donde proviene el usuario. Cada segmento de información adicional se conoce como : Encabezado de solicitud porque son enviados cuando el cliente solicita una página Web. Cuando el servidor devuelve al cliente la página Web solicitada, también envía un conjunto de encabezados, conocidos como Encabezados de Respuesta. Los encabezados de respuesta son porciones adicionales de información acerca de la página Web que está siendo enviada al cliente. Tanto los encabezados de solicitud como los de respuesta se conocen comúnmente como encabezados HTTP. ¿Qué encabezados envía el explorador al servidor web? El explorador podría enviar cualquier encabezado que eligiera. Existe un conjunto estándar de encabezados que la gran mayorñia de exploradores envía al servidor Web. De estos encabezados uno de los más útiles es el User-Agent. Este encabezado contiene la información sobre el explorador que se está utilizando y el sistema operativo del cliente. Una página ASP puede utilizar esta información para personalizar el contenido basándose en el tipo de explorador que el visitante utilice. Por ejemplo : Netscape Nvigator e Internet Explorer manejan en forma diferente las hojas de estilo, si quisiéramos utilizar hojas de estilo en nuestro sitio web podríamos utilizar ASP para determinar el tipo de explorador que hace la solicitud de la página ASP y después ajustar las definiciones de la hoja de estilo para que correspondan con el explorador específico. ENCABEZADOS HTTP ESTÁNDAR NOMBRE DEL ENCABEZADO DESCRIPCIÓN HTTP_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 idiomas HTTP_CONNECTION El tipo de conexión establecida entre el cliente y el servidor Web. HTTP_HOST El nombre de host de la computadora del cliente HTTP_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 momento HTTP_COOKIE Las cookies enviadas desde el explorador
  • 24. Active Server Pages LECTURA DE ENCABEZADOS HTTP CON Request.ServerVariables 1.- Para desplegar una lista exacta de los encabezados enviados por el explorador al servidor Web. <% =Request.ServerVariables(“ALL_RAW”) %> 2.- Para desplegar una lista de encabezados con formato utilizaremos la siguiente instrucción <% =Request.ServerVariables(“ALL_HTTP”) %> 3.- Para desplegar un encabezado HTTP específico, utilizaremos el siguiente formato: <% =Request.ServerVariables(“HTTP_NombreEmcabezado”) %> ACCESO A LAS VARIABLES DE AMBIENTE CON Request.ServerVariables Las variables de ambiente son segmentos de información que proporciona el servidor Web a cualquier programa que las solicita. Esta información la podemos obtener a través de Request.ServerVariables. Las variables de ambiente contienen información como el nombre del servidor Web, el Url de la página ASP procesada actualmente o el nombre del software que el servidor Web está utilizando Página 24 de 48
  • 25. Active Server Pages VARIABLES DE AMBIENTE ÚTILES VARIABLE DE AMBIENTE DESCRIPCIÓN URL El URL de la página ASP que esta después de http://www.suServidorweb.com/ hasta la cadena de consulta PATH_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 web SERVER_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 almacenar pequeños segmentos de información en la computadora del cliente. Estos segmentos de información pueden utilizarse para identificar a un visitante anterior o para personalizar el contenido de sus páginas Web para cada visitante específico. REALIZAR PRÁCTICAS 1. Realiza una página Web que nos pida por pantalla el nombre y el apellido de forma que al pulsar el botón de enviar nos lleve a otra página mostrando el nombre y el apellido. (en el action tenemos que poner comillas y el nombre de la pagina .asp donde vamos a almacenar la información) Página 25 de 48
  • 26. Active Server Pages 2. Realiza una pagina que nos muestre un menú desplegable con varias direcciones de Internet, de forma que al seleccionar una y pulsar el botón de enviar nos lleve a ella. 3. Realiza una página que nos muestre un formulario con la opción de seleccionar 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 idiomas seleccionados. 4. Realiza una página que muestre un formulario donde se recoja el precio de un producto cualquiera de forma que al pulsar el botón de envío nos devuelva el precio del producto incrementando el IVA (18%). Para ello utilizad funciones. 5. Realiza una página que nos muestre por pantalla todos los enacabezados HTTP. 6. Realiza una página que nos muestre por pantalla todas las variables de ambiente. 3.-OBJETO SERVER El objeto Server sólo tiene un método importante, pero es el más importante de todo el esquema ASP, ya que es el que permite crear objetos componentes y extender la funcionalidad del ASP de forma ilimitada. Con el Visual Basic Script del ASP y sin utilizar objetos componentes, no se puede hacer prácticamente nada; ni siquiera leer un archivo del disco. Toda la funcionalidad reside en objetos componentes ActiveX. El método Server.CreateObject: Crea una instancia del componente de servidor que 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 la forma Vendedor.Componente. Por ejemplo: <% Set herram = Server.CreateObject ("MSWC. Tools") if herram.FileExists ("mipagina.html") Then %> Página 26 de 48
  • 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 la instalación de ASP. No es un objeto predefinido como Response o Request, sino que hay que crearlo como cualquier otro. En VisualBasic los objetos se asignan a variables utilizando Set. Después de creado, podemos acceder a sus métodos y propiedades. En este caso, utilizamos el método FileExists que nos dice si existe o no un archivo dada su URL relativa. 4.-OBJETO SESSION Só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 sus maravillosos métodos, propiedades o colecciones? Respuesta: lo interesante del objeto Session son las variables que nosotros podemos guardar en él. Esas variables 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, podremos incorporarlo a todas las demás páginas, ya que ese dato no se pierde al terminar el script. Además, aunque haya varios usuarios viendo simultáneamente las páginas no hay problema, ya que cada uno tiene un objeto sesión distinto. La sintaxis es: Session("variable") = valor Esto guarda el valor en la variable. Para recuperarlo más adelante en éste u otro script distinto, sólo tendríamos que escribir Session("variable"). $Session{variable} = valor Ejemplo Puede guardar este script con el nombre p2.asp. Se guarda el nombre del usuario en el objeto Session. <html> <head> Página 27 de 48
  • 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 "> <% else Response.Write ("Su nombre es " & nombre & ". No se preocupe que no se me va a olvidar.") Session("Nombre") = nombre end if %> </body> </html> Para escribir el nombre del usuario en páginas ASP posteriores a ésta, basta con que intercale el código <%= Session("Nombre") %> en el HTML de la página. Una vez definida, la variable Session, será almacenada en memoria y podrá ser empleada en cualquier script del sitio web. La duración de una sesión viene definida por defecto en 20 minutos. Esto quiere decir que si en 20 minutos no realizamos ninguna acción, el servidor dará por finalizada la sesión y todas las variables Session serán abandonadas. Esta duración puede ser modificada con la propiedad Timeout: Session.Timeout = n° de minutos que queramos que dure Una forma de borrar las variables Session sin necesidad de esperar a que pase este plazo es a partir del método Abandon: Session.Abandon De este modo todas las variables Session serán borradas y la sesión se dará por finalizada. Este método puede resultar practico cuando estemos haciendo pruebas con el script y necesitemos reinicializar las variables. Página 28 de 48
  • 29. Active Server Pages 4.-OBJETO APPLICATION Es prácticamente igual que el objeto Session y sirve para lo mismo (guardar variables), con la única diferencia de que las variables son únicas para la aplicación en su conjunto, no para cada sesión de usuario. Por tanto, en el objeto Application se deben guardar variables que vayan a ser comunes a todos los usuarios, no las específicas como su nombre. Esto implica también que si deseamos modificar el valor de una variable guardada en el objeto Application, es necesario bloquear el objeto para evitar que desde otra sesión se acceda simultáneamente a la misma variable. Para ello existen los métodos Lock y Unlock. El método Application.Lock Bloquea el objeto impidiendo que otros clientes modifiquen cualquier variable guardada. El método Application.Unlock Desbloquea el objeto permitiendo que otros clientes modifiquen las variables del objeto Application. Ejemplo Una variable típica para guardar en el objeto Application es el número de visitas a la web. La variable no debe estar asociada a un cliente en concreto, sino que debe ser general. En la página en cuestión pondríamos el siguiente código: <% Application.Lock Application("NumVisitas") = Application("NumVisitas") + 1 Application.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.asa Los objetos Application y Session tienen eventos al estilo de los formularios de Visual Basic, sólo que mucho más limitados. De hecho cada objeto sólo tiene dos eventos: uno que se lanza cuando es creado y otro cuando es destruido. Eso significa que podemos escribir código de inicialización que se ejecutará cada vez que un usuario acceda por primera vez a nuestras páginas (creación de un objeto Session) o Página 29 de 48
  • 30. Active Server Pages cuando 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 usuario o 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 debe estar en el directorio raíz de la aplicación. El archivo global.asa es opcional y puede contener 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 o aplicació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 se indica en el ejemplo de global.asa siguiente: <SCRIPT LANGUAGE=VBScript RUNAT=Server> sub Application_onStart Application("NumSesionesActivas") = 0 Application("NumSesionesTotales") = 0 End sub sub Session_onStart Application.Lock Application("NumSesionesActivas") = Application("NumSesionesActivas") + 1 Application("NumSesionesTotales") = Application("NumSesionesTotales") + 1 Application.UnLock End sub sub Session_onEnd Application.Lock Application("NumSesionesActivas") = Application("NumSesionesActivas") -1 Application.UnLock End sub sub Application_onEnd End sub </SCRIPT> Aquí se utilizan los eventos para guardar el número de sesiones activas y totales de nuestra aplicación, es decir, el número de clientes que nos está viendo en un momento dado, y el total que nos ha visitado. Como se trata de datos globales y no ligados a una sesión, hay que guardarlos en el objeto Application, y cuando se quieren modificar, es necesario bloquear primero dicho objeto. Página 30 de 48
  • 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ón de una sesión se mida por el tiempo de inactividad del usuario. Para medir éste el objeto Session dispone de una propiedad llamada Session.Timeout en la que el tiempo se mide en minutos. Cuando un usuario de Internet ve por primera vez cualquier página ASP de nuestra aplicación, el servidor web automáticamente le envía un cookie y crea para él un objeto Session con llamada al evento de creación que se encuentre en global.asa. Si pasan los minutos indicados en Session.Timeout sin que el usuario haya visto una nueva página, la sesión se da por concluida y el objeto Session del usuario es destruido. El cookie es una pieza de información que el servidor web envía al cliente para que se guarde en su disco duro. Cuando el cliente vuelve al sitio web reenvía el cookie al servidor y de esa forma éste puede distinguir a los usuarios y hacerles un seguimiento individual. Más sobre objetos componentes: alcance y creación Los objetos que se crean mediante Server.CreateObject (ProgID) tienen un alcance a nivel de script, es decir, cuando termina el script los objetos son eliminados. Sin embargo, en ciertas ocasiones será conveniente que los objetos tengan duración de sesión o incluso de aplicación. Hay dos formas de dar alcance de sesión o de aplicació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 objeto Session Set Session("miobjeto") = Server.CreateObject("MPX.Tool") ........ ........ ' Para verlo después en otra página ASP Set miobjeto = Session("miobjeto") miobjeto.show %> 1. Realiza una página que recoja tu nombre y con un botón de envío te lleve a otra página donde te saldrá un mensaje de bienvenida con tu nombre. Además a parecerá un formulario donde deberás seleccionar distintas aficiones de forma que al pulsar el botón de envío te llevará a una página donde mostrará tu nombre con las aficiones seleccionadas. Página 31 de 48
  • 32. Active Server Pages OBJETOS DEL SERVIDOR 1.-COMPONENTES ACTIVEX Los comoponentes ActiveX se han diseñado para que se ejecuten en el servidor Web como parte de las aplicaciones Web , proporcionan funcionalidad a las aplicaciones, como el acceso a ficheros, Bases de datos, etc. Existen componentes ActiveX 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 datos Su 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) se caracteriza 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, realizar cálculos o representar datos, y que se insertan en páginas web a través de las etiquetas Página 32 de 48
  • 33. Active Server Pages <OBJECT> y <PARAM>, que se corresponden a las operaciones de inserción del componente 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 lado cliente como en el lado servidor. Esta es la diferencia fundamental entre un control ActiveX, que se ejecuta localmente en nuestra aplicación, de un objeto ActiveX, que utiliza un "automation interface" (o interfaz automatizada) para que otras aplicaciones o herramientas de programación puedan utilizarlo. Se denomina formalmente componente al objeto ActiveX y no al control. Un componente 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. En esta guía de referencia obviaremos los controles (en clara desventaja) frente a las posibilidades que nos ofrecen los objetos de servidor, al poder combinarse, a través de ASP, con scripts y páginas HTML para poder crear webs profesionales. Su funcionamiento 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 de programació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ódigo para poder usar el objeto, una vez instalado en el servidor sobre el que vaya a ejecutarse. Se trata, principalmente de una línea en la que crea una "instancia" del objeto que va a usar, y el resto de código que utiliza los métodos y propiedades de la instancia que acaba de crear. Por ejemplo, si escribimos en una página ASP, el código debe quedar de la forma: <% Set OBJETO = Server.CreateObject(IDENTIFICADOR) OBJETO.Metodo(Argumentos) ....... %> El parámetro "IDENTIFICADOR" es un identificador único del componente que suele darse en la forma Vendedor.Componente. Los valores "OBJETO.Metodo(Argumentos)" referencian a las funciones, y parámetros que necesitan las mismas para su llamada, que incorpora el componente que estamos usando. Por ejemplo, el componente Acceso a bases de datos utiliza objetos de datos de ActiveX (ADO) para proporcionar un fácil acceso a la información almacenada en una base de datos (o en otra estructura de datos en forma de tabla), que cumpla con el Página 33 de 48
  • 34. Active Server Pages estándar ODBC (Open DataBase Connectivity). A continuación se muestra el código que tendría que colocar en su página ASP para poder usar este objeto: <% 'Aquí creamos la instancia del objeto Set miconexion = Server.CreateObject("ADODB.Connection") 'Ahora usamos la instancia y sus propiedades para nuestros fines 'Indicamos al objeto la cadena de conexión miconexion.ConnectionString = "DSN=midsn" 'Se abre la base de datos miconexion.Open ' ....... '........ 'Se cierra la base de datos miconexion.Close %> Así pues, una de las características más interesantes de ASP es su facilidad para el manejo de bases de Datos que residen en el servidor. Esto lo conseguimos mediante el uso de ADO (ActiveX Data Object), de forma fácil, rápida y con un mínimo consumo de rescursos del sistema. Por otra parte ADO (ActiveX Data Object) para el acceso a una base de datos usa ODBC (Open Data Base Connectivity), es una utilidad de Windows que permite a las aplicaciones acceder a los datos usando SQL como lenguaje estándar. Página 34 de 48
  • 35. Active Server Pages 2.-FUENTES DE DATOS ODBC Como se ha escrito anteriormente Open Data Base Connectivity es una utilidad de Windows, concretamente la encontramos en Inicio/Panel de Control/Herramientas Administrativas Se pueden configurar tres diferentes fuentes de datos ODBC, la forma más interesante es la DSN de Sistema, que presenta la ventaja de poder ser accedida por cualquier usuario, siendo el tipo usado en las aplicaciones ASP. Página 35 de 48
  • 36. Active Server Pages Para declarar una base de datos ODBC haremos doble clic en el icono Fuentes de Datos 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 el sistema. Al definir un DSN hay que especificar tanto la ruta completa del archivo de base 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 para poder abrirla, consultarla, modificarla, etc. Pulsaremos el botón AGREGAR para añadir una fuente de datos, lo que nos llevará a la pantalla de controladores. Página 36 de 48
  • 37. Active Server Pages En esta ventana elegiremos el driver adecuado para la tecnología de la base de datos que queremos tratar desde nuestras páginas ASP y pulsaremos finalizar. La siguiente pantalla que se nos muestra nos pedirá la ubicación física de nuestra base de datos y el nombre ODBC con el que queremos acceder a ella. Página 37 de 48
  • 38. Active Server Pages Nombre 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 datos Base de datos: Es el camino físico de la base de datos, para establecerlo pulsaremos el botón SELECCIONAR y mediante un explorador elegiremos nuestra base de datos. Una vez hecho esto pulsaremos el botón ACEPTAR y ya tendremos nuestra base de datos disponible para su uso desde nuestras aplicaciones WEB. Ya sabemos conectar ASPADOODBC, nos queda conocer los objetos ADO para realizar todo esto 3.- OBJETOS ADO Página 38 de 48
  • 39. Active Server Pages ADO está formado por varios objetos organizados de forma jerárquica (cada uno de ellos con sus métodos y propiedades específicos) de los cuales vamos a estudiar los más interesantes. 3.1 CONNECTION Este objeto lo podemos considerar como el más importante, estaría en la cúspide de la estructura jerárquica comentada anteriormente. Representa una conexión a una base de datos desde una página ASP. Esta conexión nos 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 que nos permite realizar consultas (Command) disponen de una propiedad llamada ActiveConnection que es una referencia al objeto Connection que enlaza con la base de 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 por medio de la propiedad CreateObject del objeto Server. <% Set conexion=Server.CreateObject(“ADODB.Connection”) %> Una vez establecida la instancia del objeto pasamos a configurarlo mediante sus propiedades y métodos: Página 39 de 48
  • 40. Active Server Pages PROPIEDADES 1.- ConnectionString: Especifica la referencia a la base de datos con la que queremos conectar, conteniendo en una cadena de texto la información necesaria para efectuar la conexión mediante parejas de valores separadas por “;”. Hay hasta 7 argumentos 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ás habituales que podemos asignar son: 1 Establece permiso sólo de Lectura 2 Establece permiso sólo de Escritura 3 Establece permiso de Lectura/Escritura Ejemplo: <% conexion.Mode=3 %> MÉTODOS 1.- Open: Abre la conexión con la base de datos con los parámetros especificados en las propiedades 2.- Close: Cierra la conexión con la base de datos Ejemplo: Página 40 de 48
  • 41. Active Server Pages <% Set conexion = Server.CreateObject("ADODB.Connection") conexion.ConnectionString = "DSN=Alumnos" conexion.Open ' ....... '........ conexion.Close %> 3.2 RECORDSET Con este objeto accederemos directamente a los datos de las tablas, tanto para leerlos como para modificarlos. Un objeto Recordset representa una tabla, que puede ser una tabla física de la base de datos 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ólo uno de ellos es el activo. El registro activo es en el que podemos leer o modificar los valores de los campos. También se le llama cursor. Entendemos como cursor el puntero que nos permite desplazarnos por los registros del Recordset. Dependiendo del tipo elegido determinaremos los desplazamientos y cambios realizables en los datos 1.- PROPIEDADES QUE HACEN REFERENCIA AL ORIGEN DE DATOS Estas dos propiedades deben ser asignadas a todo Recordset, pues le dicen la base de datos y la tabla de la que obtener sus datos. 1.- ActiveConnection Como se ha comentado antes a esta propiedad se le debe asignar un objeto connection que se haya creado previamente. Indicará al Recordset la base de datos en la que buscar su tabla. 2.- Source Indica al objeto Recordset la tabla a la que representará. A la propiedad Source se le asigna 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á el resultado de aplicar dicha sentencia. Una vez que hemos determinado la base de datos y la tabla con la que vamos a trabajar debemos indicar, en este orden, cómo nos vamos a mover por la tabla (Tipo Página 41 de 48
  • 42. Active Server Pages de Cursor) y el tipo de bloqueo que realizaremos sobre la base de datos con el fin de evitar que dos o más usuarios accedan a modificar un mismo registro a la vez Recordar¡¡¡¡¡ primero se especifica la propiedad del tipo de Cursor y luego el tipo de Cerrojo 3.- CursorType Con esta propiedad especificamos el tipo de cursor que se utiliza para recorrer los registros de un recordset. Los posibles valores son: 1.- adOpenForwardOnly (Valor 0): que como su nombre indica sólo permite moverse hacia adelante. (no se puede volver hacia atrás) no permite modificaciones en los registros. Por el contrario es el de menos consumo. No vemos los cambios realizados en las tablas por otro Recordset. Por defecto toma este valor. 2.- adOpenKeyset (Valor 1): Nos permite movernos en los dos sentidos, permite modificaciones en los registros y además podemos ver los cambios realizados en la tabla por otro Recordset a excepción de las nuevas entradas 3.- adOpenDynamic (Valor 2): Nos permite movernos en los dos sentidos, permite modificaciones en los registros y vemos todos los cambios realizados en la tabla por otro Recordset. 4.- adOpenStatic (Valor 3): Nos permite movernos en los dos sentidos, no permite modificaciones en los registros. No vemos los cambios realizados en la tabla por otro Recordset. 4.- LockType Página 42 de 48
  • 43. Active Server Pages Indica el tipo de bloqueo que se realiza sobre la base de datos cuando modificamos un Recordset, a fin de evitar que dos o más usuarios accedan a modificar un mismo registro a la vez. Los posibles valores son: Por defecto toma el valor adLockReadOnly que como su nombre indica sólo sirve para leer datos. Si deseamos editar o añadir registros, tendremos que cambiar esta propiedad por otro valor. El más usado es adLockOptimistic que permite editar la base de datos o añadir registros realizando un bloqueo optimista (sólo cuando sea estrictamente necesario) Ejemplo: Aquí creamos en primer lugar un objeto Connection y luego un Recordset al que se asigna dicho objeto. Este ejemplo es una especie de esqueleto para los demás que sigan: Se supone que debe hacerse algo parecido a esto para abrir el Recordset. Es decir, en los restantes ejemplos escribimos sólo el código que iría en el lugar de los puntos suspensivos de este script (NOTA: Recuerde que si hay que añadir registros es necesario cambiar el LockType antes de inicializar el recordset). <% Set miconexion = Server.CreateObject("ADODB.Connection") miconexion.ConnectionString = "DSN=midsn" miconexion.Open Set mirecordset = Server.CreateObject("ADODB.Recordset") mirecordset.ActiveConnection = miconexion mirecordset.Source = "Clientes" mirecordset.Open ........ ' Operaciones con los datos ........' de la tabla Clientes. mirecordset.Close miconexion.Close %> Definiendo nuestras Constantes: ADOVBS.INC o METADATA Página 43 de 48
  • 44. Active Server Pages Tanto los cursores, como los cerrojos utilizados por ADO deben encontrarse definidos como constantes en nuestras aplicaciones para poder ser usados en nuestro código. Uno de los métodos existentes para definir estas constantes consiste en utilizar una biblioteca de tipos de componentes. Una biblioteca de tipos de componentes corresponde a un archivo que almacena todos los parámetros ADO. Para utilizar este tipo de archivos basta con agregar, al archivo .asp o al Global.asa, la siguiente línea de 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 archivo ADOVBS.INC. Este archivo se incluye en la instalación del IIS y contiene todas las constantes ADO posibles de utilizar desde ASP. Para poder utilizar este archivo se debe agregar la siguiente línea en nuestro código: <!-- #include virtual = "adovbs.inc" --> Una vez que hemos incluido este archivo, podremos utilizar las constantes definidas en él, haciendo referencia a los valores declarados para cada uno de los parámetros ADO. Por ejemplo, si queremos definir un recordset que utilice un cursor de tipo adOpenKeySet escribiremos el siguiente código, haciendo referencia al valor 1 que corresponde a la constante adOpenKeySet: rs.Open SQL, oConn, 1 Propiedades que hacen referencia al número de registros: 1.- RecordCount Número de registros de la tabla a la que representa el objeto Recordset. Ejemplo: <h3>Tenemos <%= rstClientes.RecordCount%> clientes registrados en nuestra base de datos</h3> 2.- EOF Página 44 de 48
  • 45. Active Server Pages Acrónimo de End Of File. Vale TRUE si estamos en el último registro y FALSE si no. Se usa mucho como condición en bucles while, los cuales se ejecutan hasta llegar al último registro. 3.- BOF Acrónimo de Begin Of File. Vale TRUE si estamos en el primer registro y FALSE si no. Métodos para mover el cursor (registro activo): Estos métodos pueden funcionar todos o no dependiendo del tipo de cursor creado. El tipo de cursor se asigna en la propiedad CursorType. Por ejemplo, para asignar un cursor adOpenKeySet que permita moverse hacia adelante o hacia atrás: <% Set miconexion = Server.CreateObject("ADODB.Connection") miconexion.ConnectionString = "DSN=midsn" miconexion.Open Set mirecordset = Server.CreateObject("ADODB.Recordset") mirecordset.ActiveConnection = miconexion mirecordset.Source = "Clientes" mirecordset.CursorType = adOpenKeySet mirecordset.Open ........ ' Operaciones con los datos ........' de la tabla Clientes. mirecordset.Close miconexion.Close %> Nótese que la asignación de propiedades al recordset debe hacerse antes de invocar el método open que es el que lo inicializa con registros. 1.- MoveFirst Mueve el cursor al primer registro de la tabla 2.- MoveLast Mueve el cursor al último registro de la tabla 3.- MoveNext Página 45 de 48
  • 46. Active Server Pages Mueve el cursor al siguiente registro 4.- MovePrevious Mueve el cursor al registro anterior Ejemplo de un bucle que recorre todos los registros de una tabla <% mirecordset.MoveFirst do while not mirecordset.EOF ..... ' Tratamiento ..... ' de datos mirecordset.MoveNext loop %> Lectura y modificación de los campos del registro activo La sintaxis para acceder a los datos de un campo del registro activo de un recordset es mirecordset ("Domicilio") Esto se usa tanto para leer como asignar valores. En nuestro ejemplo, el objeto mirecordset representa a una tabla uno de cuyos campos tiene el nombre "Domicilio". Así, con la expresión dom = mirecordset("Domicilio") Leemos el valor del campo domicilio del registro activo y se lo asignamos a la variable dom. Con la expresión mirecordset("Domicilio") = "C/ Bretón de los Herreros 19, 1º M" mirecordset.Update asignamos un valor al campo Domicilio del registro activo. Tras la edición del registro, es necesario llamar al método Update. El motivo es que los cambios en el registro activo se realizan sobre un buffer (espacio de almacenamiento intermedio) y no sobre el registro propiamente dicho. Ejemplo: Página 46 de 48
  • 47. Active Server Pages El recordset rstClientes representa a nuestra tabla de clientes que, entre otros, tiene los campos Provincia e IVA . El siguiente bucle recorre todos los clientes, comprueba su provincia y le asigna el IVA correspondiente: 0 para Canarias y 16 para los demás <% rstClientes.MoveFirst do while not rstClientes.EOF if rstClientes("Provincia") = "Las Palmas" or rstClientes("Provincia") = "Tenerife" Then rstClientes("IVA") = 0 else rstClientes("IVA") = 16 end if rstClientes.Update rstClientes.MoveNext loop %> Métodos para agregar o eliminar registros de la tabla 1.- Delete Eliminar 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.MoveFirst do while not rstClientes.EOF if rstClientes("Deuda") > 0 Then rstClientes.Delete end if rstClientes.MoveNext loop %> 2.- AddNew y Update Crear un nuevo registro involucra dos métodos: Primero AddNew crea un nuevo registro en blanco. Después asignamos valores a los distintos campos del registro. Por Página 47 de 48
  • 48. Active Server Pages último invocamos el método Update para que se haga efectiva la incorporación del nuevo registro con los valores asignados. En este ejemplo incorporamos un nuevo cliente a nuestra base de datos <% rstClientes.AddNew rstClientes("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 permita la edición de la base de datos. Esto se hace asignando a la propiedad LockType del recordset uno de estos valores: adLockOptimistic, adLockPessimistic o adLockBatchOptimistic Página 48 de 48