La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Introducción al desarrollo de aplicaciones web César Fernández Acebal Universidad de Oviedo Arquitectura web en aplicaciones.

Presentaciones similares


Presentación del tema: "Introducción al desarrollo de aplicaciones web César Fernández Acebal Universidad de Oviedo Arquitectura web en aplicaciones."— Transcripción de la presentación:

1 Introducción al desarrollo de aplicaciones web César Fernández Acebal Universidad de Oviedo Arquitectura web en aplicaciones empresariales basadas en tecnología Java/J2EE

2 Introducción al desarrollo de aplicaciones web César Fernández Acebal 2 ÍndiceÍndice Introducción a Internet y la Web Introducción a Internet y la Web HTTP, HTML, URL, servidores web… Introducción a las páginas dinámicas Introducción a las páginas dinámicas CGI, ASP, JSP y Servlets, etc. Mantenimiento de la sesión del usuario Mantenimiento de la sesión del usuario Servidores de aplicaciones Servidores de aplicaciones

3 Introducción al desarrollo de aplicaciones web César Fernández Acebal 3 Introducción a Internet y la Web La Web es una vasta colección de documentos en Internet que están enlazados a través de los hiperenlaces La Web es una vasta colección de documentos en Internet que están enlazados a través de los hiperenlaceshiperenlaces Internet: millones de ordenadores conectados Internet: millones de ordenadores conectados Un conjunto de redes heterogéneas conectadas entre sí mediante el protocolo TCP/IP Los hiperenlaces permiten a los usuarios acceder a documentos situados en otros servidores web, sin preocuparse de su ubicación Los hiperenlaces permiten a los usuarios acceder a documentos situados en otros servidores web, sin preocuparse de su ubicación

4 Tecnologías clave de Internet Veamos una somera introducción a las tecnologías fundamentales sobre las que se sustenta Internet, que serán útiles para comprender posteriormente algunas de las dificultades intrínsecas del desarrollo de aplicaciones web.

5 Introducción al desarrollo de aplicaciones web César Fernández Acebal 5 Tecnologías claves de Internet La infraestructura de Internet es proporcionada fundamentalmente por tres tecnologías: La infraestructura de Internet es proporcionada fundamentalmente por tres tecnologías: conmutación de paquetes La conmutación de paquetes TCP/IP El protocolo TCP/IP cliente/servidor La arquitectura cliente/servidor

6 Introducción al desarrollo de aplicaciones web César Fernández Acebal 6 Conmutación de paquetes Consiste en dividir un mensaje en trozos denominados paquetes, enviar éstos por diferentes caminos y ensamblarlos una vez que lleguen a su destino para recomponer el mensaje original. Surge como respuesta a las redes de conmutación de circuitos, como la telefónica Surge como respuesta a las redes de conmutación de circuitos, como la telefónica El primer libro sobre esta tecnología data de 1964 (Leonard Kleinrock) y luego fue desarrollada por otros en laboratorios de investigación de Estados Unidos e Inglaterra El primer libro sobre esta tecnología data de 1964 (Leonard Kleinrock) y luego fue desarrollada por otros en laboratorios de investigación de Estados Unidos e Inglaterra Con la conmutación de paquetes, la capacidad de una red (su ancho de banda) se incrementa en un factor de 100 o más Con la conmutación de paquetes, la capacidad de una red (su ancho de banda) se incrementa en un factor de 100 o más

7 Introducción al desarrollo de aplicaciones web César Fernández Acebal 7 Conmutación de circuitos Era la que usaban las primeras redes de ordenadores, a imagen y semejanza de la telefónica Era la que usaban las primeras redes de ordenadores, a imagen y semejanza de la telefónica En ellas, se establece una comunicación punto a punto entre ambos extremos mientras tiene lugar la comunicación En ellas, se establece una comunicación punto a punto entre ambos extremos mientras tiene lugar la comunicación Existe un canal dedicado entre ambos, independientemente de los datos que se estén enviando Problemas: –Ineficiente –Poco fiable (Si se corta el canal, se interrumpe la conexión)

8 Introducción al desarrollo de aplicaciones web César Fernández Acebal 8 Ejemplo de conmutación de circuitos Telefónica Telecable Una vez establecido el circuito, es siempre el mismo durante toda la conexión.

9 Introducción al desarrollo de aplicaciones web César Fernández Acebal 9 Conmutación de paquetes Es la tecnología que emplea la red Internet Es la tecnología que emplea la red Internet Los mensajes se dividen en paquetes Los mensajes se dividen en paquetes A cada paquete se le añaden la dirección de origen y destino, el número de secuencia, información de control de errores… En vez de enviarse directamente a la dirección de destino, los paquetes viajan de una máquina a otra hasta alcanzar su destino En vez de enviarse directamente a la dirección de destino, los paquetes viajan de una máquina a otra hasta alcanzar su destino routers Estas máquinas se denominan routers –Ordenadores que interconectan las diferentes subredes y que son capaces de encaminar los paquetes de una a otra algoritmos de encaminamiento –Para asegurar que siguen la mejor ruta disponible, utilizan programas llamados algoritmos de encaminamiento ( routing algorithms )

10 Introducción al desarrollo de aplicaciones web César Fernández Acebal 10 EjemploEjemplo La heroica ciudad dormía la siesta. Origen Destino Nº de bytes 144 Nº de paquetes 4 Posición 1 Datos La heroica Origen Destino Nº de bytes 144 Nº de paquetes 4 Posición 2 Datos ciudad do Origen Destino Nº de bytes 144 Nº de paquetes 4 Posición 3 Datos rmía la si Origen Destino Nº de bytes 139 Nº de paquetes 4 Posición 4 Datos esta. El mensaje original a transmitir se divide en cuatro paquetes, con cierta información de control adicional que permita su reconstrucción en el destino.

11 Introducción al desarrollo de aplicaciones web César Fernández Acebal 11 Ventajas de la conmutación de paquetes Al no tener un circuito dedicado, puede hacer uso en cada momento de cualquiera de las rutas disponibles Al no tener un circuito dedicado, puede hacer uso en cada momento de cualquiera de las rutas disponibles Hace uso de casi la totalidad del ancho de banda disponible –Casi la totalidad porque es necesario incluir información de control, que no formaría parte del mensaje en sí a transmitir Si algunas líneas estuvieran caídas o demasiado ocupadas, los paquetes se envían por otra de las disponibles

12 Introducción al desarrollo de aplicaciones web César Fernández Acebal 12 TCP/IPTCP/IP Si bien la conmutación de paquetes supuso un gran avance en la capacidad de las redes de comunicaciones, era necesario implementar el modo de llevarla a cabo Si bien la conmutación de paquetes supuso un gran avance en la capacidad de las redes de comunicaciones, era necesario implementar el modo de llevarla a cabo Eso es de lo que se encargan los protocolos TCP/IP –Transmission Control Protocol (TCP) –Internet Protocol (IP) Un protocolo es un conjunto de reglas para formatear, ordenar y comprimir mensajes, comprobar errores, etc. –Pueden ser implementados por hardware o por software

13 Introducción al desarrollo de aplicaciones web César Fernández Acebal 13 Cuatro capas La familia de protocolos TCP/IP se divide en cuatro capas: La familia de protocolos TCP/IP se divide en cuatro capas: La capa de red es la de más bajo nivel –Representa el medio físico encargado de enviar en última instancia los 0 y 1 que componen cada mensaje –Diversas tecnologías: Ethernet, ATM… La capa de Internet es donde se sitúa el protocolo IP –Esquema de direcciones, encaminamiento de los mensajes… En la capa de transporte está TCP –Envía acuses de recibo, reagrupa el mensaje en destino, vuelve a mandar los paquetes perdidos o defectuosos… Por último, en la capa de aplicación están los programas que hacen uso de los servicios proporcionados por las capas inferiores –HTTP (HyperText Transfer Protocol), FTP (File Transfer Protocol), SMTP (Simple Mail Transfer Protocol)…

14 Introducción al desarrollo de aplicaciones web César Fernández Acebal 14 Arquitectura de TCP/IP

15 Introducción al desarrollo de aplicaciones web César Fernández Acebal 15 Encaminamiento de paquetes con TCP/IP

16 Introducción al desarrollo de aplicaciones web César Fernández Acebal 16 Direcciones IP Cada ordenador conectado a Internet debe tener una dirección para poder recibir los paquetes TCP Cada ordenador conectado a Internet debe tener una dirección para poder recibir los paquetes TCP Ésta puede ser: –Estática Fija, siempre la misma –Dinámica Por ejemplo, cada vez que nos conectamos a Internet con un módem telefónico, nuestro proveedor de Internet (ISP, Internet Service Provider) nos asigna una dirección temporal Las direcciones IP son números de 32 bits separados en cuatro partes (por ejemplo, ) Las direcciones IP son números de 32 bits separados en cuatro partes (por ejemplo, ) Cada uno va de 0 a 255; esto nos da un total de 2 32 direcciones (algo más de cuatro mil millones)

