Tiempo: 4h Introducción a ASP (Active Server Pages) Departamento de Lenguajes y Sistemas Informá Informáticos Grupo de Ingenierí Ingeniería del Software Versión original: Amador Durán Toro (diciembre 2004) Última revisión: Amador Durán y David Benavides (diciembre 2006); revisión y buenas prácticas. escuela técnica superior de ingeniería informática Noviembre 2006 Introducció Introducción a ASP (Active Server Pages) Pages) • Procesamiento en servidor Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos ASP 1. Introducció Introducción ADO 2. Estilos de programació programación ASP 11 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection Cliente web 88 22 77 33 44 Datos Datos 3.1. El objeto Application Lógica de Negocio Lógica de Negocio 3. Objetos ASP Presentació ón Presentaci Presentación [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) 66 SGBD SGBD 5 Servidor web (con capacidad de procesamiento) 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP Sevilla, noviembre de 2006 Grupo de Ingeniería del Software 1 1 [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Introducció Introducción a ASP (Active Server Pages) Pages) • Conceptos bá básicos Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Introducció Introducción 2. Estilos de programació programación ASP 3. Objetos ASP 3.1. El objeto Application 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP – ASP = Active Server Pages – ASP permite ejecutar scripts en el proceso del servidor, no en procesos aparte como los CGIs. – ASP no es estándar, es una tecnología propietaria de Microsoft. – Para que el servidor IIS procese el código ASP la página debe tener extensión .asp – Una página ASP no se puede abrir en local, es necesario hacerlo a través de un servidor IIS, normalmente con: • http://localhost/…/archivo.asp • http://127.0.0.1/…/archivo.asp • http://nombre_máquina/…/archivo.asp • http://dirección IP/…/archivo.asp – En el código ASP se pueden usar los objetos ASP predefinidos y objetos ActiveX. ActiveX [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Sevilla, noviembre de 2006 Grupo de Ingeniería del Software 2 Introducció Introducción a ASP (Active Server Pages) Pages) • Objetos ASP Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Introducció Introducción 2. Estilos de programació programación ASP 3. Objetos ASP 3.1. El objeto Application 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP Sevilla, noviembre de 2006 Grupo de Ingeniería del Software – Lo habitual en código ASP es usar los objetos ASP y los objetos de acceso a datos (ADO). – Los objetos ASP están disponibles siempre en el código ASP y son Application, Application Session, Session Server, Server Request y Response. Response – Los objetos ASP no son objetos JavaScript, son objetos VBScript, por lo que no se puede acceder a sus propiedades mediante la notación de los corchetes y a veces no pueden usar los tipos de datos implícitos de JavaScript. • Objetos ADO – Los objetos ADO hay que crearlos explícitamente como cualquier objeto ActiveX mediante Server.CreateObject. Server.CreateObject – Nosotros usaremos páginas ASP para procesar los datos de los formularios enviados, acceder a una base de datos y devolver una respuesta al usuario. 3 2 [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Introducció Introducción a ASP (Active Server Pages) Pages) • Esquema de una pá página ASP Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Introducció Introducción 2. Estilos de programació programación ASP 3. Objetos ASP 3.1. El objeto Application 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection <%@ language <%@language="JavaScript" language="JavaScript"%> %> <<html> html> html> <!--- código > <! -<!-códigoHTML HTML--> --> …… <% <%código códigoASP ASP%> %> …… <<script script language=" ="JavaScript JavaScript"" runat=" ="server server"> "> language runat language="JavaScript" runat="server"> código códigoASP ASP </script script> > </ </script> …… <!--- código > <! -<!-códigoHTML HTML--> --> </html html> > </ </html> 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Sevilla, noviembre de 2006 Grupo de Ingeniería del Software 4 Introducció Introducción a ASP (Active Server Pages) Pages) • Modularizació Modularización del có código ASP (atributo (atributo src) src) Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Introducció Introducción – Se puede usar el atributo src en la etiqueta <script runat="server"> para reutilizar código JavaScript en cliente y en servidor (funciones de validación, p.e.). 2. Estilos de programació programación ASP 3. Objetos ASP 3.1. El objeto Application 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP <%@ language <%@language="JavaScript" language="JavaScript"%> %> <<html> html> html> …… <<script script language=" ="JavaScript JavaScript"" language language="JavaScript" runat=" ="server server" " runat runat="server" src=" ="Funciones.js Funciones.js"> "> src src="Funciones.js"> </script script> > </ </script> …… </html html> > </ </html> function functionf() f() {{ }} …… Funciones.js Sevilla, noviembre de 2006 Grupo de Ingeniería del Software 5 3 [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Introducció Introducción a ASP (Active Server Pages) Pages) • Modularizació Modularización del có código ASP (#include (#include)) Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Introducció Introducción 2. Estilos de programació programación ASP 3. Objetos ASP 3.1. El objeto Application 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP – Se puede usar la directiva include para modularizar el código ASP y reutilizarlo en servidor. Hay dos variantes: <!-<!-- #include file = "camino a archivo.inc" --> --> <!-<!-- #include virtual = "camino virtual a archivo.inc" --> --> – Los archivos que se incluyen suelen tener extensión .inc para evitar que puedan ejecutarse. – Suelen estar en un directorio sin permiso de lectura. <%@ language <%@language="JavaScript" language="JavaScript"%> %> <!--#include > <! -<!-- #includefile file=="archivo.inc" "archivo.inc"--> --> <<html> html> > html <% <% function functionf() f() {{ <% <%código códigoASP ASP%> %> </html html> > </ </html> …… }} %> %> archivo.inc [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Sevilla, noviembre de 2006 Grupo de Ingeniería del Software 6 Introducció Introducción a ASP (Active Server Pages) Pages) • Formulario y tratamiento separados Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos submit 1. Introducció Introducción 2. Estilos de programació programación ASP 3. Objetos ASP 3.1. El objeto Application formulario.html tratamiento.asp 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP Sevilla, noviembre de 2006 Grupo de Ingeniería del Software <<html> html> html> …… <<form form action="tratamiento.asp" > action="tratamiento.asp"……> …… </form form> > </ </form> …… </html html> > </ </html> 7 4 [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Introducció Introducción a ASP (Active Server Pages) Pages) • Formulario y tratamiento en la misma pá página Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos submit 1. Introducció Introducción 2. Estilos de programació programación ASP 3. Objetos ASP 3.1. El objeto Application formulario.asp 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP <%@ language <%@language="JavaScript" language="JavaScript"%> %> <<html> html> html> <% <%ifif((((Request.Form.Count Request.Form.Count== ==00))&& && ((Request.QueryString.Count == Request.QueryString.Count ==00)))){{ %> %> <!--- formulario > <! -<!-formulariocon conaction="formulario.asp" action="formulario.asp"--> --> <% <%}}else else{{%> %> <!--> <! -<!--tratamiento tratamientogenerando generandolalarespuesta respuesta--> --> <% <%}}%> %> </html html> > </ </html> [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Sevilla, noviembre de 2006 Grupo de Ingeniería del Software 8 Introducció Introducción a ASP (Active Server Pages) Pages) • Definició Definición de Application Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Introducció Introducción 2. Estilos de programació programación ASP 3. Objetos ASP 3.1. El objeto Application 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP Sevilla, noviembre de 2006 Grupo de Ingeniería del Software – Este objeto representa a la aplicación, que en ASP es lo mismo que un directorio virtual. – Existe desde que el primer usuario abre una página del directorio virtual hasta que el último usuario la cierra. – Su uso principal es para guardar variables de aplicación, para las que el propio objeto actúa como un diccionario al que se le pueden añadir entradas en cualquier momento: Application("clave") Application("clave") = valor; – Para recuperar un valor del diccionario se usa la misma sintaxis: v = Application("clave"); Application("clave"); No Nose sepueden puedenalmacenar almacenar Arrays ArraysJavaScript JavaScripten en elelobjeto objetoApplication Application 9 5 [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Introducció Introducción a ASP (Active Server Pages) Pages) • Métodos de Application 1. Introducció Introducción – Dispone de dos métodos interesantes que son Lock() Lock() y Unlock() Unlock() que sirven para bloquear y desbloquear el acceso al diccionario interno. 2. Estilos de programació programación ASP – El uso habitual suele ser: Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 3. Objetos ASP 3.1. El objeto Application 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection Application.Lock(); Application.Lock(); <!-- acceso al diccionario --> Application.Unlock(); Application.Unlock(); • Eventos de Application – Tiene dos eventos, OnStart y OnEnd nEnd que se pueden gestionar en el fichero global.asa. global.asa – En los gestores de dichos eventos se suelen inicializar o eliminar las variables de aplicación. 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Sevilla, noviembre de 2006 Grupo de Ingeniería del Software 10 Introducció Introducción a ASP (Active Server Pages) Pages) • Definició Definición de Session Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Introducció Introducción 2. Estilos de programació programación ASP 3. Objetos ASP 3.1. El objeto Application 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP Sevilla, noviembre de 2006 Grupo de Ingeniería del Software – Representa a una sesión, que es el tiempo que un usuario está conectado de forma continuada. – Igual que Application, también tiene un diccionario en el que se pueden guardar variables de sesión. • Propiedades de Session – Timeout: Timeout especifica en minutos el tiempo máximo que se espera antes de cerrar una sesión inactiva. El valor predeterminado es 10 minutos. – SessionID: SessionID identificador de la sesión. • Métodos de Session – El método Abandon() Abandon() hace que termine la sesión cuando se acabe de procesar la página ASP actual. • Eventos de Session – OnStart y OnEnd, OnEnd, se pueden gestionar en global.asa 11 6 [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Introducció Introducción a ASP (Active Server Pages) Pages) • Definició Definición de Server Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Introducció Introducción 2. Estilos de programació programación ASP 3. Objetos ASP 3.1. El objeto Application 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP – Este objeto representa al servidor, es decir, a Internet Information Server. • Propiedades de Server – Su propiedad más interesante es ScriptTimeout, ScriptTimeout que indica el tiempo máximo en segundos que se puede estar ejecutando una página ASP antes de provocar un error. El valor por defecto es de 90 segundos. • Métodos de Server – CreateObject(clase ActiveX): para crear objetos CreateObject ActiveX. – MapPath(path_virtual): devuelve el camino en el MapPath sistema de ficheros del servidor del camino especificado mediante directorios virtuales. [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Sevilla, noviembre de 2006 Grupo de Ingeniería del Software 12 Introducció Introducción a ASP (Active Server Pages) Pages) • Definició Definición de Request Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Introducció Introducción 2. Estilos de programació programación ASP 3. Objetos ASP 3.1. El objeto Application 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP Sevilla, noviembre de 2006 Grupo de Ingeniería del Software – Este objeto representa una petición HTTP. Lo habitual es usarlo para procesar los datos enviados por los formularios. • Propiedades de Request – Su propiedad más importante es Form, Form que es un diccionario que contiene entradas correspondientes a los datos enviados por un formulario (si se usó POST como método de envío): Request.Form( "name" ).Item Æ valor del formulario Request.Form( "name" ).Count Request.Form( "name" )(i) i=1..n Æ valor – En el caso de que se use GET como método del formulario, se debe usar la propiedad QueryString: QueryString Request.QueryString( "name" ).Item Æ valor del form. Request.QueryString( "name" ).Count Request.QueryString( "name" )(i) i=1..n Æ valor 13 7 [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Introducció Introducción a ASP (Active Server Pages) Pages) • Definició Definición de Response Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Introducció Introducción 2. Estilos de programació programación ASP 3. Objetos ASP 3.1. El objeto Application 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP – Representa la respuesta a una petición HTTP. • Propiedades de Response – Buffer: Buffer booleano que indica si la respuesta se almacena en un búfer o se envía al cliente a medida que se genera. Si IIS < 5.0 es false por defecto. Si IIS ≥ 5.0 es true. – Expires: Expires indica el nº de minutos que la respuesta puede vivir en la caché del navegador. Un valor de 0 hace que siempre se vuelva a cargar. – ExpiresAbsolute: ExpiresAbsolute igual pero con una fecha y una hora concretas: • Response.ExpiresAbsolute = new Date( año, mes, día, hora, min, seg, ms ).getVarDate(); • Es necesario aplicar el método getVarDate() getVarDate() para convertir la fecha al formato de VisualBasic. [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Sevilla, noviembre de 2006 Grupo de Ingeniería del Software 14 Introducció Introducción a ASP (Active Server Pages) Pages) • Más propiedades de Response Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Introducció Introducción 2. Estilos de programació programación ASP 3. Objetos ASP 3.1. El objeto Application 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP Sevilla, noviembre de 2006 Grupo de Ingeniería del Software – IsClientConnected: IsClientConnected booleano que indica si el cliente está conectado todavía. – ContentType: ContentType indica el tipo del contenido de la respuesta. Por defecto es "text/HTML" pero puede tener otros valores como: "image/GIF", "image/JPEG", "text/plain", … en cuyo caso se debe usar el método BinaryWrite en lugar de Write. Write • Métodos de Response – BinaryWrite(array) BinaryWrite(array): escribe el array de bytes en la respuesta. – Clear() Clear(): limpia el búfer. – End() End(): provoca la terminación del procesamiento y envía el búfer como esté. – Flush() Flush(): envía el contenido del búfer al cliente. – Redirect(URL) Redirect(URL): reenvía al navegador a otra URL. 15 8 [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Introducció Introducción a ASP (Active Server Pages) Pages) • Más mé métodos de Response Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Introducció Introducción – Write( Write( expresió expresión ): ) escribe el resultado de evaluar la expresión en la respuesta al cliente. Se puede abreviar como <%= expresión %> 2. Estilos de programació programación ASP 3. Objetos ASP 3.1. El objeto Application 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Sevilla, noviembre de 2006 Grupo de Ingeniería del Software 16 Introducció Introducción a ASP (Active Server Pages) Pages) • global.asa Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Introducció Introducción 2. Estilos de programació programación ASP – Archivo opcional que debe estar en la raíz de la aplicación, es decir, del directorio virtual. – Es el único sitio donde se pueden gestionar los eventos OnStart y OnEnd de Aplication y Session. 3. Objetos ASP 3.1. El objeto Application 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP Sevilla, noviembre de 2006 Grupo de Ingeniería del Software <<script script language="JavaScript" > language runat language="JavaScript"runat="server"> runat="server"> function Application_OnStart() function Application_OnStart() {{…} …} function functionApplication_OnEnd() Application_OnEnd() {{…} …} function functionSession_OnStart() Session_OnStart() {{…} …} function functionSession_OnEnd() Session_OnEnd() {{…} …} </script script> > </ </script> 17 9 [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Introducció Introducción a ASP (Active Server Pages) Pages) • Conceptos bá básicos Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Introducció Introducción 2. Estilos de programació programación ASP 3. Objetos ASP 3.1. El objeto Application – ADO = MS ActiveX Data Objects – Son objetos ActiveX que permiten acceder a bases de datos desde el código ASP. – Los objetos más importantes son Connection y Recordset. Recordset 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request Connection Connection 3.5. El objeto Response Command Command Recordset Recordset 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection 4.2. El objeto Recordset Error Error Parameter Parameter Field Field 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Sevilla, noviembre de 2006 Grupo de Ingeniería del Software 18 Introducció Introducción a ASP (Active Server Pages) Pages) • Actores Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Introducció Introducción 2. Estilos de programació programación ASP – Proveedor de datos (OLEDB, ODBC) – Conexión (Connection) – Base de Datos (MySQL, MS Access, SQL Server) 3. Objetos ASP 3.1. El objeto Application 3.2. El objeto Session 3.3. El objeto Server Connection Connection Proveedor Proveedor de de Datos Datos BD BD 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP Sevilla, noviembre de 2006 Grupo de Ingeniería del Software ASP ASP ADO ADO OLEDB OLEDB ODBC BD BD 19 10 [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Introducció Introducción a ASP (Active Server Pages) Pages) • Definició Definición de Connection Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Introducció Introducción 2. Estilos de programació programación ASP 3. Objetos ASP 3.1. El objeto Application 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP – Este objeto representa una conexión con una base de datos. – Su uso habitual es el siguiente: <% <% try try{{ var varconexion conexion==Server.CreateObject( Server.CreateObject("ADODB.Connection" "ADODB.Connection");); conexion.Open( conexion.Open("Provider=Microsoft.Jet.OLEDB.4.0;" "Provider=Microsoft.Jet.OLEDB.4.0;"++ "Data "DataSource=" Source="++Server.MapPath( Server.MapPath("bd/bd.mdb" "bd/bd.mdb")); )); }} catch( catch catch(ee)){{ ////tratamiento tratamientodel delerror error Response.End(); Response.End(); }} ////acceso accesoaalalaBD BD(conexion.Execute(…) (conexion.Execute(…))) conexion.Close(); conexion.Close(); conexion null conexion==null; null;////libera liberarecursos recursos %> %> [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Sevilla, noviembre de 2006 Grupo de Ingeniería del Software 20 Introducció Introducción a ASP (Active Server Pages) Pages) • Métodos de Connection Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Introducció Introducción 2. Estilos de programació programación ASP 3. Objetos ASP 3.1. El objeto Application 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection 4.2. El objeto Recordset – BeginTrans() BeginTrans(): comienza una transacción. – CommitTrans() CommitTrans(): termina una transacción. – RollbackTrans() RollbackTrans(): aborta una transacción. – Open( Open( cadenaConexió cadenaConexión, [usuario], [pwd [pwd]] ): ) abre la conexión con la BD. La cadena de conexión depende del tipo de BD. Opcionalmente se puede indicar usuario y password. Para especificar el camino a la BD se suele usar Server.MapPath. Server.MapPath – Close() Close(): cierra la conexión y todos los recordsets asociados. – Execute( Execute( SQL ): ) ejecuta un comando SQL contra la BD. Si el comando es una consulta, devuelve un objeto de tipo Recordset. Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP Sevilla, noviembre de 2006 Grupo de Ingeniería del Software 21 11 [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Introducció Introducción a ASP (Active Server Pages) Pages) • Definició Definición de Recordset 1. Introducció Introducción – Permite añadir, eliminar y actualizar filas de tablas de bases de datos, pero sólo lo usaremos para manipular el resultado de consultas. 2. Estilos de programació programación ASP – Su uso habitual es el siguiente: Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 3. Objetos ASP 3.1. El objeto Application 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP <% <% try try{{ var varrs rs==conexion.Execute( conexion.Execute("SELECT "SELECT…" …");); ////oobien… bien… var varrs rs==Server.CreateObject("ADODB.Recordset" Server.CreateObject("ADODB.Recordset");); rs.Open( "SELECT rs.Open( "SELECT…", …",conexion conexion);); }} catch( catch catch(ee)){{ ////tratamiento tratamientodel delerror error Response.End(); Response.End(); }} ////recorrido recorridodel delrecordset recordset <% <% while while(!rs.EOF) (!rs.EOF){{ Response.Write( Response.Write(rs("campo1" rs("campo1").Value ).Value);); …… Response.Write( Response.Write(rs("campoN" rs("campoN").Value ).Value);); rs.MoveNext(); rs.MoveNext(); rs null rs==null; null;////libera liberarecursos recursos }} %> %> %> %> %> [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Sevilla, noviembre de 2006 Grupo de Ingeniería del Software 22 Introducció Introducción a ASP (Active Server Pages) Pages) • Propiedades de Recordset Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Introducció Introducción 2. Estilos de programació programación ASP 3. Objetos ASP 3.1. El objeto Application 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP Sevilla, noviembre de 2006 Grupo de Ingeniería del Software – Para acceder a los campos se usa como un diccionario: rs( ).Value Æ valor del campo i rs( "campoi" ).Value – EOF: EOF booleano que indica si el puntero interno está al final del recordset. • Métodos de Recordset – Open( Open( "SQL", conexió conexión ): ) realiza la consulta SQL a la BD y obtiene el resultado. – Close() Close(): cierra el recordset y libera recursos. – MoveFirst(), MoveFirst(), MoveLast(), MoveLast(), MoveNext(), MoveNext(), Move( Move( n ): ) mueve el puntero interno al primero, último, siguiente o salta n registros hacia delante o hacia atrás si n < 0. Usando UsandoAccess, Access, sisise sehace haceMoveLast(), MoveLast(), luego luegono nose sepuede puede hacer hacerMoveFirst(). MoveFirst(). 23 12 [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Introducció Introducción a ASP (Active Server Pages) Pages) • Bloques try/ try/catch en ASP con ADO Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Introducció Introducción 2. Estilos de programació programación ASP – Todas las operaciones con objetos ADO pueden generar excepciones que deben capturarse. – El objeto que lanzan en las excepciones es de tipo Error y tiene las siguientes propiedades: 3. Objetos ASP • name : nombre del error, normalmente "Error". 3.1. El objeto Application • number: number número del error. 3.2. El objeto Session • description: description descripción de la causa del error. 3.3. El objeto Server • message: message habitualmente, igual que description. 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection • Tratamiento del error en el bloque catch – El código habitual en el bloque catch es avisar al usuario del error, liberar recursos y parar el procesamiento ASP con Response.End() Response.End(). 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Sevilla, noviembre de 2006 Grupo de Ingeniería del Software 24 Introducció Introducción a ASP (Active Server Pages) Pages) • Modularidació Modularidación del có código Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos Datos Datosen enSession Session 1. Introducció Introducción 2. Estilos de programació programación ASP 3. Objetos ASP formulario 3.1. El objeto Application 3.2. El objeto Session 3.3. El objeto Server <% %> 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) exito sí ¿errores? ¿errores? no <% %> 4.1. El objeto Connection 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP Sevilla, noviembre de 2006 Grupo de Ingeniería del Software Base Base de de Datos Datos 25 13 [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Introducció Introducción a ASP (Active Server Pages) Pages) formulario <% Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos %> <% <%@language="JavaScript" @language="JavaScript"%> %> <% <% var formulario = Session("formulario"); var formulario = Session("formulario"); var varerrores errores==Session("errores"); Session("errores"); ifif( (!formulario !formulario) ){{ formulario formulario==new newObject(); Object(); formulario.nombre formulario.nombre=="Nombre "Nombrepor pordefecto"; defecto"; formulario.direccion formulario.direccion=="Dirección "Direcciónpor pordefecto"; defecto"; Session("formulario") Session("formulario")==formulario; formulario; }} ifif( (!errores Crear !errores) ){{ Creardos dosobjetos objetosen en errores Session: errores==new newArray(); Array(); Session: Session("errores") ••Para almacenar los Session("errores")==errores; errores; Para almacenar losdatos datos }} del delformulario formulario %> • Para %> • Paraalmacenar almacenarun unArray Array …… de deerrores errores <div ••Mostrar <divid="div_errores"> id="div_errores"> Mostrarerrores erroressisilos loshay hay <% <% for ( e in errores ) { for ( e in errores ) { Response.Write( Response.Write("<div "<divclass='error'>" class='error'>");); Response.Write( Response.Write(errores[ errores[ee] ]);); Response.Write( Response.Write("</div>" "</div>");); }} %> %> </div> </div> …. …. <div <divid="div_nombre"> id="div_nombre"> <label <labelfor="nombre">Nombre:</label> for="nombre">Nombre:</label> <input <inputid="nombre" id="nombre"name="nombre" name="nombre" value="<%= value="<%=formulario.nombre formulario.nombre%>" %>"/> /> </div> </div> 1. Introducció Introducción 2. Estilos de programació programación ASP 3. Objetos ASP 3.1. El objeto Application 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Sevilla, noviembre de 2006 Grupo de Ingeniería del Software 26 Introducció Introducción a ASP (Active Server Pages) Pages) <% <%@language="JavaScript" @language="JavaScript"%> %> Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Introducció Introducción 2. Estilos de programació programación ASP 3. Objetos ASP 3.1. El objeto Application 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP Sevilla, noviembre de 2006 Grupo de Ingeniería del Software <script <scriptlanguage="JavaScript" language="JavaScript"src="validacion.js" src="validacion.js" runat="server"></script> runat="server"></script> • Verificar • Verificar que existen que existen los objetos los objetos formulario y formulario y errores. Si no errores. Si no existen existen redireccionar redireccionar al formulario al formulario • Asignar los • Asignar los valores que valores que se sehan han enviado enviado • Validar los • Validar los datos datosen en Servidor Servidor • Si hay • Si hay errores errores redireccionar redireccionar al formulario al formulario • Si no, • Si no, enviar a la enviar a la página páginade de éxito éxito <% <% var varformulario formulario==Session("formulario"); Session("formulario"); var varerrores errores==Session("errores"); Session("errores"); ifif( (formulario formulario&& &&errores errores) ){{ formulario.nombre formulario.nombre==Request.Form("nombre").Item; Request.Form("nombre").Item; formulario.direccion formulario.direccion==Request.Form("direccion").Item; Request.Form("direccion").Item; errores errores==validar( validar(formulario formulario);); ifif( (errores.length errores.length>>00) ){{ Session( Session("formulario" "formulario") )==formulario; formulario; Session( Session("errores" "errores") )==errores; errores; Response.Redirect( "formulario.asp" Response.Redirect( "formulario.asp");); }} else else{{ Response.Redirect( Response.Redirect("exito.asp" "exito.asp");); }} else{ else else{ Response.Redirect( Response.Redirect("formulario.asp" "formulario.asp");); }} %> %> 27 14 [Ángel US V7] Diseño: Amador Durán Toro (2003-2006) Introducció Introducción a ASP (Active Server Pages) Pages) exito <% <%@language="JavaScript" @language="JavaScript"%> %> Escuela Técnica Superior de Ingeniería Informática Departamento de Lenguajes y Sistemas Informáticos 1. Introducció Introducción 2. Estilos de programació programación ASP 3. Objetos ASP 3.1. El objeto Application 3.2. El objeto Session 3.3. El objeto Server 3.4. El objeto Request 3.5. El objeto Response 3.6. El fichero global.asa 4. Objetos de acceso a datos (ADO) 4.1. El objeto Connection 4.2. El objeto Recordset 4.3. Tratamiento de errores 5. Buenas prá prácticas usando ASP Sevilla, noviembre de 2006 Grupo de Ingeniería del Software <% %> •Rescatar •Rescatarlos los datos datosdel del formulario formulario ••Anular Anularlos los valores valoresen enlala Session Session ••Hacer Hacerelel tratamiento tratamiento de delos losdatos datos (p.e. (p.e. inserción inserciónen en lalaBDs) BDs) <% <% var varformulario formulario==Session("formulario"); Session("formulario"); Session("formulario") null Session("formulario")==null; null; Session("errores") null Session("errores")==null; null; %> %> <html> <html> <head> <head> <title>Éxito</title> <title>Éxito</title> </head> </head> <body> <body> <div <divid="div_exito"> id="div_exito"> <h1>Hola <h1>Hola<%= <%=formulario.nombre formulario.nombre%>, %>, gracias graciaspor porregistrarte</h1> registrarte</h1> <div id="div_volver"> <div id="div_volver"> Pulsa Pulsa<a <ahref="formulario.asp">aquí</a> href="formulario.asp">aquí</a> para paravolver volveralalformulario formulario </div> </div> </div> </div> </body> </body> </html> </html> 28 15