Introducción a la programación de contenidos en internet con ASP - Componentes Active Server Pages
19 - Componentes Active Server Pages
Los componentes de ASP son, realmente componentes de ActiveX que han sido desarrollados por Microsoft y se comercializan con Visual InterDev. Han sido diseñados para realizar tareas útiles y genéricas para servidores Web como por ejemplo el acceso a datos.
Para utilizar estos componentes en páginas Web se deberá utilizar el método CreateObject del objeto Server. Una vez creados, se puede acceder a sus propiedades y métodos.
Componentes Active X de acceso a bases de datos
El componente ASP para editar un abase de datos a traés de la Web es el Database Access, ó (ActiveX ADO).
Se puede emplear este componente, y los objetos contenidos en él, para acceder a fuentes de datos del tipo Open Database Connectivity (ODBC)
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, como pude apreciarse en el siguiente ejemplo donde se abre una base de datos llamada Publicaciones
<%
‘Declara una variable
Dim objConnection
‘Crea el objeto Connection
Set objConnection = Server.CreateObject(“ADODB.Connection”)
‘Abre la conexión con la fuente de datos
objConnection.Open “Publicaciones”, “sa”, “ “
%>
ObjConnection es la variable utilizada como objeto de referencia del objeto Connection y tendrá acceso a todas las propiedades y métodos del objeto Connection.
Para establecer la conexión con la fuente de datos se deben pasar junto con el comando el nombre de la fuente de datos, el ID del usuario y la contraseña.
Una vez abierta la conexión se podrá utilizar un objeto Recordset para recuperar la información almacenada en la fuente de datos.
A través del objeto Recorset podremos ejecutar SELECTs de SQL y obtener grupos de registros como puede verse en el siguiente ejemplo:
<%
Dim objRecordset
Set objRecordset = Server.CreateObject(“ADODB.Recordset”)
objRecordset.Open “SELECT *”, objConnection
%>
Una vez que dispongamos de los registros, se podrá MoveFirst, MoveLast, MoveNext y MovePrevious para navegar por los distintos registros.
Con el método Write del objeto Response se podrá introducir los datos en una página Web que, posteriormente, importará el navegador.
<%@ LANGUAGE=“VBScript”%>
<HTML>
<HEAD>
<META NAME=“GENERATOR” Content=“Microsoft Visual InterDev 1.0”>
<META HTTP-EQUIV=“Content-Type” content=“text/html; charset=iso-8859-1”>
<TITLE>Empleo de ADO</TITLE>
</HEAD>
<BODY>
<%
Dim objConnection
Dim objRecordset
Set objConnection = Server,CreateObject(“ADODB.Connection”)
Set objRecordset = Server.CreateObject(“ADODB.Recordset”)
objConnection.Open “Publicaciones”, “sa!, “”
objRecordset.Open “SELECT nombre_pub FROM Editores”, objConnection
%>
<!-- Construir la lista del grupo de registros extraídos -->
<SELECT SIZE=8>
<%
Do While Not ObjRecordset.EOF
%>
<!-- Crear cada entrada en la lista -->
<OPTION><%=objRecordset (“nombre_pub”)%></OPTION>
<%
objRecordset.MoveNext
Loop
%>
</SELECT>
</BODY>
</HTML>
Habitualmente una consulta devuelve más filas de datos de las que se pueden mostrar en pantalla. La solución a este tipo de problemas es la paginación con la que se muestra tan sólo, una parte de los resultados de búsqueda para que el usuario pueda gestionar la información devuelta por la base de datos.
ADO permiten la paginación mediante el empleo de varias propiedades del objeto Recordset: PageSize, PageCount y AbsolutePage.
Al asignar un valor para la propiedad PageSize se especifica el número de filas que tendrá cada una de las páginas que mostrarán la lista de registros. Y para calcular el número total de páginas que va a ocupar dicho grupo de registros podremos utilizar la propiedad PageCount.
Para acceder a una página con un número específico, se deberá utilizar la propiedad AbsolutePage.
El uso de estas propiedades se puede comprobar en el siguiente ejemplo
<%@ LANGUAGE=“VBScript” %>
<%Response.Expires=0%
<HTML>
<HEAD>
<META NAME=“GENERATOR” Content=“Microsoft Visual InterDev 1.0”>
<META HTTP-EQUIV=“Content-Type” content=“text/html; charset=iso-8859-1”>
<TITLE>Empleo de ADO</TITLE>
</HEAD>
<BODY>
<%
‘¿Número de Página?
Select Case Request.QueryString(“Direction”)
Case “”
Session(“CurrentPage”) = 1
Case “Next”
Session(“CurrentPage”) = Session(“CurrentPage”) + 1
Case “Previous”
Session(“CurrentPage”) = Session(“CurrentPage”) - 1
End Select
Const adOpenKeyset = 1
Dim objConnection
Dim objRecordset
Set objConnection = Server CreateObject(“ADODB.Connection”)
objConnection.Open “Biblio”, “”, “”
Dim strSQL
strSQL = strSQL & “SELECT Authors.Author, Titles.Title, “
strSQL = strSQL & “Publishers. ‘Company Name’ FROM Authors, “
strSQL = strSQL & “‘Title Author’, Titles, Publishers “
strSQL = strSQL & “WHERE Authors.Au-ID = ‘Title Author’.Au_ID“
strSQL = strSQL & “AND (Publishers.’Company Name ‘LIKE “
strSQL = strSQL & “‘%Microsoft%’) ORDER BY Authors,Author” “
Set objRecordset = Server.CreateObject(“ADODB.Recordset”S)
objRecordset.PaeSize = 10
objRecordset.Open str SQL, objConnection, adOpendKeyset
objRecordset.AbsolutePage = CLng(Session(“CurrentPage”))
%>
<P>Page <%=Sessíon(“CurrentPage”)%> of <%=objRecordset.PageCount%></P>
<TABLE BORDER>
<TR>
</TH>
<TH>
Author
</TH>
<TH>
Title
</TH>
<TH>
Publisher
</TH>
</TR>
<%
Dim i
For i = 1 To objRecordset.PageSize
%>
<TR>
<TD>
<%=objRecordset(“Author”)%>
</TD>
<TD>
<%=objRecordset(“Title”)%>
</TD>
<TD>
<%=objRecordset(“Company Name”)%>
</TD>
<TR>
<%
objRecordset.MoveNext
Next
%>
</TABLE>
<!-- Hipervínculo siguiente -->
<%If CLng(Session(“CurrentPage”)) < objRecordset.PageCount Then %>
<P><A HREF=“listado 2-8.asp?Direction=Next”>Página Siguiente</A></P>
<%End If%>
<!-- Hipervínculo anterior -->
<%If CLng(Session(“CurrentPage”)) < objRecordset.PageCount Then %>
<P><A HREF=“listado 2-8.asp?Direction=Prev”>Página anterior</A></P>
<%End If%>
<%
objRecordset.Close
objConnection.Close
Set objRecordset = Nothing
Set objConnection = Nothing
%>
</BODY>
</HTML>
Todo el código anterior se puede incluir en un único archivo ASP para llevar a cabo el proceso de paginación. El programa llamará siempre al mismo archivo ASP un vez tras otra para cada página de datos. La página siempre estará en la memoria RAM porque se la llama de manera recursiva.
Pero ya que la página se encuentra cargada en memorioa, la consulta no se llevará a cabo a menos que se ejecute el código del servidor, paralo que se deberá asignar el valor 0 a la propiedad Expered del objeto Response. Esta instrucción hace que se refresque el archivo en cada petición.
Este código ejecuta la misma consulta cada vez que se llama a la página, modificando únicamente la propiedad AbsolutePage. Esta operación requiere menos recursos que el almacenamiento de grandes objetos Recordset en variables de sesión y obligar a que su valor perdure en todas las páginas.
Con objetos ADO se podrá acceder a los datos utilizando las instrucciones SQL adecuadas, realizando las consultas mediante procedimientos SQL almacenados en el servidor o empleando instrucciones SELECT del SQL.
Para las actualizaciones se ejecutarán instrucciones UPDATE de SQL y el método Execute del objeto Connection. También se podrá usar objetos ADO en el lado del cliente en combinación con el Control Avanzado de Datos (ADC).
Componentes de acceso a archivos
El componente File Access permite acceder a archivos de texto almacenados en un servidor Web y consta, de dos objetos independientes: el objeto FileSystem, que se utiliza para abrir y cerrar archivos, y el objeto TextStream, que se utiliza para leer y escribir.
Para abrir un archivo se deberá crear primero, un objeto File, System con el método CreateObject del objeto Server. Una vez que tengamos una instancia del objeto FileSystem podremos emplear el método CreateTextFile para crear un nuevo archivo o el método OpenTextFile para abrir un archivo existente.
El resultado es un objeto TextStream con el que se puede leer y escribir el contenido de un fichero, como se puede ver en el siguiente ejemplo.
Set objFile = Server.CreateObject(“Scripting.FileSystemObject”)
Set objStream = objFile.OpenTextFile(“Fichero.TXT”)
Una vez creado el objeto TextStream, se podrá utilizar cualquier método disponible para leer o escribir el archivo, pero teniendo en cuenta que cualquier archivo se abrirá para lectura o para escritura, no para realizar ambas operaciones a la vez.
Componente Capacidad del Navegador
El componente Browser Capabilities (Capacidad del Navegador) identifica el navegador que está accediendo al servidor y proporciona un acceso a la lista de funciones soportadas por el navegador. Al utilizar este componente, se podrá adaptar la página Web a un determinado navegador.
El componente Browser Capatilities utiliza la cadena del agente de usuario del navegador para identificar al mismo. El navegador pasa al servidor la cadena del agente de usuario cada vez que se solicita el acceso a una página Web.
Para determinar las funciones disponibles en un navegador, Browser Capabilities compara la cadena del agente de usuario del navegador con los registros existentes de un archivo especial llamado BROWSCAP.INI. Cuando el componente Browser Capabilities encuentre la cadena del agente de usuario adecuada en el archivo, todas las funciones listadas para el navegador asociado se encontrarán accesibles como propiedades del componente.
Utilizar el componente Browser Capabilities es similar a introducir una instrucción de compilación condicional en una página ASP. Podrá construir instrucciones If...Then sencillas que afecten en gran medida al contenido final.
Com se observa en el siguiente código, mediante este objeto podremos enviar una etiqueta <OBJECT> a un navegador compatible con los controles ActiveX, una etiqueta <APPLET> a una navegador compatible con Java, o un mensaje de texto a los navegadores que no cuenten con ninguna de las funciones anteriores.
<%@ LANGUAGE=“VBScript” %>
<%Response.Expires=0%>
<HTML>
<HEAD>
<META NAME=“GENERATOR” Content=“Microsoft Visual InterDev 1.0”>
<META HTTP-EQUIV=“Content-Type” content=“text/html; charset=iso-8859-1”>
<TITLE>Capacidad del navegador </TITLE>
<HEAD>
<BODY>
<CENTER>
<%
‘ Creación del componente Capabilities del navegador
Dim objNavegador
Set objNavegador = _
Server.CreateObject(“MSWC.BrowserType”)
‘Búsqueda de las funciones que se podrán utilizar
%>
>%
If objNavegador.ActiveXControls Then
%>
<H1>Controles ActiveX</H1>
<SCRIPT LANGUAGE=“VBScript”>
<!--
Sub Window_OnLoad()
pathBall.Target = objBall.Style
End Sub
-->
</SCRIPT>
<!-- Control estructurado de gráficos -->
<OBJECT ID=“objBall”
STYLE=“POSITION:ABSOLUTE;HEIGHT;70;
WIDTH:110;TOP:0;LEFT:0;ZINDEX:0” CLASSID=
“CLASID:5FD6A143-372A-11D0-A521-0080C78FEE85”>
<PARAM NAME=“Línea0001” VALUE=“SetLineColor(255,255,255)”>
<PARAM NAME=“Línea0002” VALUE=“SetFillColor(255,0,0,0,0,255)”>
<PARAM NAME=“Línea0003” VALUE=“SetLineColor (1)”>
<PARAM NAME=“Línea0004” VALUE=“SetFillSTYLE(1)”>
<PARAM NAME=“Línea0005” VALUE=“Oval(0,-25,50,50,0)”>
<OBJECT>
<!-- Control de camino -->
<OBJECT ID=“pathBall”
CLASSID=
“CLSID:E0E3CC60-6A80-11D0-9B40-00A0C903AA7F”>
<PARAM NAME=AutoStart VALUE=-1>
<PARAM NAME=XSeries VALUE=“0,0;30,0;45,0;52,0;55,0”>
<PARAM NAME=YSeries VALUE=“0,0;30,80;45,160;52,240;55,320”>
<PARAM NAME=EdgeAction VALUE=“1”>
<PARAM NAME=TickInterval VALUE=10>
<OBJECT>
<%ElseIf objNavegador.JavaApplets Then%>
<H1>Aplicación Java</H1>
<APPLET CODE=“marque.class” HEIGHT=40 WIDTH=400>
<PARAM NAME=“CAPTION” VALUE=“(El Java es maravilloso!”>
</APPLET>
<%ELse%>
<!-- Navegador textual -->
<H1>¡No es compatible con ningún tipo de componentes!</H1>
<%End If%>
</CENTER>
</BODY>
</HTML>
Componentes de vinculación de contenidos
El componente Content Linking (vinculación de contenidos) permite la publicación en línea de revistas y periódicos y enlaza páginas Web independientes, permitiendo la navegación ininterrumpida por ellas.
Este componente depende también de un archivo de texto para poder crear la publicación. El archivo, conocido como Content Linking List (Lista de vinculación de contenidos), proporciona una lista de las páginas Web vinculadas y una descripción de cada una de ellas. Para emplear el componente Content Linking, sólo necesitará crear el componente y leer el archivo de texto asociado. La instrucción a utilizar es la siguiente:
<%Set objLinker = Server.CreateObject(“MSWC.NextLink”)%>
|
Opiniona sobre 'Introducción a la programación de contenidos en internet con ASP - Componentes Active Server Pages' (1)
Opina sobre este monografía |