17 Introducción al desarrollo de aplicaciones web César Fernández Acebal 17 IPv6IPv6 El problema es que con cada vez más y más dispositivos conectados, este esquema de direcciones está cercano a quedarse pequeño El problema es que con cada vez más y más dispositivos conectados, este esquema de direcciones está cercano a quedarse pequeño Por ello, se está desarrollando una nueva versión, denominada IPv6 para sustituir a la actual (IPv4), que con 128 bits podrá tener 3,4 × direcciones Por ello, se está desarrollando una nueva versión, denominada IPv6 para sustituir a la actual (IPv4), que con 128 bits podrá tener 3,4 × direcciones Además, mejora otras deficiencias de IPv4 Además, mejora otras deficiencias de IPv4

18 Introducción al desarrollo de aplicaciones web César Fernández Acebal 18 Nombres de dominio y URL Para no tener que recordar direcciones IP tal cual, éstas pueden ser representadas mediante nombres de dominio (por ejemplo, Para no tener que recordar direcciones IP tal cual, éstas pueden ser representadas mediante nombres de dominio (por ejemplo, El sistema de nombres de domino (DNS) permite que éstas se resuelvan a direcciones IP El sistema de nombres de domino (DNS) permite que éstas se resuelvan a direcciones IP ping Ejemplo: ping Los URL (Uniform Resource Locator) son las direcciones que escribimos en el navegador Los URL (Uniform Resource Locator) son las direcciones que escribimos en el navegador Como

19 Introducción al desarrollo de aplicaciones web César Fernández Acebal 19 Computación Cliente/Servidor En este modelo de computación distribuida, un cliente solicita una acción a un servidor, que le devuelve los resultados En este modelo de computación distribuida, un cliente solicita una acción a un servidor, que le devuelve los resultados ligeros clientes pesados Puede haber diversos tipos de clientes, desde los más ligeros (como un navegador Web, que únicamente es capaz de mostrar documentos HTML) hasta clientes pesados que también realizan procesamiento Surgen como respuesta a los mainframes de los 60 y 70 (con 128 KB de RAM y y discos duros de 10 MB) Surgen como respuesta a los mainframes de los 60 y 70 (con 128 KB de RAM y y discos duros de 10 MB) ordenadores personales Despega este modelo con el advenimiento de los ordenadores personales Toda Internet es una inmensa red cliente/servidor Toda Internet es una inmensa red cliente/servidor

20 Introducción al desarrollo de aplicaciones web César Fernández Acebal 20 Esquema Cliente/Servidor

21 Introducción a la Web Ahora, veremos los principios básicos de la World Wide Web (WWW o Web, a secas): lenguajes, protocolos, servidores y clientes, etcétera.

22 Introducción al desarrollo de aplicaciones web César Fernández Acebal 22 Internet Web Internet permite a cualquier ordenador del mundo compartir datos con otro ordenador remoto Internet permite a cualquier ordenador del mundo compartir datos con otro ordenador remoto Un programa cliente en un ordenador accede a un programa servidor en otro ordenador remoto La Web es el sistema de hipertexto que funciona sobre Internet como uno de sus servicios La Web es el sistema de hipertexto que funciona sobre Internet como uno de sus servicios navegador servidor web En este caso, el programa cliente es nuestro navegador, y el servidor el programa que hace de servidor web que está ejecutándose en el ordenador remoto y que se encarga de entregar el documento solicitado a nuestro navegador

23 Introducción al desarrollo de aplicaciones web César Fernández Acebal 23 Nacimiento de la World Wide Web En 1989, Tim Berners-Lee, en el laboratorio europeo de partículas (CERN), en Suiza, crea un lenguaje de etiquetas para representar y enlazar documentos En 1989, Tim Berners-Lee, en el laboratorio europeo de partículas (CERN), en Suiza, crea un lenguaje de etiquetas para representar y enlazar documentos HTML HyperText Markup Language –Lenguaje de Marcado de Hipertexto Berners-Lee creó las versiones iniciales de: Berners-Lee creó las versiones iniciales de: HTMLHTTPservidor webnavegador HTML, HTTP, un servidor web y un navegador Los cuatro componentes esenciales de la Web Tim Berners-Lee

24 Introducción al desarrollo de aplicaciones web César Fernández Acebal 24 Esquema general Cliente/Servidor Servidor Red Petición Respuesta Cliente

25 Introducción al desarrollo de aplicaciones web César Fernández Acebal 25 Visión general de la Web Internet index.html enlace El usuario teclea en su navegador

26 Introducción al desarrollo de aplicaciones web César Fernández Acebal 26 Visión general de la Web 1. El usuario solicita un documento tecleando su dirección en el navegador: Es lo que se denomina un URL (localizador uniforme de recursos) 2. El cliente busca en el DNS cuál es la IP de Cada ordenador en Internet está identificado por una dirección única denominada IP El DNS traduce de nombres lógicos a direcciones físicas 3. Navegador y servidor web comienzan un diálogo a través del protocolo HTTP (protocolo de transferencia de hipertexto) 1.GET /HTTP/1.0 2.El servidor, si todo es correcto, devuelve el documento solicitado más información adicional

27 Introducción al desarrollo de aplicaciones web César Fernández Acebal 27 Visión general de la Web 4.El navegador mira el tipo de documento devuelto (MIME) 5.Si es text/html es un documento HTML, lo visualiza el propio navegador 6.Si es otro tipo de documento se ejecutará el programa que tenga asociado, o nos preguntará si queremos guardar el documento en nuestro ordenador Nota: estos tipos MIME los podemos configurar en nuestro navegador

28 Introducción al desarrollo de aplicaciones web César Fernández Acebal 28 Funcionamiento de la Web Tecleamos una dirección en el navegador (por ejemplo, Éste envía una petición al servidor Web Quien devuelve la página solicitada (en este caso, la index.html del directorio raíz) Y el navegador se encarga de interpretar el código HTML y mostrar el resultado HTTP

29 Introducción al desarrollo de aplicaciones web César Fernández Acebal 29 Funcionamiento de la Web Un servidor web es un ordenador en Internet que sirve páginas web a petición Un servidor web es un ordenador en Internet que sirve páginas web a petición Para ello, debe tener un programa ejecutándose que haga de servidor web: Apache, IIS, etcétera El usuario accede a la web a través de un navegador ( browser ) El usuario accede a la web a través de un navegador ( browser ) Se encarga de solicitar las páginas web al servidor y de mostrarlas

30 Introducción al desarrollo de aplicaciones web César Fernández Acebal 30 HTMLHTML Es el lenguaje de creación de páginas Web Es el lenguaje de creación de páginas Web Al menos, de las páginas estáticas Era imprescindible que la misma información se pudiese ver en diferentes plataformas Era imprescindible que la misma información se pudiese ver en diferentes plataformas Por tanto, Berners-Lee diseñó un lenguaje de estructuración de documentos, no de presentación (ésta se dejaba al programa cliente) Por tanto, Berners-Lee diseñó un lenguaje de estructuración de documentos, no de presentación (ésta se dejaba al programa cliente)

31 Introducción al desarrollo de aplicaciones web César Fernández Acebal 31 HTML es un lenguaje Como tal, tiene unas reglas que deben ser cumplidas, esto es, una sintaxis, una gramática... igual que el español o cualquier otro lenguaje informático Como tal, tiene unas reglas que deben ser cumplidas, esto es, una sintaxis, una gramática... igual que el español o cualquier otro lenguaje informático Es además un lenguaje informático, para ser procesado por ordenadores; pero no es un lenguaje de programación Es además un lenguaje informático, para ser procesado por ordenadores; pero no es un lenguaje de programación

32 Introducción al desarrollo de aplicaciones web César Fernández Acebal 32 ¿Por qué de marcado ? ¿Qué vemos de un vistazo en el siguiente texto? ¿Qué vemos de un vistazo en el siguiente texto? Acme Computer Corp. Acme Computer Corporation is a technology-based company that seeks to offer its customers the latest in technological innovation. Our products are created using the latest breakthroughs in computers and are designed by a team of top- notch experts. We are based in Acmetown, USA, and have offices in most major cities around the world. Our goal is to have a global approach to the future of computing. Have a look at our product catalog for some examples of our innovative approach. Que tiene un título y dos párrafos Que tiene un título y dos párrafos Pero un ordenador sólo vería un montón de caracteres Pero un ordenador sólo vería un montón de caracteres Necesitamos un modo de indicarle la estructura del documento

33 Introducción al desarrollo de aplicaciones web César Fernández Acebal 33 HTML, lenguaje de hipertexto Por hipertexto designamos al texto al que se le añade una propiedad: determinadas porciones de texto pueden ser enlazadas a otros documentos Por hipertexto designamos al texto al que se le añade una propiedad: determinadas porciones de texto pueden ser enlazadas a otros documentos De ahí surge el concepto de navegación: surcamos el Web yendo de unos enlaces a otros De ahí surge el concepto de navegación: surcamos el Web yendo de unos enlaces a otros El hipertexto debe ser utilizado en los sitios web para facilitar al usuario la labor de búsqueda de la información El hipertexto debe ser utilizado en los sitios web para facilitar al usuario la labor de búsqueda de la información

34 Introducción al desarrollo de aplicaciones web César Fernández Acebal 34 ¿Qué necesitamos para crear un documento HTML? Un editor de texto Un editor de texto ¡Ojo!, no un procesador de textos tipo el Word, por ejemplo Debe ser texto plano, sin formato (p. ej., con el Bloc de Notas) Le daremos la extensión.html o.htm, y un nombre sin espacios ni caracteres especiales Le daremos la extensión.html o.htm, y un nombre sin espacios ni caracteres especiales Nota: ninguna de las dos características son obligatorias, pero nos ahorrarán problemas

35 Introducción al desarrollo de aplicaciones web César Fernández Acebal 35 ¿Y para verlo? Un programa cliente que entienda lenguaje HTML (que pueda visualizar de alguna manera documentos HTML) Un programa cliente que entienda lenguaje HTML (que pueda visualizar de alguna manera documentos HTML) Técnicamente, recibe el nombre de HTML User Agent Técnicamente, recibe el nombre de HTML User Agent Un ejemplo de agente de usuario son los navegadores (literalmente, hojeadores ) web ( web browsers ) Un ejemplo de agente de usuario son los navegadores (literalmente, hojeadores ) web ( web browsers ) El navegador es quien se encarga de la presentación del documento (el estándar no especifica cómo debe visualizarse cada elemento) El navegador es quien se encarga de la presentación del documento (el estándar no especifica cómo debe visualizarse cada elemento)

36 Introducción al desarrollo de aplicaciones web César Fernández Acebal 36 Especificación de HTML La especificación del lenguaje HTML y de la mayoría de tecnologías relacionadas con el Web está definida por el World Wide Web Consortium (W3C) La especificación del lenguaje HTML y de la mayoría de tecnologías relacionadas con el Web está definida por el World Wide Web Consortium (W3C) Nota: Ahora, HTML ha dado lugar a una variación del mismo denominada XHTML Nota: Ahora, HTML ha dado lugar a una variación del mismo denominada XHTML

37 Introducción al desarrollo de aplicaciones web César Fernández Acebal 37 El World Wide Web Consortium (W3C) Consorcio formado por cerca de 500 organizaciones que dicta los estándares de la Web Consorcio formado por cerca de 500 organizaciones que dicta los estándares de la Web HTML, CSS, XML, XHTML, DOM… Objetivo: promover la evolución de la Web garantizando que las distintas tecnologías funcionen bien conjuntamente Objetivo: promover la evolución de la Web garantizando que las distintas tecnologías funcionen bien conjuntamente Tim Berners-Lee Dirigido por Tim Berners-Lee, el inventor de la Web, en 1989 Dirigido por Tim Berners-Lee, el inventor de la Web, en 1989Tim Berners-LeeTim Berners-Lee Premio Príncipe de Asturias de Investigación Científica y Técnica 2002

38 Introducción al desarrollo de aplicaciones web César Fernández Acebal 38 La Oficina Española del W3C En octubre de 2003 se presentó la Oficina Española del W3C, sita en Asturias En octubre de 2003 se presentó la Oficina Española del W3C, sita en Asturias Concretamente, albergada en las instalaciones de la Fundación CTIC, en el Parque Científico Tecnológico de Gijón Responsables de la Oficina: –José Manuel Alonso Responsable de la oficina –Jesús García Coordinador Experto en accesibilidad Acto de presentación de la Oficina Española, en el Hotel de la Reconquista (Oviedo)

39 Introducción al desarrollo de aplicaciones web César Fernández Acebal 39 Ejemplo de documento HTML Introducción a HTML Mi primera página Web Éste es el equivalente al típico ¡Hola, mundo! pero en HTML (cuya especificación puede encontrarse en el sitio Web del W3C ). holaMundo.html

40 Introducción al desarrollo de aplicaciones web César Fernández Acebal 40 HTTPHTTP HTTP (HyperText Transform Protocol) es el protocolo usado para transferir páginas web HTTP (HyperText Transform Protocol) es el protocolo usado para transferir páginas web Es el modo en que un navegador se comunica con un servidor Web (Apache, Internet Information Server…) Es un protocolo sin estado Es un protocolo sin estado La sesión termina en cuanto se devuelve el objeto solicitado –Incluso, si una página contiene otros objetos (imágenes, frames, etc.) cada uno de ellos inicia una nueva petición HTTP

41 Introducción al desarrollo de aplicaciones web César Fernández Acebal 41 Pero… ¿y TCP/IP? ¿No era TCP/IP el conjunto de protocolos sobre los que sustenta Internet? ¿Qué es eso de HTTP? ¿No era TCP/IP el conjunto de protocolos sobre los que sustenta Internet? ¿Qué es eso de HTTP? La comunicación entre el navegador y el servidor web se realiza mediante HTTP La transmisión efectiva de información la controla TCP/IP TCP/IP HTTP

42 Introducción al desarrollo de aplicaciones web César Fernández Acebal 42 Ejemplo de mensaje HTTP GET / HTTP/1.0 > > < HTTP/ OK < Date: Wed, 18 Sep :18:59 GMT < Server: Apache/1.0.0 < Content-type: text/html < Content-length: 1579 < Last-modified: Mon, 22 Jul :23:34 GMT < < HTML document Respuesta Petición

43 Introducción al desarrollo de aplicaciones web César Fernández Acebal 43 URLURL URI: Uniform Resource Identifier URI: Uniform Resource Identifier URL: Uniform Resource Locator Un URL es la dirección única de todo documento en la Web Un URL es la dirección única de todo documento en la Webhttp://www.eutio.uniovi.es/

44 Introducción al desarrollo de aplicaciones web César Fernández Acebal 44 Sintaxis de un URL Ejemplos: Ejemplos:http://www.princast.es/http:// /http://www.cfacebal.com/http://www.cfacebal.com/index.htmlhttp://web.uniovi.es/Vicerrectorados/Extension/http://localhost:8080/http://petra.euitio.uniovi.es/ protocolo://dirección[:puerto]/directorio/fichero

45 Introducción al desarrollo de aplicaciones web César Fernández Acebal 45 ProtocoloProtocolo Un protocolo define el modo en que se comunican dos ordenadores para llevar a cabo alguna tarea Un protocolo define el modo en que se comunican dos ordenadores para llevar a cabo alguna tarea Protocolo de la Web: Protocolo de la Web: HTTP (HyperText Transfer Protocol) Especifica cómo tiene lugar el diálogo entre el navegador y el servidor para conseguir el fichero especificado TCP No se ocupa del transporte en sí: TCP Cada vez que tecleamos una dirección o pulsamos un enlace el navegador se comunica vía HTTP con el servidor web indicado Cada vez que tecleamos una dirección o pulsamos un enlace el navegador se comunica vía HTTP con el servidor web indicado

46 Introducción al desarrollo de aplicaciones web César Fernández Acebal 46 Ejemplos de protocolos file Permite acceder a un fichero en el sistema de ficheros local ftp File Transfer Protocol http Páginas web

47 Introducción al desarrollo de aplicaciones web César Fernández Acebal 47 Dirección del sitio Suele ser un nombre simbólico: nombre de dominio Suele ser un nombre simbólico: nombre de dominio especifica una máquina llamada www en el dominio uniovi.es El nombre de máquina puede ser cualquiera –www no es más que un convenio para especificar aquellas máquinas que son servidores Web –como ftp suele designar a los servidores de FTP –incluso aunque muchas veces se trate de la misma máquina

48 Introducción al desarrollo de aplicaciones web César Fernández Acebal 48 Dirección del sitio También podría ser directamente la dirección IP También podría ser directamente la dirección IP Los nombres de dominio no distinguen entre mayúsculas y minúsculas Los nombres de dominio no distinguen entre mayúsculas y minúsculas

49 Introducción al desarrollo de aplicaciones web César Fernández Acebal 49 DirectorioDirectorio Hay que indicar la ruta hasta el fichero deseado Hay que indicar la ruta hasta el fichero deseado Como mínimo, debe ir la barra (/) Como mínimo, debe ir la barra (/) / Si no la ponemos, la pone el navegador por nosotros Si no la ponemos, la pone el navegador por nosotros...pero en los enlaces en HTML sí debe aparecer También se puede indicar un subdirectorio: También se puede indicar un subdirectorio:http://www.uniovi.es/Vicerrectorados/Postgrado_TitulosPropios/doctorado/ Siempre se usa la barra /, no \ (incluso aunque el servidor Web sea una máquina Windows: está definido por el estándar URI, no depende del SO) La ruta sí puede diferenciar entre mayúsculas y minúsculas (si el servidor web es, por ejemplo, una máquina Unix) La ruta sí puede diferenciar entre mayúsculas y minúsculas (si el servidor web es, por ejemplo, una máquina Unix)

50 Introducción al desarrollo de aplicaciones web César Fernández Acebal 50 Nombre del fichero Depende del sistema operativo del servidor web Depende del sistema operativo del servidor web Las páginas Web generalmente tienen como extensión.html o.htm Las páginas Web generalmente tienen como extensión.html o.htm Las extensiones son importantes para que el navegador sepa cómo tratar un fichero Las extensiones son importantes para que el navegador sepa cómo tratar un fichero un.html, lo interpreta y lo muestra un.jpg, trata de mostrar la imagen un.doc, abre el Word si lo tenemos instalado etcétera

51 Introducción al desarrollo de aplicaciones web César Fernández Acebal 51 Nombre del fichero Si no se especifica, el servidor busca un fichero con un nombre determinado en el directorio especificado Si no se especifica, el servidor busca un fichero con un nombre determinado en el directorio especificado index.htmlindex.htm Normalmente, el index.html o el index.htm Se puede configurar el el programa que utilicemos como servidor web (Apache, IIS...)

52 Introducción al desarrollo de aplicaciones web César Fernández Acebal 52 PuertoPuerto Por omisión, una petición HTTP se dirige al puerto 80 Por omisión, una petición HTTP se dirige al puerto 80 Por eso casi nunca la especificamos Pero se podría configurar el servidor web para que escuchase peticiones en otro puerto Pero se podría configurar el servidor web para que escuchase peticiones en otro puerto En ese caso, hay que indicarlo explícitamente: En ese caso, hay que indicarlo explícitamente:

53 Introducción al desarrollo de aplicaciones web César Fernández Acebal 53 ¿Qué es un servidor Web? Un programa que atiende las peticiones HTTP llegadas a un puerto determinado de la máquina Un programa que atiende las peticiones HTTP llegadas a un puerto determinado de la máquina También se denomina así, por extensión, a la máquina que cuenta con uno de tales programas Ejemplos de servidores web: Ejemplos de servidores web: Apache –Apache HTTP Server Project Internet Information Server (IIS)

54 Introducción al desarrollo de aplicaciones web César Fernández Acebal 54 Descarga de Apache La versión actual es la La versión actual es la Dirección de descarga: Dirección de descarga: fuentes programa de instalación Win32 Binary Ahí podemos obtener tanto los fuentes para Unix o Windows (que habrá que compilar) como un programa de instalación para Windows (Win32 Binary)

55 Introducción al desarrollo de aplicaciones web César Fernández Acebal 55 Instalación de Apache (Windows) Opciones de instalación: Opciones de instalación: Como servicio en el puerto 80 Para ser arrancado manualmente (puerto 8080) –No da conflictos con otro servidor Web que ya pudiéramos tener instalado en el puerto 80 –No requiere ningún privilegio de administración de Windows Por no ser instalado como servicio Por estar en un puerto superior al 1024 Dominio, dirección del servidor y correo del administrador Directorio de instalación –C:/Apache

56 Introducción al desarrollo de aplicaciones web César Fernández Acebal 56 EjecuciónEjecución Una vez finalizada la instalación, hay que ejecutar Apache manualmente Una vez finalizada la instalación, hay que ejecutar Apache manualmente c:/Apache/Apache2/bin/Apache.exe Ahora, ya podemos comenzar a solicitarle páginas Ahora, ya podemos comenzar a solicitarle páginas Nuestra máquina ya puede actuar como servidor web –Aunque en local; si quisiéramos que funcionase a través de la red, habría que crear un usuario para Apache y darle los permisos necesarios Para probar si funciona, tecleamos en el navegador: o Deberá aparecer la página siguiente:

57 Introducción al desarrollo de aplicaciones web César Fernández Acebal 57 Página de prueba de la instalación

58 Introducción al desarrollo de aplicaciones web César Fernández Acebal 58 ¿Qué hace un servidor Web cuando recibe una solicitud? Si el último elemento del URL es un fichero: Si el último elemento del URL es un fichero: DocumentRoot Si se incluye una ruta de directorios, lo buscará a partir del indicado en la directiva DocumentRoot htdocs –Por omisión, es el directorio htdocs dentro del directorio de instalación de Apache

59 Introducción al desarrollo de aplicaciones web César Fernández Acebal 59 ¿Qué hace un servidor Web cuando recibe una solicitud? En el caso de que el último elemento del URL sea un directorio, sin especificar el fichero: En el caso de que el último elemento del URL sea un directorio, sin especificar el fichero: index.html DirectoryIndex Si en dicho directorio existe un fichero index.html (o lo que se especifique en DirectoryIndex ), se devolverá éste Options Indexes Si no existe dicho fichero, y siempre y cuando esté habilitada la opción Options Indexes ) se hará un listado del directorio

60 Introducción al desarrollo de aplicaciones web César Fernández Acebal 60 ÍndiceÍndice Introducción a Internet y el Web Introducción a Internet y el Web HTTP, HTML, URL, servidores Web… Introducción a las páginas dinámicas Introducción a las páginas dinámicas CGI, ASP, JSP y Servlets, etc. Mantenimiento de la sesión del usuario Mantenimiento de la sesión del usuario Servidores de aplicaciones Servidores de aplicaciones

61 Introducción al desarrollo de aplicaciones web César Fernández Acebal 61 Páginas estáticas Al principio, el Web estaba poblado únicamente por páginas estáticas Al principio, el Web estaba poblado únicamente por páginas estáticas El servidor Web simplemente localizaba el documento solicitado en el URL y se lo entregaba al cliente Este enfoque puede ser perfectamente válido para muchos sitios Este enfoque puede ser perfectamente válido para muchos sitios Siempre y cuando no requieran actualizaciones continuas, ya que hay que eso implica o bien modificar, a mano, las páginas existentes, o bien crear una nueva Pero no permitiría, por ejemplo, crear un sitio de comercio electrónico donde se pueda comprar, o el de un banco Pero no permitiría, por ejemplo, crear un sitio de comercio electrónico donde se pueda comprar, o el de un banco Es necesario acceder a datos en el servidor y crear una página a petición

62 Introducción al desarrollo de aplicaciones web César Fernández Acebal 62 Funcionamiento de las páginas estáticas

63 Introducción al desarrollo de aplicaciones web César Fernández Acebal 63 Funcionamiento de las páginas dinámicas

64 Introducción al desarrollo de aplicaciones web César Fernández Acebal 64 Modo de funcionamiento El esquema de funcionamiento de las páginas dinámicas es siempre similar independientemente de en qué se hayan desarrollado éstas El esquema de funcionamiento de las páginas dinámicas es siempre similar independientemente de en qué se hayan desarrollado éstas CGI, ASP, Servlets/JSP… El servidor Web detecta una petición de una página dinámica y se la pasa al programa necesario El servidor Web detecta una petición de una página dinámica y se la pasa al programa necesario Podría ser una extensión del servidor O bien un programa completamente independiente Éste programa es quien sabe cómo interpretar el código de la página para devolver el HTML apropiado Éste programa es quien sabe cómo interpretar el código de la página para devolver el HTML apropiado

65 CGICGI CGI fue la primera tecnología que permitió crear páginas dinámicas, que realizaban algún tipo de procesamiento en el lado del servidor.

66 Introducción al desarrollo de aplicaciones web César Fernández Acebal 66 CGI: Common Gateway Interface Es un estándar que permite el intercambio de información entre servidores Web y programas externos Es un estándar que permite el intercambio de información entre servidores Web y programas externos Así, mientras que un documento HTML es estático (un fichero de texto que no cambia), un programa CGI permite mostrar información dinámica, al ejecutarse Así, mientras que un documento HTML es estático (un fichero de texto que no cambia), un programa CGI permite mostrar información dinámica, al ejecutarse Por ejemplo, puede hacer una consulta a una base de datos ubicada en el servidor y mostrar los resultados en HTML

67 Introducción al desarrollo de aplicaciones web César Fernández Acebal 67 IntroducciónIntroducción El usuario, por ejemplo, rellena un formulario y pulsa el botón de enviar HTTP Los datos del formulario son enviados vía HTTP El servidor Web invoca al programa CGI pasándole los parámetros recibidos /cgi-bin/buscar.cgi?texto=web standards Y éste devuelve el resultado al servidor por medio de la salida estándar

68 Introducción al desarrollo de aplicaciones web César Fernández Acebal 68 Ejemplo: Hola, mundo #!C:\Perl\bin\perl.exe print "Content-type: text/html\n\n"; print " \n \n El Hola, mundo en CGI \n \n \n"; print " ¡Hola, mundo \n"; print " \n ";

69 Introducción al desarrollo de aplicaciones web César Fernández Acebal 69 ¿Cómo obtiene el programa los datos necesarios? Depende del método HTTP por el que se envíen Depende del método HTTP por el que se envíenGET –Los datos viajan codificados en el propio URLPOST –Los datos viajan encapsulados en el propio mensaje HTTP Hay dos formas posibles en que el servidor Web puede pasarle los datos al programa CGI: Hay dos formas posibles en que el servidor Web puede pasarle los datos al programa CGI: variables de entorno Mediante las variables de entorno entrada estándar Mediante la entrada estándar ( stdin )

70 Introducción al desarrollo de aplicaciones web César Fernández Acebal 70 Variables de entorno La tabla siguiente muestra alguna de las variables de entorno: La tabla siguiente muestra alguna de las variables de entorno: (Puede verse una lista completa en Variable Descripción SERVER_NAME El nombre del servidor o su dirección IP QUERY_STRING La información que sigue al ? en el URL que referencia a este programa CONTENT_LENGTH Para consultas que llevan asociada información (por ejemplo, las hechas mediante POST), el tamaño en bytes de dicha respuesta PATH_INFO … …

71 Introducción al desarrollo de aplicaciones web César Fernández Acebal 71 Acceder a las variables de entorno La forma de acceder al contenido de dichas variables desde el programa CGI varía dependiendo del lenguaje en que haya sido escrito La forma de acceder al contenido de dichas variables desde el programa CGI varía dependiendo del lenguaje en que haya sido escrito SERVER_NAME Por ejemplo, a continuación se muestra cómo acceder al valor de la variable SERVER_NAME en C y en Perl: C getenv("SERVER_NAME") Perl $ENV{'SERVER_NAME'}

72 Introducción al desarrollo de aplicaciones web César Fernández Acebal 72 EjemploEjemplo El siguiente programa CGI en Perl muestra el valor de todas las variables de entorno: El siguiente programa CGI en Perl muestra el valor de todas las variables de entorno: #!/usr/bin/perl print "Content-type: text/html\n\n"; foreach $key (keys %ENV) { print "$key --> $ENV{$key} "; }

73 Configuración de Apache para CGI Antes, es necesario saber qué debemos hacer en el fichero de configuración de Apache ( httpd.conf ) para permitir la ejecución de programas CGI

74 Introducción al desarrollo de aplicaciones web César Fernández Acebal 74 Directiva ScriptAlias Aunque hay otras formas de hacerlo en Apache, por motivos de seguridad suele hacerse mediante la directiva ScriptAlias Aunque hay otras formas de hacerlo en Apache, por motivos de seguridad suele hacerse mediante la directiva ScriptAlias Definiendo un único directorio para todos los programas ( scripts ) CGI ScriptAlias /cgi-bin/ "C:/Apache/Apache2/cgi-bin/"

75 Introducción al desarrollo de aplicaciones web César Fernández Acebal 75 Intérprete de Perl Además, claro está, necesitamos tener un intérprete de Perl instalado en nuestra máquina Además, claro está, necesitamos tener un intérprete de Perl instalado en nuestra máquina Podemos obtener uno para Windows en: –http://www.activestate.com/http://www.activestate.com/

76 Introducción al desarrollo de aplicaciones web César Fernández Acebal 76 Entrada estándar El contenido de un formulario enviado mediante el método POST está disponible como un flujo de caracteres en la entrada estándar El contenido de un formulario enviado mediante el método POST está disponible como un flujo de caracteres en la entrada estándar CONTENT_LENGTH En ese caso, la variable de entorno CONTENT_LENGTH indica el número total de bytes disponibles El programa puede así obtener esa información como si estuviese leyendo de un fichero o del teclado El programa puede así obtener esa información como si estuviese leyendo de un fichero o del teclado Los datos del formulario se codifican en un determinado formato, muy simple Los datos del formulario se codifican en un determinado formato, muy simple

77 Introducción al desarrollo de aplicaciones web César Fernández Acebal 77 Formato de los datos Consiste en pares nombre=valor separados por & Consiste en pares nombre=valor separados por & Los caracteres especiales, como espacios en blanco, = y & se convierten a su valor hexadecimal Los caracteres especiales, como espacios en blanco, = y & se convierten a su valor hexadecimal La cadena de datos completa sería similar a ésta: La cadena de datos completa sería similar a ésta: Hay bibliotecas de funciones que dividen dicha cadena en partes, ahorrándonos así la labor de procesamiento Hay bibliotecas de funciones que dividen dicha cadena en partes, ahorrándonos así la labor de procesamiento name=Rich%20Bowen&city=Lexington&state=KY

78 Introducción al desarrollo de aplicaciones web César Fernández Acebal 78 Entrada estándar. Ejemplo en Perl #!/usr/local/bin/perl #Script 'example1-b.cgi # print "Content-type: text/html","\n\n"; if ($ENV{'REQUEST_METHOD'} eq "POST && $bytes=$ENV{'CONTENT_LENGTH'}) { read(STDIN,$input,$bytes); print "I read the following data: "; print $input; } else { print "Please give me a POST request with some data \n"; } exit(0);

79 Introducción al desarrollo de aplicaciones web César Fernández Acebal 79 Entrada estándar. Ejemplo en C El mismo programa que antes, ahora en C: El mismo programa que antes, ahora en C: int main(int argc, char ** argv) { char *type,*length,*input; int bytes; printf("Content-type: text/html"); printf("\n\n"); if(type=getenv("REQUEST_METHOD") && length=getenv("CONTENT_LENGTH") ) { bytes=atoi(length); input=malloc(length+1); read(stdin,input,bytes); printf("I read the following data: "; printf("%s",input); } else{ printf("Please give me a POST request with some data \n") } exit(0);

80 Introducción al desarrollo de aplicaciones web César Fernández Acebal 80 ¿Cómo llegan los datos cuando se usa GET en vez de POST? En ese caso, la cadena que venía antes por la entrada estándar ahora se añade al URL, tras un ? En ese caso, la cadena que venía antes por la entrada estándar ahora se añade al URL, tras un ? Luego, al llegar al servidor Web, éste mete esa información en la variable de entorno QUERY_STRING Luego, al llegar al servidor Web, éste mete esa información en la variable de entorno QUERY_STRING A través de la cual ya está disponible para el programa CGI, como veíamos antes

81 Introducción a ASP Una vez visto CGI, y como paso previo antes de ver la tecnología J2EE, que será el objetivo propiamente dicho del curso, echémosle un vistazo a esta otra tecnología de páginas dinámicas.

82 Introducción al desarrollo de aplicaciones web César Fernández Acebal 82 Requisitos de software Uno de los inconvenientes de ASP es que es dependiente de un servidor Web concreto Uno de los inconvenientes de ASP es que es dependiente de un servidor Web concreto Internet Information Server (IIS) El Internet Information Server (IIS) de Microsoft Dicho servidor ya viene de manera predeterminada en las últimas versiones de Windows Dicho servidor ya viene de manera predeterminada en las últimas versiones de Windows Aunque quizá no lo hayamos instalado junto con el Sistema Operativo –En ese caso, podríamos hacerlo a través de la opción de Añadir o quitar componentes de Windows del Panel de Control ¿Cómo probar si está instalado? –Teclear en el navegador

83 Introducción al desarrollo de aplicaciones web César Fernández Acebal 83 Sintaxis general ASP, al igual que las JSP de Java, se basa en mezclar instrucciones de programación en nuestras páginas HTML ASP, al igual que las JSP de Java, se basa en mezclar instrucciones de programación en nuestras páginas HTML El motor de ASP procesará dichas instrucciones dinámicamente y obviará el HTML El motor de ASP procesará dichas instrucciones dinámicamente y obviará el HTML Esto permite generar HTML dinámicamente, añadiendo lógica a nuestras páginas Para ello, hay que encerrar el código ASP entre los símbolos Para ello, hay que encerrar el código ASP entre los símbolos

84 Introducción al desarrollo de aplicaciones web César Fernández Acebal 84 Lenguaje de programación ¿Y en qué lenguaje se escriben esas instrucciones? ¿Y en qué lenguaje se escriben esas instrucciones? ASP permite el uso de dos lenguajes: ASP permite el uso de dos lenguajes: VBScript Visual Basic Script (VBScript) JavaScript JScript (como denomina Microsoft a su implementación de ECMAScript –que a su vez es el estándar de JavaScript–) Si no decimos nada, por omisión asume VBScript Si no decimos nada, por omisión asume VBScript Será el lenguaje que emplearemos en los ejemplos Será el lenguaje que emplearemos en los ejemplos Es el más frecuente cuando hablamos de páginas ASP

85 Introducción al desarrollo de aplicaciones web César Fernández Acebal 85 Ejemplo: mi primera página ASP Será –¡cómo no!– el archiconocido Hola, mundo Será –¡cómo no!– el archiconocido Hola, mundo La página siguiente escribe dinámicamente el mensaje La página siguiente escribe dinámicamente el mensaje Mi primera página ASP (mi primera página ASP)

86 Introducción al desarrollo de aplicaciones web César Fernández Acebal 86 ¿Cómo probamos la página? Si la abrimos directamente en el navegador, no veremos el mensaje Si la abrimos directamente en el navegador, no veremos el mensaje O veríamos el código fuente U obtendríamos un error (si los navegadores validasen el código HTML que reciben) Para que tenga sentido, es necesario que la interprete el motor de ASP Para que tenga sentido, es necesario que la interprete el motor de ASP Es decir, que reciba la petición el IIS

87 Introducción al desarrollo de aplicaciones web César Fernández Acebal 87 Administración del IIS Se instala en el directorio C:/Inetpub Se instala en el directorio C:/Inetpub Dentro de él, el directorio raíz del servidor está en wwwroot Dentro de él, el directorio raíz del servidor está en wwwroot Y ahí es donde deberemos poner nuestra página Y ahí es donde deberemos poner nuestra página directorios virtuales (También podríamos configurar directorios virtuales) Creamos una carpeta ejemplos y llamamos holaMundo.asp al fichero anterior Creamos una carpeta ejemplos y llamamos holaMundo.asp al fichero anterior La forma de ejecutarlo es: La forma de ejecutarlo es:

88 Introducción al desarrollo de aplicaciones web César Fernández Acebal 88 Otro ejemplo, más dinámico Naturalmente, para el viaje anterior no hacen falta tantas alforjas Naturalmente, para el viaje anterior no hacen falta tantas alforjas No tiene ningún sentido emplear una página dinámica para eso Hagamos ahora una página que muestre algo de información dinámica Hagamos ahora una página que muestre algo de información dinámica Por ejemplo, que diga Buenos días o Buenas tardes en función de la hora

89 Introducción al desarrollo de aplicaciones web César Fernández Acebal 89 Saludo personalizado: fecha y hora <% Crear algunas variables Dim fecha Dim hora Obtener la fecha y la hora fecha = Date() hora = Time() ' Imprimir un saludo en función de la hora If Hour(hora) >= 12 Then Response.Write "¡Buenas tardes!" Else If (Hour(hora) >= 20) Or (Hour(hora) < 6) Then Response.Write "¡Buenas noches!" Else Response.Write "¡Buenos días!" End If %> Hoy es y son las

90 Introducción al desarrollo de aplicaciones web César Fernández Acebal 90 Objetos predefinidos ASP tiene los siguientes objetos predefinidos: ASP tiene los siguientes objetos predefinidos:Application –Permite compartir información entre todos los usuarios de una aplicación (en esto se diferencia de Session )ASPErrorObjectContextRequest –Para obtener información de la petición HTTP (parámetros, cookies…)Response –Para enviar datos al cliente (escribir código HTML, redirigir a otra página, etc.)Server –Fundamentalmente, para crear objetos de componentes del servidorSession –Permite almacenar el estado de la sesión

91 Introducción al desarrollo de aplicaciones web César Fernández Acebal 91 Acceso a bases de datos Prácticamente cualquier aplicación Web va a necesitar acceder a una base de datos en el servidor Prácticamente cualquier aplicación Web va a necesitar acceder a una base de datos en el servidor

92 Introducción al desarrollo de aplicaciones web César Fernández Acebal 92 Aplicación de ejemplo Veremos una aplicación de ejemplo que simulará un sitio Web sobre cine, con información acerca de las películas: Veremos una aplicación de ejemplo que simulará un sitio Web sobre cine, con información acerca de las películas: Se podrá buscar una película por su título y listar todas las películas de un determinado director Además, de cada película se podrá ver información detallada: –Director, año de estreno, intérpretes, sinopsis –Y se podrá ver el cartel de la película (en pequeño y en grande)

93 Introducción al desarrollo de aplicaciones web César Fernández Acebal 93 Diseño de la base de datos Cada película tiene varios actores, y un actor puede participar en varias películas Cada película tiene varios actores, y un actor puede participar en varias películas IntérpretePelícula nn

94 Introducción al desarrollo de aplicaciones web César Fernández Acebal 94 Relación actor-película Una relación n a n no puede modelarse directamente en una base de datos relacional, sino que necesitamos una tabla intermedia: Una relación n a n no puede modelarse directamente en una base de datos relacional, sino que necesitamos una tabla intermedia: IntérpretePelícula nn Reparto 11

95 Introducción al desarrollo de aplicaciones web César Fernández Acebal 95 CartelCartel Para poder mostrar el cartel de cada película de forma automática, guardamos el nombre del fichero de imagen en la base de datos Para poder mostrar el cartel de cada película de forma automática, guardamos el nombre del fichero de imagen en la base de datos Y las guardamos todas en el mismo directorio del sitio Web, con ese mismo nombre

96 Introducción al desarrollo de aplicaciones web César Fernández Acebal 96 Creación de la base de datos Nos servirá Microsoft Access Nos servirá Microsoft Access Luego se podrá acceder a ella desde las páginas ASP independientemente del Sistema de Gestión de Bases de Datos utilizado (Access, Oracle, SQL Server…) Luego se podrá acceder a ella desde las páginas ASP independientemente del Sistema de Gestión de Bases de Datos utilizado (Access, Oracle, SQL Server…) La forma más flexible es hacerlo mediante ODBC La forma más flexible es hacerlo mediante ODBC Permite acceder de forma genérica a cualquier base de datos definida en el sistema No obstante, no se utilizará en el ejemplo No obstante, no se utilizará en el ejemplo (Por facilidad de depuración)

97 Introducción al desarrollo de aplicaciones web César Fernández Acebal 97 Creación del origen de datos ODBC Creamos un nuevo origen de datos del tipo Microsoft Access Driver Creamos un nuevo origen de datos del tipo Microsoft Access Driver

98 Introducción al desarrollo de aplicaciones web César Fernández Acebal 98 Configuración de ODBC Aparecerá esta pantalla, en la que asignamos un nombre al origen de datos y seleccionamos la ubicación de la base de datos: Aparecerá esta pantalla, en la que asignamos un nombre al origen de datos y seleccionamos la ubicación de la base de datos:

99 Introducción al desarrollo de aplicaciones web César Fernández Acebal 99 Seleccionar base de datos Tras pulsar el botón Seleccionar, buscamos la ubicación de la base de datos (el fichero.mdb donde hayamos creado la base de datos con Access) Tras pulsar el botón Seleccionar, buscamos la ubicación de la base de datos (el fichero.mdb donde hayamos creado la base de datos con Access)

100 Introducción al desarrollo de aplicaciones web César Fernández Acebal 100 Configuración de ODBC Éste deberá ser el aspecto de la ventana una vez configurado el nuevo origen de datos: Éste deberá ser el aspecto de la ventana una vez configurado el nuevo origen de datos: Aceptar Sólo falta pulsar Aceptar para que sea creado

101 Introducción al desarrollo de aplicaciones web César Fernández Acebal 101 Origen de datos creado Ahora ya está creado el origen de datos para nuestra base de datos de películas Ahora ya está creado el origen de datos para nuestra base de datos de películas

102 Introducción al desarrollo de aplicaciones web César Fernández Acebal 102 Creación de un directorio virtual

103 Introducción al desarrollo de aplicaciones web César Fernández Acebal 103 Estudio de la aplicación A continuación, examinemos el código fuente ASP de las páginas de la aplicación A continuación, examinemos el código fuente ASP de las páginas de la aplicación Iremos explicando diferentes aspectos de ASP sirviéndonos de la aplicación de ejemplo: Iremos explicando diferentes aspectos de ASP sirviéndonos de la aplicación de ejemplo: Acceso a datos Manejo de formularios Redirección de páginas Generación de HTML dinámico –(en función de determinadas condiciones) Etcétera

104 Introducción al desarrollo de aplicaciones web César Fernández Acebal 104 ÍndiceÍndice Introducción a Internet y el Web Introducción a Internet y el Web HTTP, HTML, URL, servidores Web… Introducción a las páginas dinámicas Introducción a las páginas dinámicas CGI, ASP, JSP y Servlets, etc. Mantenimiento de la sesión del usuario Mantenimiento de la sesión del usuario Servidores de aplicaciones Servidores de aplicaciones

105 Mantenimiento de la sesión Una de los grandes inconvenientes a solventar en las aplicaciones Web es cómo mantener la sesión del usuario. Veamos en qué consiste y qué alternativas existen para hacerlo.

106 Introducción al desarrollo de aplicaciones web César Fernández Acebal 106 HTTP, protocolo sin estado HTTP es un protocolo sin estado HTTP es un protocolo sin estado Esto significa que para el servidor Web cada petición de una página es única Esto significa que para el servidor Web cada petición de una página es única No tendría forma de saber, por ejemplo, que ese usuario acaba de añadir un producto a su carrito, o si ya se validó o no, en qué punto del proceso de compra se encuentra, etcétera Son necesarias alternativas software, por tanto, que permitan simular el estado Son necesarias alternativas software, por tanto, que permitan simular el estado

107 Introducción al desarrollo de aplicaciones web César Fernández Acebal 107 AlternativasAlternativas Aunque hay varias formas de hacerlo (dependiendo de si trabajamos en ASP, en J2EE…) la mayoría pasan por el uso de cookies Aunque hay varias formas de hacerlo (dependiendo de si trabajamos en ASP, en J2EE…) la mayoría pasan por el uso de cookies Algunas de las alternativas son: Algunas de las alternativas son: Session Usar el objeto Session (o similar) provisto por los entornos de programación como ASP o J2EE (Servlets, JSP...) Almacenar toda la información de la sesión, a mano, en una cookie (por ejemplo, mediante JavaScript) Una combinación de cookie (para guardar un ID de usuario) y bases de datos URL rewriting Etcétera

108 CookiesCookies Veamos una introducción a las cookies y algunos ejemplos en los que aprenderemos a manipularlas.

109 Introducción al desarrollo de aplicaciones web César Fernández Acebal 109 ¿Qué son las cookies? Las cookies son pequeñas porciones datos que son almacenados localmente por el navegador en forma de pequeños ficheros de texto Las cookies son pequeñas porciones datos que son almacenados localmente por el navegador en forma de pequeños ficheros de texto Cada vez que el cliente envía información al servidor, incluye en la petición HTTP las cookies que previamente haya guardado provenientes de ese servidor Cada vez que el cliente envía información al servidor, incluye en la petición HTTP las cookies que previamente haya guardado provenientes de ese servidor

110 Introducción al desarrollo de aplicaciones web César Fernández Acebal 110 Detalles de implementación Según la especificación, un agente de usuario (es decir, un navegador), debe permitir al menos: Según la especificación, un agente de usuario (es decir, un navegador), debe permitir al menos: 300 cookies Un total de 300 cookies 4 KBpor cookie Hasta 4 KB (4.096 bytes) por cookie 20 cookies de un servidor Al menos 20 cookies de un servidor dado El navegador se encarga automáticamente de eliminar aquéllas que hace más tiempo que no se utilizan cuando necesita guardar nuevas cookies El navegador se encarga automáticamente de eliminar aquéllas que hace más tiempo que no se utilizan cuando necesita guardar nuevas cookies

111 Introducción al desarrollo de aplicaciones web César Fernández Acebal 111 SintaxisSintaxis Cada cookie presenta la siguiente sintaxis general: Cada cookie presenta la siguiente sintaxis general: Lo único obligatorio es que tenga un nombre y un valor asociado; el resto de atributos son opcionales Lo único obligatorio es que tenga un nombre y un valor asociado; el resto de atributos son opcionales expires Aunque también se utiliza bastante el atributo expires nombre=valor; [expires=fecha; path=directorio; domain=nombreDeDominio; secure]

112 Introducción al desarrollo de aplicaciones web César Fernández Acebal 112 Descripción de los atributos Un par nombre = valor Un par nombre = valor IDUsuario = 49; Por ejemplo: IDUsuario = 49; expires expires Hasta cuándo será válida la cookie Wdy, DD-Mon-YYYY HH:MM:SS GMT –Debe ir en este formato: Wdy, DD-Mon-YYYY HH:MM:SS GMT –Si no se dice nada, la cookie será eliminada al terminar la sesión Es decir, al cerrar la ventana actual del navegador path path El conjunto de directorios del servidor para los que es válida esta cookie (por omisión, será el raíz /, es decir, todos)

113 Introducción al desarrollo de aplicaciones web César Fernández Acebal 113 Descripción de los atributos (2) domain domain El servidor o nombre de dominio para el que es válida la cookie Una cookie sólo puede ser leída y modificada desde el servidor y directorio especificados en la cookie cuando ésta fue creada secure secure https Es booleano; si está definido (si aparece el atributo) deberá haber una conexión segura ( https ) para que la cookie sea enviada

114 Uso de cookies en ASP Veamos de qué forma podemos establecer y leer cookies en ASP.

115 Introducción al desarrollo de aplicaciones web César Fernández Acebal 115 Response.CookiesResponse.Cookies Mediante la colección Cookies del objeto predefinido Response podemos establecer el valor de una cookie Mediante la colección Cookies del objeto predefinido Response podemos establecer el valor de una cookie Si la cookie especificada no existe, se creará Si existe, machacará el valor que tuviera anteriormente Ejemplo: Ejemplo:<% Response.Cookies(IDUsuario) = 49 Response.Cookies(IDUsuario).Expires = December 31, 2004 %>

116 Introducción al desarrollo de aplicaciones web César Fernández Acebal 116 Leer el valor de una cookie Se hace a través de la misma colección, sólo que ahora sin especificar ningún valor: Se hace a través de la misma colección, sólo que ahora sin especificar ningún valor:

117 Introducción al desarrollo de aplicaciones web César Fernández Acebal 117 Ejemplo: contador de visitas Realicemos un sencillo ejemplo en el que se cuenten las visitas de un usuario a una página Realicemos un sencillo ejemplo en el que se cuenten las visitas de un usuario a una página

118 Introducción al desarrollo de aplicaciones web César Fernández Acebal 118 URL Rewriting Consiste en incluir la información del estado en el propio URL Consiste en incluir la información del estado en el propio URL /…/comprar.asp?paso=3&producto1=01992CX&produc to2=ZZ112230&producto3=HJ19X25… No es de recibo en aplicaciones serias Un cliente puede iniciar dos o más sesiones simultáneas, páginas tediosas de programar, sólo se puede usar el método GET, etc.

119 Ventajas e inconvenientes Almacenar el estado de la sesión en el cliente presenta algunas ventajas frente a hacerlo en el servidor, pero también tiene algunos inconvenientes.

120 Introducción al desarrollo de aplicaciones web César Fernández Acebal 120 VentajasVentajas Menor uso de los recursos del servidor Menor uso de los recursos del servidor Los servidores sin estado no necesitan reservar y mantener recursos para guardar el estado de la sesión Fácil escalabilidad y uso de clusters Fácil escalabilidad y uso de clusters Al no tener estado, cualquier servidor puede atender a cualquier cliente –No hace falta que un cliente siempre sea atendido por el mismo servidor, ni ningún tipo de distribución del estado entre servidores La sesión del cliente podría sobrevivir a una caída del servidor La sesión del cliente podría sobrevivir a una caída del servidor Un reintento por parte del cliente con el mismo URL suele funcionar

121 Introducción al desarrollo de aplicaciones web César Fernández Acebal 121 InconvenientesInconvenientes Privacidad Privacidad Otros servidores podrían leer información almacenada en las cookies del cliente –No son válidas para guardar números de tarjeta, contraseñas y cosas por el estilo Los datos pueden ser alterados Los datos pueden ser alterados Un usuario podría modificar el fichero de una cookie Lo mismo ocurre con otros mecanismos de cliente: URL, formularios, etc. Aumenta el tráfico por la red Aumenta el tráfico por la red El estado se transmite con cada petición al servidor

122 Introducción al desarrollo de aplicaciones web César Fernández Acebal 122 InconvenientesInconvenientes Implementación compleja Implementación compleja Mantener a mano el estado en el cliente puede ser realmente complicado si queremos hacerlo de manera robusta –(Lo hemos visto con el ejemplo del sitio Web de cine en ASP) Tamaño de datos limitado Tamaño de datos limitado Tanto el tamaño máximo permitido por las cookies como la longitud máxima de un URL pueden darnos problemas para almacenar sesiones complejas

123 Introducción al desarrollo de aplicaciones web César Fernández Acebal 123 ÍndiceÍndice Introducción a Internet y el Web Introducción a Internet y el Web HTTP, HTML, URL, servidores Web… Introducción a las páginas dinámicas Introducción a las páginas dinámicas CGI, ASP, JSP y Servlets, etc. Mantenimiento de la sesión del usuario Mantenimiento de la sesión del usuario Servidores de aplicaciones Servidores de aplicaciones

124 Introducción al desarrollo de aplicaciones web César Fernández Acebal 124 ¿Qué es un servidor de aplicaciones? Es un programa que provee la infraestructura necesaria para las aplicaciones Web empresariales Es un programa que provee la infraestructura necesaria para las aplicaciones Web empresariales ¿Qué quiere decir esto? ¿Qué quiere decir esto? Que los programadores van a poder dedicarse casi en exclusiva a implementar la lógica del dominio, ya que servicios de uso común, como transacciones, seguridad, persistencia, etc. ya son proporcionados por el servidor Web Se ha convertido en una pieza de software clave para cualquier empresa dedicada al comercio electrónico middleware Es una capa intermedia ( middleware ) que se sitúa entre el servidor Web y las aplicaciones y bases de datos subyacentes

125 Introducción al desarrollo de aplicaciones web César Fernández Acebal 125 Visión general Servidor de aplicaciones (Transacciones, mensajería, servicios Web…) CORBAJ2EE.NET Aplicación cliente SGBD

126 Introducción al desarrollo de aplicaciones web César Fernández Acebal 126 MotivaciónMotivación Comienzan a surgir cuando queda claro las aplicaciones cliente/servidor no iban a ser escalables a un gran número de usuarios Comienzan a surgir cuando queda claro las aplicaciones cliente/servidor no iban a ser escalables a un gran número de usuarios Debido a las características de los clientes pesados Se hacía necesario mover las reglas de negocio a algún lugar intermedio entre los clientes y la base de datos Se hacía necesario mover las reglas de negocio a algún lugar intermedio entre los clientes y la base de datos Empezaron a surgir productos para hacer esa tarea Empezaron a surgir productos para hacer esa tarea Cada compañía los llamaba de una forma distinta –Servidores de transacciones, servidores de aplicaciones…

127 Introducción al desarrollo de aplicaciones web César Fernández Acebal 127 MisiónMisión Los llamasen como los llamasen, estaban diseñados para gestionar de forma centralizada el modo en que los clientes debían conectarse a la base de datos o a los servicios con los que tenían que interoperar Los llamasen como los llamasen, estaban diseñados para gestionar de forma centralizada el modo en que los clientes debían conectarse a la base de datos o a los servicios con los que tenían que interoperar

128 Introducción al desarrollo de aplicaciones web César Fernández Acebal 128 Servicios proporcionados Creación y gestión de los componentes del servidor Creación y gestión de los componentes del servidor Por aquel entonces, basados en CORBA o COM Clustering Clustering Equilibrado de carga Equilibrado de carga Transacciones Transacciones Seguridad Seguridad Acceso a datos Acceso a datos …

129 Servicios proporcionados A continuación, se explicarán un poco más en detalle cada uno de los servicios anteriores, ofrecidos, en mayor o menor medida, por los servidores de aplicaciones.

130 Introducción al desarrollo de aplicaciones web César Fernández Acebal 130 Gestión de la sesión Como sabemos, HTTP es un protocolo sin sesión Como sabemos, HTTP es un protocolo sin sesión No permite mantener una conexión abierta entre el cliente y el servidor más allá de lo que dura la transferencia del documento en cuestión En cualquier aplicación de comercio electrónico, es necesario poder identificar al usuario a través de su navegación por el sitio Web En cualquier aplicación de comercio electrónico, es necesario poder identificar al usuario a través de su navegación por el sitio Web Autenticación, adición de productos al carrito de la compra, etc. El servidor ha de conservar información entre peticiones del usuario a lo largo de la duración de una sesión

131 Introducción al desarrollo de aplicaciones web César Fernández Acebal 131 Gestión de la sesión (2) La implementación a mano se complicaría enormemente en el caso de contar con varios servidores (equilibrado de carga) La implementación a mano se complicaría enormemente en el caso de contar con varios servidores (equilibrado de carga) La petición de un usuario registrado en la máquina A puede ser redirigida al servidor B Lo lógico es que sea el servidor de aplicaciones quien se encargue de gestionar la sesión Lo lógico es que sea el servidor de aplicaciones quien se encargue de gestionar la sesión Además, debería ser más eficiente que si lo programamos nosotros mismos

132 Introducción al desarrollo de aplicaciones web César Fernández Acebal 132 Equilibrado de carga Por equilibrado de carga ( load balancing ) se entiende la capacidad de repartir el procesamiento entre distintos servidores Por equilibrado de carga ( load balancing ) se entiende la capacidad de repartir el procesamiento entre distintos servidores Las peticiones de los clientes se redirigen a la máquina que más desocupada se encuentre en ese momento Mejora de rendimiento de la aplicación No es tan sencillo como añadir una nueva máquina y ya está No es tan sencillo como añadir una nueva máquina y ya está Además de la escalabilidad, se consigue una mayor tolerancia a fallos Además de la escalabilidad, se consigue una mayor tolerancia a fallos Los servidores de aplicaciones proporcionan mecanismos de equilibrado de carga (aspecto clave para la escalabilidad)

133 Introducción al desarrollo de aplicaciones web César Fernández Acebal 133 Acceso a datos Los servidores de aplicaciones proveen facilidades para administrar conexiones a bases de datos relacionales Los servidores de aplicaciones proveen facilidades para administrar conexiones a bases de datos relacionales Oracle, SQL Server, DB2… Los componentes (las clases que implementan la lógica del negocio) acceden a ellas de forma estándar Los componentes (las clases que implementan la lógica del negocio) acceden a ellas de forma estándar Independiente de la base de datos subyacente También suelen permitir acceder a otros tipos de fuentes de datos: También suelen permitir acceder a otros tipos de fuentes de datos: Tales como distintos ERP (SAP, Vaan...), repositorios XML, etc. Los servidores de aplicaciones son también importantes, por tanto, como mecanismo de integración de sistemas heredados

134 Introducción al desarrollo de aplicaciones web César Fernández Acebal 134 Pooling de conexiones Abrir una conexión a una base de datos suele ser un proceso costoso Abrir una conexión a una base de datos suele ser un proceso costoso No es viable abrir una nueva conexión por cada consulta a la base de datos –Penalizaría enormemente el rendimiento de la aplicación Los servidores de aplicaciones suelen contar con una serie de conexiones permanentemente abiertas que distribuye de forma transparente a los distintos procesos Los servidores de aplicaciones suelen contar con una serie de conexiones permanentemente abiertas que distribuye de forma transparente a los distintos procesos Se debería poder configurar el número de conexiones abiertas, e incluso la política de asignación

135 Introducción al desarrollo de aplicaciones web César Fernández Acebal 135 Gestión transaccional Son un elemento básico de cualquier aplicación comercial Son un elemento básico de cualquier aplicación comercial Evitan que haya información inconsistente Sería complejísimo implementarlas a mano Sería complejísimo implementarlas a mano Con un servidor de aplicaciones que tenga esta característica, bastaría con indicarle dónde empieza y termina la transacción Con un servidor de aplicaciones que tenga esta característica, bastaría con indicarle dónde empieza y termina la transacción Encargándose él de deshacer los pasos intermedios en caso de un error del sistema Transacción: secuencia de pasos que, o se ejecutan todos, o si no el sistema queda en el estado original

136 Para terminar… Un comentario final, acerca de las tecnologías o plataformas típicas sobre las que se implementan los servidores de aplicaciones, junto con un sencillo esquema de una de ellas: J2EE

137 Introducción al desarrollo de aplicaciones web César Fernández Acebal 137 Tecnologías actuales Actualmente, las dos plataformas más comunes son J2EE y, más recientemente, ha surgido.NET Actualmente, las dos plataformas más comunes son J2EE y, más recientemente, ha surgido.NET De hecho, hasta hace poco hablar de servidores de aplicaciones era prácticamente hablar de J2EE –(aunque no debemos hacer tal asociación)

138 Introducción al desarrollo de aplicaciones web César Fernández Acebal 138 Ejemplo: arquitectura J2EE


Descargar ppt "Introducción al desarrollo de aplicaciones web César Fernández Acebal Universidad de Oviedo Arquitectura web en aplicaciones."

Presentaciones similares


Anuncios Google