Al navegar más de alguna vez nos hemos topado con alguna página que
tiene archivos con extensión ".asp" y nos hemos preguntado que
significa éste tipo de archivos.
Microsoft introdujo esta
tecnología llamada Active Server Pages en diciembre de 1996, por
lo que no es nada nueva. Es parte del Internet
Information Server (IIS) desde la versión 3.0 y es una tecnología de
páginas activas que permite el uso de diferentes scripts y componentes en
conjunto con el tradicional HTML para mostrar páginas generadas dinámicamente.
Traduciendo la definición de Microsoft:
"Las Active Server Pages son un ambiente de
aplicación abierto y gratuito en el que se puede combinar código HTML, scripts
y componentes ActiveX del servidor para crear soluciones dinámicas y poderosas
para el web".
ASP, es esencialmente, código VBSCript
que se ejecuta en el servidor. El código genera instrucciones HTML cuando un
usuario accede a la página que lo contiene. Esta es la clave de ASP: el cliente
nunca ve el código, sólo las instrucciones HTML resultantes, que pueden ser
relacionadas por cualquier navegador.
El principio de la
tecnología ASP es el VBScript, pero existe otra diversidad de
lenguajes de programación que pueden ser utilizados como lo es Perl, JScript,
etc.
El ASP es una tecnología dinámica funcionando
del lado del servidor, lo que significa que cuando el usuario solicita un
documento ASP, las instrucciones de programación dentro del script son
ejecutadas para enviar al navegador únicamente el código HTML resultante. La
ventaja principal de las tecnologías dependientes del servidor radica en la
seguridad que tiene el programador sobre su código, ya que éste se encuentra
únicamente en los archivos del servidor que al ser solicitado a través del web,
es ejecutado, por lo que los usuario no tienen acceso más que a la página
resultante en su navegador.
Para
explicar mejor el funcionamiento del ASP se presenta la siguiente gráfica:
Para insertar
instrucciones ASP dentro del código HTML se incluye encerrado entre "<%
%>". Estos comandos son los que procesa el servidor antes de
enviar la página al navegador.
A continuación tenemos un ejemplo del código ASP en el servidor y los
resultados HTML que serán vistos en el navegador:
|
Código ASP |
Código HTML |
Resultado en el Navegador |
|
<P> |
<P> |
Maestros del Web! |
El ejemplo anterior crea
un ciclo que se repite 5 veces y aumenta el tamaño del tipo de letra en una
frase establecida.
El desarrollo que se ha venido dando a lo que es ASP ha sido bastante amplio.
Entre sus funciones principales están el acceso a base de datos, envió de
correo electrónico, creación dinámica de gráficos y otros. Básicamente, muchas
cosas que podemos realizar por medio de CGI pueden
ser realizadas con esta tecnología. Esto debido a que el ASP es tan eficiente
con escribir código directamente a la interfase de aplicación del servidor, con
la ventaja de que es más eficiente que el CGI que
depende de un compilador ya que el ASP corre como un servicio en el servidor,
tomando ventaja de la arquitectura de multitareas.
Para empezar con el
desarrollo de las Active Server Pages es necesario un servidor
con Windows NT 4.x o mayor y el Internet Information Server. El IIS es una
aplicación gratuita que puede conseguirse en el Option
Pack del NT. También es posible utilizar ASP en Windows 9x por medio del Personal Web Server junto al Option Pack mencionado
anteriormente.
En caso del uso de un servidor Linux, Chilisoft ha desarrollado el Chilisoft ASP
que también permite el uso de esta tecnología.
La mayoría de proveedores de Hosting pagado con plataformas NT tienen acceso a
esta tecnología en sus servidores. El código puede ser trabajado en cualquier
editor HTML o de texto. Existen en el mercado dos herramientas para trabajar
profesionalmente el ASP en modo visual como lo son el Drumbeat 2000 y el Visual Interdev de
Microsoft.
Para enviar datos a un servidor Web, el
cliente utiliza un formulario con etiquetas <FORM>. Estos formularios
incluyen distintos campo de entrada de datos similares a cuadros de texto. El
programa cliente empaqueta los datos y posteriormente los envía al servidor; el
proceso de envio de cualquier formulario está controlado por dos atributos de
la etiqueta <FORM>: METHOD y ACTION. EL atributo METHOD determina la
forma en la que se envían los datos al servidor, el atributo cuanta con dos
valores GET y POST. El primero envía los datos como parte integrante del
Localizador Uniforme de Recursos (URL) de la página destino, y POST permite que
el navegador empaquete los datos contenidos en el formulario y que los envíe al
servidor. El atributo ACTION especifica cual será la página destino de los
datos que se han enviado. El siguiente ejemplo envía los datos a una página
denominada DATOS:ASP, utilizando el método POST:
<form method
= “post”
ACTION =
http:=//www.ucol.mx/datos.asp”>
<p><INPUT TYPE= “TEXT” NAME =
“TXTnombre”></P>
<p><INPUT TYPE= “TEXT” NAME =
“TXTdomicilo”></P>
<p><INPUT TYPE= “submit”</P>
</FORM>
El control denominado TYPE=
"SUBMIT" es un botón que deberá ser pulsado por el usuario para
enviar los datos de¡ formulario.
Otra forma de enviar los datos al
servidor sobre lnternet, es utilizando la etiqueta <A>. La etiqueta
<A> utiliza el atributo HREF para designar una página destino y para
transportar los datos cuando el usuario pulse sobre el vínculo. Para separar el
nombre de la página destino de los datos a enviar se utiliza el signo de
interrogación (?) separados por el carácter (&). Regresando al ejemplo
anterior don de¡ formulario enviaba los campos TXTnombre Y TXTdomicilio, a
continuación se muestra como se realiza utilizando un
hipervínculo:
<A HREF=
“http://www.ucol.mx/datos.asp?TXTnombre=ulises & TXT=domicilio=mexico>
Pulse aquí para enviar los datos al
formulario...
</A>
PROCESAMIENTO
Active Server Pages (ASP) incluye
secuencias de comandos en sus páginas HTML y crear así un contenido dinámico e
interactivo en el sitio Web. Anteriormente, las secuencias de comandos escritas
en los lenguajes VBScript y JScript se procesaban en los exploradores de Web
preparados para ello. Active Server Pages permite que sea el servidor Web el
que procese los comandos de VBScript y JScript. Cualquier explorador que pueda
establecer contacto con el servidor Web admitirá los resultados dinámicos
generados por ASP, tanto si admite VBScript o JScript
SEGURIDAD
El código es seguro: cada página puede
utilizar las listas de control de acceso (ACL) en el sistema de seguridad de
Windows NT. También, dado que el código se ejecuta en el servidor, el cliente
de Web nunca ve el código sólo los resultados. Esta propiedad le protege de
usuarios que quieran mirar o apropiarse de su código. Además, como puede
administrar los servidores, puede mantener código desautorizado fuera del
servidor.
SELECCIÓN Y JUSTIFICACIÓN DE HERRAMIENTA DE DESARROLLO
Para elegir la herramienta que nos permita de una manera mas eficiente desarrollar nuestra aplicación, resumiremos brevemente cada una de las características comunes en cada una de las tecnologías descritas en las secciones anteriores.
|
Acceso a Internet |
Sólo pueden visualizarse páginas
lnternet con controles ActiveX mediante Microsoft lnternet Explorer 3.x o
superior |
|
Programación |
La estructura del código ASP se
encuentra encerrada entre caracteres especiales (signos menor y mayor que y
porcentajes) <% ...... %>, los
cuales definen al código el servidor, lo que significa que el
código se evaluará antes de que la página se envíe al navegador |
|
Procesamiento |
active Server Pages permite que sea
el servid procese los comandos de VBScript y JScript. Cualquier explorador
que pueda establecer contacto con el servidor Web admitirá los resultados
dinámicos generados por ASP, tanto si admite VBScript o JScript |
|
Seguridad |
El código se ejecuta en el servidor,
el cliente de Web nunca ve el código sólo los resultados |
Tabla 2-3. Características de ASP
ACCESO A BASES DE DATOS CON ACTIVE SERVER PAGES
Una vez seleccionada la tecnología
Active Server Pages como forma de acceso a bases de datos en el Web, se
profundizará en esta herramienta, a través de ejemplos simples, así como el de
analizar el entorno requerido para su implementación.
OBJETOS Y
COMPONENTES
Al nivel más básico, crear una página
ASP consiste sólo en escribir código de¡ lado de¡ servidor para producir el
resultado deseado. Sin embargo, VBScript no es un lenguaje plenamente
funcional, y se quedará corto cuando se intenta crear páginas complejas,
VBScript no cuenta con funciones intrínsecas con las que se pueda acceder a
ninguna fuente de datos externa, por lo cual el lenguaje se complementa con
objetos y componentes ASP.
Los objetos y componentes ASP no son
más que componentes ActiveX , algo similar a los DLL utilizados con Microsoft
Visual Basic. La diferencia existente entre objetos ASP y componentes ASP está
relacionada con la forma en que se encuentran empaquetados. Los objetos ASP son
elementos ActiveX que se encuentran siempre disponibles en VBScript. No se
tiene que crear explícitamente ob .etos ASP para su empleo. ASP puede manejar
los objetos Applicatíon, Session, Request, Response y Server.
Por otro lado, los componentes ASP son
DLL que existen fuera de¡ mundo ASP. Estos componentes se pueden generar en
cualquier lenguaje, pero Microsoft ha incluido algunos disponibles componentes
ASP de gran utilidad en Visual lnterdev. Los componentes ASP no estarán
disponibles a menos que se haya codificado expresamente. ASP puede manejar los
componentes denominados Database Access, File Access, Browser Capabilities, Ad
Rotator y Content Linking.
EL ARCHIVO GLOBAL.ASA
Al diseñar aplicaciones lnternet
independientemente de la tecnología que se utilice, existe la dificultad para
crear auténticas aplicaciones. La interacción entre un navegador y un servidor
Web es, básicamente, una transación en la que el servidor pasa a una página Web
al cliente y aquél se olvida de que el cliente existe. Cuando, posteriormente,
el cliente solicita otra pagina Web, el servidor no recuerda la primera
petición. En base a lo anterior el problema esencial para todas las
aplicaciones Web es el siguiente: ¿Como se debe definir una aplicación?.
Definir una aplicación en el entorno de
Microsoft Windows es bastantes simple. La aplicación se ejecuta cuando se
realiza una doble pulsación sobre su icono asociado, y la aplicación finaliza
cuando se selecciona la opción salir de¡ menú archivo. Entre estos dos sucesos
los datos se almacenarán en variables. Sin embargo el proceso no es mismo en
las aplicaciones lnternet. ¿Cómo se determina cuando comienza o acaba una
aplicación? Si un usuario se conecta a un servidor y ve una página, se podría
decir que la aplicación ha comenzado. ¿ Pero que ocurre cuando el usuario salta
a otro servidor y vuelve al primero cinco minutos después? ¿Sigue estando viva
la aplicación? ¿Qué ocurre si el usuario abandona el primer servidor durante
una hora? ¿y dos horas?.
Este problema de definir el principio y
el final de una aplicación afecta a la capacidad de gestionar correctamente
variables y el flujo de trabajo. Para evitar el problema mencionado, Active
Server Pages proporciona una solución. ASP utiliza un archivo especial,
denomiando GLOBAL.ASA, para definir el principio y el final de una aplicación,
así como el principio y el fina de una sesión de usuario. GLOBAL.ASA es
responsable de detectar cuatro sucesos claves en su servidor:
Aplication-OnStart. Aplication-OnEnd,
Session-OnStart y Session-OnEnd.
GLOBAL.ASA
utiliza etiquetas <SCRIFIT> para designar las distintas secciones de
programación. Estas tareas contienen un atributo especial, denominado
RUNAT=Server, que especifica que el VBSCript contenido deberá ejecutarse en el
servidor y no en el cliente. RUNAT=Server es similar, en su función, a los
signos mayor que, menor que y porcentaje utilizados en la página Web para
designar programación del lado de¡ servidor. Los sucesos contenidos en
GLOBAL.ASA pueden ser atrapados en el lado del servidor utilizando sintáxis
estandar. Por ejemplo, para atrapar el comienzo de una aplicacion se deberá
utilizar las siguientes líneas de codigo:
<SCRIPT
LANGUAGEt=cbscrip RUNAT= Server>
Sub
Application_OnStart
‘ Código especifico da la aplicación
End Sub
</SCRIPT>
Una aplicación lnternet se define como
un directorio virtual y todas sus páginas. Si un usuario solicita una página
Web contenida en un directorio virtual, denominado Librería, el usuario habrá
puesto en marcha la aplicación Librería, y los sucesos Application-OnStart y
Session-OnStart se introducirán en GLOBAL.ASA.
Según esta definición,una aplicación
puede ser utilizada simultáneamente por varios navegadores. El suceso
Application_OnStart sólo se dispara una vez (cuando el primer usuario solicita
una página Web contenida en el directorio virtual). Cuándo un segundo usuario
solicite
posteriormente, otras páginas
contenidas en el mismo directorio, sólo se disparará el suceso Session-OnStart.
Mientras que una aplicación puede
englobar a varios navegadores que acceden simultáneamente al mismo conjunto de
páginas Web, una sesión se refiere a cada navegador que accede a las mismas
paginas Web. Una sesión para un determinado navegador durará mientras que el
usuario continúe solicitando páginas Web contenidas en dicho directorio
virtual. Si en veinte minutos el usuario no vuelve a solicitar otras páginas
Web, se considerará que la sesión ha terminado y se disparará el suceso
Session - OnEnd. Una vez que hayan
concluido todas las sesiones de usuario en el directorio virtual, se disparará
el suceso Application-OnEnd.
OBJETOS DE ACTIVE
SERVER PAGES
ASP contiene un elevado número de
objetos que permitirán gestionar prácticamente todo, desde variables hasta
envíos de formularios. Su empleo es sencillo, y se les puede llamar
directamente desde el código sin tener que utilizar ninguna sintaxis especial.
En este apartado se analizan los objetos ASP disponibles en Visual lnterdev
para el disecador de aplicaciones lnternet. En el apéndice A se describen las
propiedades y métodos manejados por estos objetos.
OBJETO APPLICATION
El objeto Application permite crear
variables de aplicaciones, variables que se encuentran disponibles para todos
los usuarios de una aplicación. Todos los usuarios que accedan a páginas Web
contenidas en el mismo
directorio virtual pueden compartir
cualquier variable de aplicación definida en dichas paginas.
El siguiente listado muestra un código
ejemplo que utiliza el objeto Applicition. En este ejemplo, se utiliza una
variable de aplicación para controlar cuando fue la última vez en que un usuario
visitó la página.
<%LANGUAGE=”VBScrip>
<HTML>
<HEAD>
<TITlE>Variables dé
aplicación</TITLE>
<BODY
BGCOLOR--"FFFFFF">
Eátá páglhá füe vísitada por ultima vez el
<%=Application(“time”)%>
<%Applicatíon.Lock%>
p
<%Applicatíon(“time”)
= Now%>
<%Applicatíon.UnLock%>
</BODY>
</HTML>
Crear una variable de aplicación es tan
sencillo corno llamar al objeto Aplication seguido del nombre de la nueva
variable que se desee crear. Por ejemplo, la siguiente instrucción crea una
variable de aplicación denominada Empresa y define su valor como
NuevaTecnología:
Application(”Empresa")=
"NuevaTecnología"
El nombre es arbitrario, y la variable
puede contener cualquier tipo de información, ya sea números o texto.
Debido a que la variable se encuentra
disponible simultáneamente para varios usuarios, por lo tanto para evitar la
concurrencia; es decir, la situación que se produce cuando dos usuarios
intentan redefinir simultáneamente la variable utilizando diferentes valores.
Para evitar esta situación, el objeto Application permite el empleo de los
métodos Lock yUnlock. El método Lock bloquea todo objeto Application
inmediatamente después de modificar el valor de una variable:
Applicatíon.Lock
Application(”Empresa")=
"NuevaTecnología"
Applicatíon.UnLock%>
Aunque las variables de aplicación
son útiles para almacenar
temporalmente los datos, no se pueden utilizar para almacenar datos de forma
permanente. El dato almacenado en una variable de aplicación se destruye cuando
se ejecuta el suceso Application-OnEnd. Tendrá que trasladar las variables de
aplicación a un sistema de almacenamiento permanente, tal como una base de
datos, si desea almacenar los valores después de que finalice la aplicación.
OBJETO SESSION
ASP puede manejar variables para usuarios
individuales mediante el objeto Session, que permite crear variables de sesión
definidas para su uso por usuarios individualizados.
El listado siguiente muestra la forma
en que el archivo GLOBAL.ASA define variable de sesión. Definir variables de sesión
es tan sencillo como definir variables de aplicación. Solo se tiene que llamar
al objeto Session seguido por el nombre de la variable que se desea definir. La
gran diferencia existente entre una variable de aplicación y otra de sesión es
la visibilidad de la misma. Las variables de sesión están reservadas para un
único usuario, y existe durante todo el tiempo que mantenga el usuario la
sesión Web. Cuando el usuario deje de acceder a las páginas contenidas en un
mismo
directorio virtual por un período de
tiempo superior a los 20 minutos, las variables de sesión desaparecerán.
<SCRIPT
LANGUAGEVBScrip" RUNAT=Server”>
‘Puede añadir manejadores especiales de
suceso en este archivo, el cual se ‘ejecutara automaticamente cuando tengan
lugar sucesos especiales
‘de
Active Server Pages. Para crear
estos manejadores, añada
‘una subrutina, sin nombre de la lista
mostrada más abajo que se
‘corresponde con el suceso que desee
utilizar. Por ejemplo,
‘sí desea crear un manejador de sucesos
para Session-OnStart, debera
‘introducir el siguiente código:
****
Las variables de sesión se pueden crear dentro de cualquier
página Web o en el archivo GLOBAL.ASA. El usuario podrá acceder a una variable
de sesión desde cualquier página Web contenida en la aplicación donde se define
originalmente dichas variables. Los valores asignados a las variables de sesión
definidas dentro de¡ listado anterior muestran sus valores asignados en campos
de texto
<FORM>
<p>
<INPUT VALUE> <%=Session (“EMPRESA”)%>EMPRESA/P
<p>
<INPUT VALUE> <%=Session (“Correo”)%>>E-Mail <p>
</FORM>
"El cliente almacena el
identificador denominado identificador único global (GUID) y lo utiliza
posteriormente para recuperar los datos almacenados en el servidor. De esta
forma cada cliente puede contar con sus propios datos para cada una de las
aplicaciones utilizadas en el lnternet.
OBJETO REQUEST
Una aplicación lnternet difiere
ciertamente en muchos aspectos de una típica aplicación clientelservidor, pero
también tienen sus similitudes; por ejemplo, ambos tipos de aplicaciones
dependen totalmente de la transferencia de datos existentes entre el cliente y
el servidor. Cuando un servidor Web desea enviar datos a un cliente lleva a
cabo esta tarea creando una página Web y enviándola. Cuando un cliente desea
devolver un dato a un servidor Web, el navegador ejecuta un proceso denominado
envío de formularios.
Para enviar datos a un servidor Web, el
cliente utiliza un formulario con etiquetas <FORM>. Estos formularios
incluyen distintos campos de entrada de datos similares a cuadros de texto. El
programa cliente empaqueta los datos introducidos en los campos de datos y,
posteriormente, envía el paquete de datos a la computadora back-end.
El proceso de envío de cualquier
formulario está controlado por dos atributos de la etiqueta <FORM>:
METHOD y ACTION. El atributo METHOD de la etiqueta <FORM> determina la
forma en la que se envían los datos al servidor. Este atributo cuenta con dos
posibles valores: POST y GET. POST le pide al navegador que empaquete todos los
datos contenidos en el formulario y que los envíe al servidor. GET, por otro
lado, envía los datos como una parte integrante de¡ Localizador Uniforme de
Recursos (URL) de la página destino. El atributo ACTION especifica cuál será la
página destino de los datos que se han enviado.
Por ejemplo, las siguientes líneas de
programas envían todos los datos contenidos en los campos de texto a una
página, denominada DATOS.ASP, utilizando para ello el método POST:
<FORM
METHOD= "POST"
1
ACTION
"http;//www.colima.com/datos.asp”>
<P>
<INPUT TYPE= "TEXT" NAME= 'TXTNombre"></P>
<P> <INPUT TYPE= "TEXT"
NAME= 'TXTEmail"></P>
<P>
<INPUT TYPE= "SUBMIT”></P>
</FORM>
El control especial denominado
TYPE="SUBMIT”, es un botón que deberá pulsar el usuario cuando se
encuentre listo para enviar el formulario. Al pulsar el botón, se provocará que
el navegador empaquete los datos introducidos en los campos de texto y los
envíe. El formato de los datos remitidos se encuentra estrictamente definido,
por lo que el servidor sabe perfectamente lo que va a recibir de¡ cliente. Los
datos adoptarán la forma de Campo=Valor; estos pares de información se enviarán
al servidor en un formato textual, claro. Si en el ejemplo anterior escribiera
Nueva Tecnología dentro del campo txtnombre e informes en el campo txtEMail, el
archivo DATOS.ASP recibiría la siguiente cadena de texto:
txtNombre=NuevaTecnología&txtEMail=Informes.
En el lado del servidor, estos datos se
dividirán de nuevo en campos y en valores y, finalmente, se utilizarán con el
fin previsto, incluyendo acceso a base de datos o creación y envío de correo
electrónico. Es en este momento cuando el objeto Request entra en acción. ASP
utiliza al objeto Request para esgajar los datos enviados por el programa
cliente. Para utilizar el objeto Request sólo se tendrá que proporcionar el
nombre del campo que se desee examinar, el objeto Request obtendrá el valor.
Por ejemplo, la siguiente instrucción devolverá el valor NuevaTecnología:
<%=Request.Form(lltxtNonibre")%>
Request.Form se utiliza siempre que
desee examinar el contenido de un formulario enviado a una página ASP. El
objeto Request sólo estará disponible para páginas ASP, y sólo puede devolver
datos desde un formulario enviado directamente a su página. No podrá acceder a
datos contenidos en formularios que no hayan sido enviados a su página.
Muchas aplicaciones lnternet utilizan
envíos secuenciales de formularios para llevar a cabo tareas tales como
conexión a una base de datos. Sin embargo en ocasiones puede suceder que un
usuario no necesite rellenar un formulario y enviarlo, Sino que sólo desee
pulsar un hipervínculo para acceder a nuevos datos. Este tipo de tareas también
se puede realizar utilizando el objeto Request.
Para crear un hipervínculo capaz de
enviar datos necesitará utilizar un ancla; es decir, la etiqueta <A>. La
etiqueta ancla utiliza el atributo HREF para designar una página destino y para
transportar allí los datos cuando el usuario pulse sobre el vínculo.
El signo de interrogación (?) separa el
nombre de la pagina destino de los datos. Volviendo al ejemplo en el que un
formulario enviará a los campos
txtnombre y txtcorreo. Si se desea
enviar los mismos datos utilizando un hipervínculo, se deberá introducir las
siguientes líneas de código:
<A HREF
“http:www.Colima.com/datos.asp?
txtNombre=NuevaTecnologia&txtCorreo=Informes”>
¡pulse aquí para enviar datos!
<A>
Obsérvese que los datos unidos al
hipervínculo tiene el formato Campo=Valor, al igual que sucede en un formulario
que se ha enviado. Siempre que proporcione los datos en este formato, el objeto
Request será capaz de subdividirlos y analizarlos. Sin embargo; no se podrá
utilizar la sintaxis Request.Forrn con los datos enviados mediante un
hipervínculo. En su lugar, se deberá utilizar Request.QueryString, que trabaja
en la misma forma que Request. Form, pero que se empleará con los datos
enviados mediante un hipervínculo. De esta forma, la siguiente instrucción
devuelve el valor NuevaTecnología desde el hipervínculo.
<%=Request.QueryString(lltxtNombre")%>
El objeto Request tiene otros usos
además de los ya indicados. Se podrá, por ejemplo, utilizar Request para
recuperar toda clase de información relacionada con la aplicación cliente. Podrá
acceder a cualquier cosa, desde recetas enviadas junto a la solicitud del
cliente a cadenas de agente de usuario de¡ navegador. El siguiente listado
muestra un ejemplo sencillo de¡ empleo de la colección ServerVariables
perteneciente al objeto Request para determinar la cuenta de Microsoft Windows
NT a la que ha accedido
la aplicación cliente.
<%@
LANGUAGE=”VBScrip” %>
<HTML>
<HEAD>
<META
NAME=”GENERATOR” content=”Microsoft Visual Interdev 1.0”>
<META
HTTP-EQUIP=”Content-type” content=”text/html;
charset=iso-8859-1>
<TITLE>Variables del
servidor</TITLE>
</HEAD>
<BODY
BGCOLOR=”WHITE”>
<H1>
Ha accedido con el nombre
<%=Request.ServerVariables(“LOGON_USER”%>
</H1>
</BODY>
</HTML>
Las variables del servidor proporcionan
un amplio abanico de información sobre la aplicación cliente y el servidor Web.
La relación completa de todas las variables pertenecientes a esta colección, y
que se podrá utilizar, se encuentra en Visual lnterdev. En cualquier caso, para
poder acceder a cualquier variable, sólo se tendrá que leer la colección. Por
ejemplo, la siguiente instrucción proporciona la cadena de agente usuario del
navegador cliente:
<%=Reques.ServerVariables"AHTTP-USER-AGENT")%>
OBJETO RESPONSE
El objeto
Response gestiona el contenido proporcionado a un navegador por un ASP. De
hecho aunque no se dé cuenta, utilizará el objeto Response en cada página ASP.
Cuando se emplee la combinación de caracteres menor y mayor
que/porcentaje/igual («%=variable%»)para devolver el contenido generado por un
ASP, el signo igual es, en realidad, la abreviatura de¡ método Write de] objeto
Response. Por lo tanto, las dos siguientes instrucciones son equivalentes:
<%="NuevaTecnoloía"%>
<%Response.Write
"NuevaTecnología"%>
Como el objeto Response se utiliza con
tanta frecuencia en ASP, la abreviatura del signo de igualdad está plenamente
justificada. En caso
Contrario, tendría que escribir
innumerables veces la combinación Response.Write en todas las páginas ASP.
Otra útil
característica del objeto Response es la propiedad Expires. Response.Expires
especifica el tiempo en minutos que deberá transcurrir antes de que expire la
página actual. Si se define como cero esta propiedad. la página Web expirará en
el momento en que sea importada e lnternet Explorer no almacenará la página en
la memora caché.
El
almacenamiento en caché de Internet Explorer 4.0 afecta a muchos proyectos de
desarrollo, y un mal uso puede impedir que su servidor funcione correctamente,
IE 4.0 almacena en caché las páginas de dos formas distintas: en el disco y en
la memoria. La mayoría de los diseñadores y usuarios están familiarizados con
el almacenamiento en disco de las páginas y suponen que esta operación tendrá
lugar, pero la mayoría de los usuarios no se percaten de que IE 4.0 también
utiliza la memoria de la computadora como lugar de almacenamiento caché. De
hecho, IE 4.0 recuerda en la RAM las cinco últimas paginas visitadas. Este
hecho puede tener un impacto importante en la forma en que se comporte la
aplicación. Supongamos, por ejemplo, la siguiente instrucción que muestra la
fecha/hora en una página Web:
<HI>LA hora actual es
<%Response.Write Now%>
Bajo condiciones normales IE 4.0
solicita esta página y se ejecutará el programa en el servidor haciendo que la
hora actual aparezca en la página. Sin embargo, si el navegador accede a otra
página y vuelve luego acceder a la página que contenía la marca de fecha/hora.
La hora no habrá cambiado. Esto se debe a que IE 4.0 a almacenado en la RAM el
resultado de la página ASP y no solicita un nuevo acceso al servidor para
recuperarla. Esta situación continuará hasta que el usuario visite un mínimo de
cinco páginas distintas. En este caso, la primera página a la que se accedió se
borrará de la caché de la RAM.
Podrá evitar este efecto perjudicial
definiendo como 0 la propiedad Expires del objeto Response. Lo que fuerza que
la página Web expire. El código contenido en el siguiente listado muestra la
hora correcta siempre que se visualice el contenido de la página
independientemente de que se encuentra o no en la caché de la memora RAM.
Del mismo modo, el empleo de la caché
de RAM puede originar efectos extraños durante la fase de diseño. Los
diseñadores suelen realizar modificaciones sobre una página Web con Visual
lnterdev, luego ven su aspecto con un navegador por último se preguntan
porque los cambios realizados no
aparecen la nueva página. Este efecto suele ocurrir porque la antigua versión
de la memoria RAM, y ¡E 4.0 no carga la página modificada. Por tanto, cuando se
desarrolle páginas con Visual lnterdev, siempre deberá asegurarse de cargar
correctamente sus páginas en el navegador después de realizar los cambios.
<%LANGUAGE=”VBScript”%>
<%RESPONSE.Expire
= 0%>
<HTML>
<HEAD>
<META
NAME-"GENERATOR" Content="Microsoft visual InterDev1.0”>
<META HTTP
–EQUIV=” Content=-Tipe” content=”test/html;
charset=iso-8859-1>
<TITLE>comó obligar a que una
pagina expire</TITLE>
</HEAD>
<BODY BGCOLOR=”white>
<h1> actualmente la hora es
<%Response,write Now%>
</BODY>
</HTML>
OBJETO SERVER
El objeto
Server proporciona funciones que no están relacionadas entre sí de ninguna
forma excepto en el sentido de que son útiles para el diseñador de aplicaciones
lnternet.
Quizá la función más importante de
todos los objetos Server sea el método CreateObject, que permite crear
instancias de componentes Active X. El componente puede ser bien un componente
integrado que se comercialice con Visual lnterdev o un componente que se
desarrolla en cualquier lenguaje. En cualquier caso, para poder utilizar un componente
ActiveX del lado del servidor, se deberá emplear el método CreateObject.
CreateObjet toma como argumento el
ProgID del componente ActiveX que se desea utilizar. Un ProgID es un nombre
descriptivo para un componente, tal como Hoja.Excel o Word.Basi. La siguiente
instrucción muestra la forma en que deberá utilizar el método CreateObject para
generar una instancia de un componente de correo electrónico cuyo ProgID sea
Conector.Correo:
Set MiObjeto =
Server.CreateObject ("Conector.Correo")
COMPONENTES
DE ACTIVE SERVER PAGES
Los
componentes de ASP son realmente componentes de ActiveX (como todos aquellos
que pueda crear con Visual Basie, Visual C++ e, incluso, Visual J++). Estos
componentes especiales, sin embargo, han sido desarrollados por Microsoft y se
comercializan con Visual lnterdev. Han sido diseñados para realizar tareas
útiles y genéricas para servidores Web,
incluyendo el acceso a datos. Se podrá
crear estos componentes en sus páginas Web utilizando el método CreateObject
de¡ objeto Server. Una vez creados, podrá acceder a sus propiedades y Métodos
para llevar a cabo funciones diversas en su servidor.
COMPONENTES DE
ACCESO A BASES DE DATOS
El componente
ASP de mayor utilidad es el denominado Database Access, también llamado objetos
de datos ActiveX o ADO. Si se desea editar una base de datos en Web, se deberá
emplear este componente. Y los objetos contenidos en él, para leer y escribir a
fuentes de datos del tipo Open Database Connectivity (ODBC)
(En el apéndice A se presenta una lista
completa de los Objetos de Datos de ActiveX).
El objeto Connection se crea mediante
el método CreateObject del objeto Server y utiliza una variable para recibir el
objeto al que se hace referencia. Una vez creado el objeto Connection, se puede
utilizar para conectar con cualquier fuente de datos ODBC. El siguiente código
establece una conexión con una fuente ODBC del tipo SQL Server, denominada
Publicaciones:
<%
‘Declara una variable
Dim objconnection
‘ Crea el objeto connection
set objconnection
= server . CreateObjet(“adobc.Connection”)
‘ Abre la conexión con la fuente de
datos
objconnection.open “ ”,
%>
En el listado anterior, objconnection
es la variable utilizada como objeto de referencia, de la instancia del objeto
Connection. Esta referencia tendrá acceso a todas las propiedades y métodos del
objeto Connection. El método Open establece la conexión con la fuerte de datos
y cuenta con tres argumentos nombre de la fuente de datos, ID del usuario y
contraseña.
Una vez abierta la conexión con la
fuente de datos se podrá utilizar un objeto Recordset para Recuperar la
información almacenada en la fuente de datos. El objeto Recorset permite
ejecutar la instrucción SELECT de SQL y obtener un grupo de registros que
cumplan con las condiciones indicadas en la instrucción SELECT. Al igual que
sucede con el objeto Connection, se podrá crear el objeto de Recordset
utilizando el objeto Server. En el siguiente ejemplo, el programa ejecuta una
instrucción SELECT de SQL sobre la fuente de datos representada por la variable
objconnection:
<%
Declara una variable
Dim objRecorset
‘Crea el objeto Recorset
set objRecorset
= Server. Createobject(“ADODB.Recorset”)
‘ejecuta la consulta SQL
objRecorset.open
“SELECT *”, objConnection
%>
Una vez que han sido extraídos los
registros, se podrá emplear los metodos MoveFirst, MoveLast, MoveNext y
MovePrevious para navegar por los distintos registros. El método Write del
objeto Response podrá introducir los datos en una página Web que,
posteriormente, importará el navegador.
listado siguiente muestra una página
ASP de ejemplo que genera una lista de las editoriales contenidas en una base
de datos de Publicaciones.
<%@
LANGUAGE=VBScript” %>
<HTML>
<HEAD>
<META
NAME-"GENERATOR" Content="Microsoft visual InterDev1.0”>
<META HTTP
–EQUIV=” Content=-Tipe” content=”test/html;
charset=iso-8859-1”>
Declaración de variables
Dim
objconnection
Dim
objRecordset
‘creacion de
objetos
set
objconnection= Server.CreateObject("ADODB. Connection”)
set
objRecordset= Server.CreateObject("ADODB. Recordset”)
Abrir conexión y ejecutar la
consulta
objConnection.Open
"Publicasiones". "sa””
objRecordset.open"SElECT
nombre_pub FROM editores”, objconnection
%>
Rédótdáet.m
Loop
,</$ELECT5
Administrar la información contenida en
un objeto Recordset es una de las primeras tareas de programación que se debe
realizar en cualquier aplicación Web orientada a datos. A menudo, una simple
consulta da lugar a más filas de datos de las que se pueden mostrar
razonablemente en pantalla. Por ejemplo, cuando se utiliza cualquier motor de
búsqueda lnternet. El sistema de búsqueda acepta una palabra clave y como
resultado, muestra una lista con vínculos a los diferentes servidores que
tengan relación con dicha palabra. Sin embargo, muchas veces existen miles de
servidores lnternet que contienen la clave introducida. Mostrar todos estos
servidores en una única página Web es obviamente imposible.