Post on 03-Jan-2016
description
Introducción al desarrolloIntroducción al desarrollode aplicaciones webde aplicaciones web
Introducción al desarrolloIntroducción al desarrollode aplicaciones webde aplicaciones web
César Fernández AcebalUniversidad de Oviedo
www.cesaracebal.comwww.cesaracebal.com
acebal@uniovi.es
Arquitectura web en aplicaciones empresarialesArquitectura web en aplicaciones empresarialesbasadas en tecnología Java/J2EEbasadas en tecnología Java/J2EE
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
22
ÍndiceÍndiceÍndiceÍndice Introducción a Internet y la WebIntroducción a Internet y la Web
HTTP, HTML, URL, servidores web… Introducción a las páginas dinámicasIntroducción a las páginas dinámicas
CGI, ASP, JSP y Servlets, etc. Mantenimiento de la sesión del usuarioMantenimiento de la sesión del usuario Servidores de aplicacionesServidores de aplicaciones
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
33
Introducción a Internet y la Introducción a Internet y la WebWebIntroducción a Internet y la Introducción a Internet y la WebWeb La Web es una vasta colección de documentos en Internet La Web es una vasta colección de documentos en Internet
que están enlazados a través de los que están enlazados a través de los hiperenlaceshiperenlaces
Internet: millones de ordenadores conectadosInternet: millones de ordenadores conectadosUn conjunto de redes heterogéneas conectadas entre sí mediante el protocolo TCP/IP
Los hiperenlaces permiten a los usuarios acceder a Los hiperenlaces permiten a los usuarios acceder a documentos situados en otros servidores web, sin documentos situados en otros servidores web, sin preocuparse de su ubicaciónpreocuparse de su ubicación
Tecnologías clave de Tecnologías clave de InternetInternet
Tecnologías clave de Tecnologías clave de InternetInternet
Veamos una somera introducción a las tecnologías Veamos una somera introducción a las tecnologías fundamentales sobre las que se sustenta Internet, fundamentales sobre las que se sustenta Internet, que serán útiles para comprender posteriormente que serán útiles para comprender posteriormente algunas de las dificultades intrínsecas del algunas de las dificultades intrínsecas del desarrollo de aplicaciones web.desarrollo de aplicaciones web.
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
55
Tecnologías claves de Tecnologías claves de InternetInternetTecnologías claves de Tecnologías claves de InternetInternet La infraestructura de Internet es proporcionada La infraestructura de Internet es proporcionada
fundamentalmente por tres tecnologías:fundamentalmente por tres tecnologías:La conmutación de paquetesconmutación de paquetesEl protocolo TCP/IPTCP/IPLa arquitectura cliente/servidorcliente/servidor
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
66
Conmutación de paquetesConmutación de paquetesConmutación de paquetesConmutación de paquetesConsiste 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.
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 Surge como respuesta a las redes de conmutación de circuitos, como la telefónicacircuitos, como la telefónica
El primer libro sobre esta tecnología data de El primer libro sobre esta tecnología data de 19641964 ( (Leonard Leonard KleinrockKleinrock) y luego fue desarrollada por otros en laboratorios ) y luego fue desarrollada por otros en laboratorios de investigación de Estados Unidos e Inglaterrade investigación de Estados Unidos e Inglaterra
Con la conmutación de paquetes, la capacidad de una red (su Con la conmutación de paquetes, la capacidad de una red (su “ancho de banda”“ancho de banda”) se incrementa en un factor de 100 o más) se incrementa en un factor de 100 o más
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
77
Conmutación de circuitosConmutación de circuitosConmutación de circuitosConmutación de circuitos Era la que usaban las primeras redes de Era la que usaban las primeras redes de
ordenadores, a imagen y semejanza de la telefónicaordenadores, a imagen y semejanza de la telefónica En ellas, se establece una comunicación “punto a En ellas, se establece una comunicación “punto a
punto” entre ambos extremos mientras tiene lugar la punto” entre ambos extremos mientras tiene lugar la comunicacióncomunicación
Existe un canal “dedicado” entre ambos, independientemente de los datos que se estén enviandoProblemas:
– Ineficiente– Poco fiable
(Si se corta el canal, se interrumpe la conexión)
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
88
Ejemplo de conmutación de Ejemplo de conmutación de circuitoscircuitosEjemplo de conmutación de Ejemplo de conmutación de circuitoscircuitos
TelefónicaTelecable
Una vez establecido el circuito, es siempre el mismo durante toda la conexión.
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
99
Conmutación de paquetesConmutación de paquetesConmutación de paquetesConmutación de paquetes Es la tecnología que emplea la red InternetEs la tecnología que emplea la red Internet Los mensajes se dividen en paquetesLos 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 En vez de enviarse directamente a la dirección de destino, los paquetes viajan de una máquina a otra hasta alcanzar su paquetes viajan de una máquina a otra hasta alcanzar su destinodestino
Estas máquinas se denominan routersrouters– Ordenadores que interconectan las diferentes subredes y que son capaces de
encaminar los paquetes de una a otra– Para asegurar que siguen la mejor ruta disponible, utilizan programas llamados
algoritmos de encaminamientoalgoritmos de encaminamiento (“routing algorithms”)
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
1010
EjemploEjemploEjemploEjemplo
La heroica ciudad dormía la siesta.
Origen
192.168.1.1Destino
10.0.0.1Nº de bytes
144Nº de paquetes
4Posición
1Datos
La heroica
Origen
192.168.1.1Destino
10.0.0.1Nº de bytes
144Nº de paquetes
4Posición
2Datos
ciudad do
Origen
192.168.1.1Destino
10.0.0.1Nº de bytes
144Nº de paquetes
4Posición
3Datos
rmía la si
Origen
192.168.1.1Destino
10.0.0.1Nº de bytes
139Nº de paquetes
4Posición
4Datos
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.
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
1111
Ventajas de la conmutación Ventajas de la conmutación de paquetesde paquetesVentajas de la conmutación Ventajas de la conmutación de paquetesde paquetes Al no tener un circuito dedicado, puede hacer uso en Al no tener un circuito dedicado, puede hacer uso en
cada momento de cualquiera de las rutas cada momento de cualquiera de las rutas disponiblesdisponibles
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
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
1212
TCP/IPTCP/IPTCP/IPTCP/IP Si bien la conmutación de paquetes supuso un gran Si bien la conmutación de paquetes supuso un gran
avance en la capacidad de las redes de avance en la capacidad de las redes de comunicaciones, era necesario implementar el modo comunicaciones, era necesario implementar el modo de llevarla a cabode llevarla a cabo
Eso es de lo que se encargan los protocolos TCP/IP– Transmission Control Protocol (TCP)Transmission Control Protocol (TCP)– Internet Protocol (IP)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
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
1313
Cuatro capasCuatro capasCuatro capasCuatro 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)…
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
1414
Arquitectura de TCP/IPArquitectura de TCP/IPArquitectura de TCP/IPArquitectura de TCP/IP
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
1515
Encaminamiento de Encaminamiento de paquetes con TCP/IPpaquetes con TCP/IPEncaminamiento de Encaminamiento de paquetes con TCP/IPpaquetes con TCP/IP
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
1616
Direcciones IPDirecciones IPDirecciones IPDirecciones IP Cada ordenador conectado a Internet debe tener una Cada ordenador conectado a Internet debe tener una
dirección para poder recibir los paquetes TCPdirecció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 Las direcciones IP son números de 32 bits separados en cuatro partes (por ejemplo, cuatro partes (por ejemplo, 156.35.94.5156.35.94.5))
Cada uno va de 0 a 255; esto nos da un total de 232 direcciones (algo más de cuatro mil millones)
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
1717
IPv6IPv6IPv6IPv6 El problema es que con cada vez más y más El problema es que con cada vez más y más
dispositivos conectados, este esquema de dispositivos conectados, este esquema de direcciones está cercano a quedarse pequeñodirecciones está cercano a quedarse pequeño
Por ello, se está desarrollando una nueva versión, Por ello, se está desarrollando una nueva versión, denominada IPv6 para sustituir a la actual (IPv4), que denominada IPv6 para sustituir a la actual (IPv4), que con 128 bits podrá tener 3,4 con 128 bits podrá tener 3,4 × 10× 103838 direccionesdirecciones
Además, mejora otras deficiencias de IPv4Además, mejora otras deficiencias de IPv4
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
1818
Nombres de dominio y URLNombres de dominio y URLNombres de dominio y URLNombres de dominio y URL Para no tener que recordar direcciones IP tal cual, Para no tener que recordar direcciones IP tal cual,
éstas pueden ser representadas mediante nombres éstas pueden ser representadas mediante nombres de dominio (por ejemplo, de dominio (por ejemplo, www.euitio.uniovi.eswww.euitio.uniovi.es))
El El sistema de nombres de domino (DNS)sistema de nombres de domino (DNS) permite que permite que éstas se resuelvan a direcciones IPéstas se resuelvan a direcciones IP
Ejemplo: ping www.euitio.uniovi.esping www.euitio.uniovi.es
Los Los URL (Uniform Resource Locator)URL (Uniform Resource Locator) son las son las direcciones que escribimos en el navegadordirecciones que escribimos en el navegador
Como http://www.euitio.uniovi.es/http://www.euitio.uniovi.es/
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
1919
Computación Computación Cliente/ServidorCliente/ServidorComputación Computación Cliente/ServidorCliente/Servidor En este modelo de computación distribuida, un cliente En este modelo de computación distribuida, un cliente
solicita una acción a un servidor, que le devuelve los solicita una acción a un servidor, que le devuelve los resultadosresultados
Puede haber diversos tipos de clientes, desde los más ligerosligeros (como un navegador Web, que únicamente es capaz de mostrar documentos HTML) hasta clientes pesadosclientes pesados que también realizan procesamiento
Surgen como respuesta a los Surgen como respuesta a los mainframesmainframes de los 60 y 70 (con de los 60 y 70 (con 128 KB de RAM y y discos duros de 10 MB)128 KB de RAM y y discos duros de 10 MB)
Despega este modelo con el advenimiento de los ordenadores ordenadores personalespersonales
Toda Internet es una inmensa red cliente/servidorToda Internet es una inmensa red cliente/servidor
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
2020
Esquema Cliente/ServidorEsquema Cliente/ServidorEsquema Cliente/ServidorEsquema Cliente/Servidor
Introducción a la WebIntroducción a la WebIntroducción a la WebIntroducción a la Web
Ahora, veremos los principios básicos de la Ahora, veremos los principios básicos de la World Wide Web (WWW o Web, a secas): World Wide Web (WWW o Web, a secas): lenguajes, protocolos, servidores y clientes, lenguajes, protocolos, servidores y clientes, etcétera.etcétera.
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
2222
Internet ≠ WebInternet ≠ WebInternet ≠ WebInternet ≠ Web Internet permite a cualquier ordenador del mundo Internet permite a cualquier ordenador del mundo
compartir datos con otro ordenador remotocompartir datos con otro ordenador remotoUn programa cliente en un ordenador accede a un programa servidor en otro ordenador remoto
La Web es el sistema de hipertexto que funciona sobre La Web es el sistema de hipertexto que funciona sobre Internet como Internet como uno de sus serviciosuno de sus servicios
En este caso, el programa cliente es nuestro navegadornavegador, y el servidor el programa que hace de servidor webservidor web que está ejecutándose en el ordenador remoto y que se encarga de entregar el documento solicitado a nuestro navegador
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
2323
Nacimiento de la World Nacimiento de la World Wide WebWide WebNacimiento de la World Nacimiento de la World Wide WebWide Web En 1989, En 1989, Tim Berners-LeeTim Berners-Lee, en el laboratorio , en el laboratorio
europeo de partículas (CERN), en Suiza, crea europeo de partículas (CERN), en Suiza, crea un lenguaje de etiquetas para representar y un lenguaje de etiquetas para representar y enlazar documentosenlazar documentos
HTMLHTML —HyperText Markup Language —HyperText Markup Language– Lenguaje de Marcado de HipertextoLenguaje de Marcado de Hipertexto
Berners-LeeBerners-Lee creó las versiones iniciales de: creó las versiones iniciales de:HTMLHTML, HTTPHTTP, un servidor webservidor web y un navegadornavegadorLos cuatro componentes esenciales de la Web
Tim Berners-Lee
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
2424
Esquema general Esquema general Cliente/ServidorCliente/ServidorEsquema general Esquema general Cliente/ServidorCliente/Servidor
Servidor
Red
Petición
Respuesta
Cliente
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
2525
Visión general de la WebVisión general de la WebVisión general de la WebVisión general de la Web
InternetInternet
index.htmlindex.html
www.cesaracebal.cowww.cesaracebal.comm
www.uniovi.eswww.uniovi.es
enlaceenlace
El usuario teclea El usuario teclea http://www.cesaracebal.com/ en su en su navegadornavegador
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
2626
Visión general de la WebVisión general de la WebVisión general de la WebVisión general de la Web
1.1. El usuario solicita un documento tecleando su dirección en el El usuario solicita un documento tecleando su dirección en el navegador: navegador: http://www.uniovi.eshttp://www.uniovi.es
Es lo que se denomina un URL (localizador uniforme de recursos)
2.2. El cliente busca en el DNS cuál es la IP de www.uniovi.es: El cliente busca en el DNS cuál es la IP de www.uniovi.es: 156.35.14.3156.35.14.3
Cada ordenador en Internet está identificado por una dirección única denominada IPEl DNS traduce de nombres lógicos a direcciones físicas
3.3. Navegador y servidor web comienzan un diálogo a través del Navegador y servidor web comienzan un diálogo a través del protocolo HTTP (protocolo de transferencia de hipertexto)protocolo HTTP (protocolo de transferencia de hipertexto)
1. GET /HTTP/1.02. El servidor, si todo es correcto, devuelve el documento solicitado más
información adicional
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
2727
Visión general de la WebVisión general de la WebVisión general de la WebVisión general de la Web
4.4. El navegador mira el tipo de documento devuelto (MIME)El navegador mira el tipo de documento devuelto (MIME)
5.5. Si es “text/html” es un documento HTML, lo visualiza el propio Si es “text/html” es un documento HTML, lo visualiza el propio navegadornavegador
6.6. Si es otro tipo de documento se ejecutará el programa que Si es otro tipo de documento se ejecutará el programa que tenga asociado, o nos preguntará si queremos guardar el tenga asociado, o nos preguntará si queremos guardar el documento en nuestro ordenadordocumento en nuestro ordenador
Nota: estos tipos MIME los podemos configurar en nuestro navegador
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
2828
Funcionamiento de la WebFuncionamiento de la WebFuncionamiento de la WebFuncionamiento de la Web
Tecleamos una dirección en el navegador (por ejemplo, www.euitio.uniovi.es)
É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
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
2929
Funcionamiento de la WebFuncionamiento de la WebFuncionamiento de la WebFuncionamiento de la Web Un servidor web es un ordenador en Internet que Un servidor web es un ordenador en Internet que
sirve páginas web a peticiónsirve páginas web a peticiónPara 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 El usuario accede a la web a través de un navegadornavegador ((browserbrowser))
Se encarga de solicitar las páginas web al servidor y de mostrarlas
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
3030
HTMLHTMLHTMLHTML Es el lenguaje de creación de páginas WebEs 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 Era imprescindible que la misma información se
pudiese ver en diferentes plataformaspudiese ver en diferentes plataformas Por tanto, Berners-Lee diseñó un lenguaje de Por tanto, Berners-Lee diseñó un lenguaje de
estructuraciónestructuración de documentos de documentos, , no de presentaciónno de presentación (ésta se dejaba al programa cliente)(ésta se dejaba al programa cliente)
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
3131
HTML es un lenguajeHTML es un lenguajeHTML es un lenguajeHTML es un lenguaje Como tal, tiene unas reglas que deben ser Como tal, tiene unas reglas que deben ser
cumplidas, esto es, una cumplidas, esto es, una sintaxissintaxis, una , una gramáticagramática... ... igual que el español o cualquier otro lenguaje igual que el español o cualquier otro lenguaje informáticoinformático
Es además un lenguaje informático, para ser Es además un lenguaje informático, para ser procesado por ordenadores; procesado por ordenadores; pero no es un lenguaje pero no es un lenguaje de programaciónde programación
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
3232
¿Por qué de marcado¿Por qué de marcado ??¿Por qué de marcado¿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árrafosQue tiene un título y dos párrafosPero un ordenador sólo vería un montón de caracteresPero un ordenador sólo vería un montón de caracteres
Necesitamos un modo de indicarle la estructura del documento
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
3333
HTML, lenguaje de HTML, lenguaje de hipertextohipertextoHTML, lenguaje de HTML, lenguaje de hipertextohipertexto
Por hipertexto designamos al texto al que se le añade Por hipertexto designamos al texto al que se le añade una propiedad: determinadas porciones de texto una propiedad: determinadas porciones de texto pueden ser pueden ser enlazadasenlazadas a otros documentos a otros documentos
De ahí surge el concepto de navegación: surcamos el De ahí surge el concepto de navegación: surcamos el Web yendo de unos enlaces a otrosWeb yendo de unos enlaces a otros
El hipertexto debe ser utilizado en los sitios web para El hipertexto debe ser utilizado en los sitios web para facilitar al usuario la labor de búsqueda de la facilitar al usuario la labor de búsqueda de la informacióninformación
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
3434
¿Qué necesitamos para crear ¿Qué necesitamos para crear un documento HTML?un documento HTML?¿Qué necesitamos para crear ¿Qué necesitamos para crear un documento HTML?un documento HTML? Un editor de textoUn editor de texto
¡Ojo!, no un procesador de textos tipo el Word, por ejemploDebe ser texto plano, sin formato (p. ej., con el Bloc de Notas)
Le daremos la extensión Le daremos la extensión .html.html o o .htm.htm, y un nombre , y un nombre sin espacios ni caracteres especialessin espacios ni caracteres especiales
Nota: ninguna de las dos características son obligatorias, pero nos ahorrarán problemas
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
3535
¿Y para verlo?¿Y para verlo?¿Y para verlo?¿Y para verlo? Un programa cliente que entienda lenguaje HTML Un programa cliente que entienda lenguaje HTML
(que pueda visualizar de alguna manera documentos (que pueda visualizar de alguna manera documentos HTML)HTML)
Técnicamente, recibe el nombre de Técnicamente, recibe el nombre de HTML User AgentHTML User Agent Un ejemplo de agente de usuario son los Un ejemplo de agente de usuario son los
navegadores (literalmente, navegadores (literalmente, hojeadoreshojeadores) web () web (web web browsersbrowsers))
El navegador es quien se encarga de la presentación El navegador es quien se encarga de la presentación del documento (el estándar no especifica cómo debe del documento (el estándar no especifica cómo debe visualizarse cada elemento)visualizarse cada elemento)
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
3636
Especificación de HTMLEspecificación de HTMLEspecificación de HTMLEspecificación de HTML La especificación del lenguaje HTML y de la mayoría La especificación del lenguaje HTML y de la mayoría
de tecnologías relacionadas con el Web está definida de tecnologías relacionadas con el Web está definida por el por el World Wide Web ConsortiumWorld Wide Web Consortium (W3C) (W3C)
www.w3c.org Nota:Nota: Ahora, HTML ha dado lugar a una variación del Ahora, HTML ha dado lugar a una variación del
mismo denominada XHTMLmismo denominada XHTML
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
3737
El El World Wide Web World Wide Web ConsortiumConsortium (W3C) (W3C)El El World Wide Web World Wide Web ConsortiumConsortium (W3C) (W3C) Consorcio formado por cerca de 500 organizaciones que Consorcio formado por cerca de 500 organizaciones que
dicta los estándares de la Webdicta los estándares de la WebHTML, CSS, XML, XHTML, DOM…http://www.w3.org
Objetivo: promover la evolución de la Web garantizando que Objetivo: promover la evolución de la Web garantizando que las distintas tecnologías funcionen bien conjuntamentelas distintas tecnologías funcionen bien conjuntamente
Tim Berners-Lee
Dirigido por Dirigido por TimTim BernersBerners-Lee-Lee, el , el inventor de la Web, en 1989inventor de la Web, en 1989
Premio Príncipe de Asturias de Investigación Científica y Técnica 2002
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
3838
La Oficina Española del La Oficina Española del W3CW3CLa Oficina Española del La Oficina Española del W3CW3C En octubre de 2003 se presentó la Oficina Española En octubre de 2003 se presentó la Oficina Española
del W3C, sita en Asturiasdel W3C, sita en Asturiaswww.w3c.esConcretamente, albergada en las instalaciones de la Fundación CTIC, en el Parque Científico Tecnológico de GijónResponsables de la Oficina:
– José Manuel Alonso Responsable de la oficina
– Jesús García Coordinador
Experto en accesibilidadActo de presentación de la Oficina Española, en el Hotel de la Reconquista (Oviedo)
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
3939
Ejemplo de documento Ejemplo de documento HTMLHTMLEjemplo de documento Ejemplo de documento HTMLHTML
<?xml version="1.0" encoding="ISO-8859-1"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Introducción a HTML</title> </head> <body> <h1>Mi primera página Web</h1> <p> Éste es el equivalente al típico <em>¡Hola, mundo!</em> pero en HTML (cuya <a href="http://www.w3.org/MarkUp/" title="Especificación de las distintas versiones de HTML y XHTML en el W3C">especificación</a> puede encontrarse en el sitio Web del <acronym title="World Wide Web Consortium">W3C</acronym>). </p> </body></html>
holaMundo.htmlholaMundo.html
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
4040
HTTPHTTPHTTPHTTP HTTP (HTTP (HyperText Transform ProtocolHyperText Transform Protocol) es el protocolo ) es el protocolo
usado para transferir usado para transferir páginas webpáginas webEs el modo en que un navegador se comunica con un servidor Web (Apache, Internet Information Server…)
Es un protocolo Es un protocolo sin estadosin estadoLa 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
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
4141
Pero… ¿y TCP/IP?Pero… ¿y TCP/IP?Pero… ¿y TCP/IP?Pero… ¿y TCP/IP? ¿No era TCP/IP el conjunto de protocolos sobre los que ¿No era TCP/IP el conjunto de protocolos sobre los que
sustenta Internet? ¿Qué es eso de HTTP?sustenta Internet? ¿Qué es eso de HTTP?La comunicación entre el navegador y el servidor web se realiza mediante HTTPLa transmisión efectiva de información la controla TCP/IP
TCP/IP
HTTP HTTP
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
4242
Ejemplo de mensaje HTTPEjemplo de mensaje HTTPEjemplo de mensaje HTTPEjemplo de mensaje HTTP
GET / HTTP/1.0 >>
<HTTP/1.0 200 OK <Date: Wed, 18 Sep 1996 20:18:59 GMT <Server: Apache/1.0.0 < Content-type: text/html <Content-length: 1579 <Last-modified: Mon, 22 Jul 1996 22:23:34 GMT < < HTML document
RespuestRespuestaa
PeticióPeticiónn
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
4343
URLURLURLURL URI: Uniform Resource IdentifierURI: Uniform Resource Identifier
URL: Uniform Resource Locator Un URL es la dirección única de todo Un URL es la dirección única de todo
documento en la Webdocumento en la Webhttp://www.eutio.uniovi.es/http://www.eutio.uniovi.es/
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
4444
Sintaxis de un URLSintaxis de un URLSintaxis de un URLSintaxis de un URL
Ejemplos:Ejemplos:http://www.princast.es/http://www.princast.es/
http://195.55.30.17/http://195.55.30.17/
http://www.cfacebal.com/http://www.cfacebal.com/
http://www.cfacebal.com/index.htmlhttp://www.cfacebal.com/index.html
http://web.uniovi.es/Vicerrectorados/Extension/http://web.uniovi.es/Vicerrectorados/Extension/
http://localhost:8080/http://localhost:8080/
http://petra.euitio.uniovi.es/http://petra.euitio.uniovi.es/
protocolo://dirección[:puerto]/directorio/ficheroprotocolo://dirección[:puerto]/directorio/fichero
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
4545
ProtocoloProtocoloProtocoloProtocolo Un Un protocoloprotocolo define el modo en que se comunican define el modo en que se comunican
dos ordenadores para llevar a cabo alguna tareados ordenadores para llevar a cabo alguna tarea Protocolo de la Web:Protocolo de la Web:
HTTP (HyperText Transfer Protocol)HTTP (HyperText Transfer Protocol)Especifica cómo tiene lugar el diálogo entre el navegador y el servidor para conseguir el fichero especificadoNo se ocupa del transporte en sí: TCPTCP
Cada vez que tecleamos una dirección o pulsamos Cada vez que tecleamos una dirección o pulsamos un enlace el navegador se comunica vía HTTP con el un enlace el navegador se comunica vía HTTP con el servidor web indicadoservidor web indicado
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
4646
Ejemplos de protocolosEjemplos de protocolosEjemplos de protocolosEjemplos de protocolos
filefile Permite acceder a un fichero en el sistema de Permite acceder a un fichero en el sistema de ficheros localficheros local
ftpftp File Transfer ProtocolFile Transfer Protocol
httphttp Páginas webPáginas web
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
4747
Dirección del sitioDirección del sitioDirección del sitioDirección del sitio Suele ser un nombre simbólico: Suele ser un nombre simbólico: nombre de dominionombre de dominio
www.uniovi.es 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
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
4848
Dirección del sitioDirección del sitioDirección del sitioDirección del sitio También podría ser directamente la dirección IPTambién podría ser directamente la dirección IP
http://156.35.14.3/ Los nombres de dominio no distinguen entre Los nombres de dominio no distinguen entre
mayúsculas y minúsculasmayúsculas y minúsculashttp://www.uniovi.es/http://WWW.UNIOVI.ES/http://wWw.UniOvi.es/
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
4949
DirectorioDirectorioDirectorioDirectorio Hay que indicar la ruta hasta el fichero deseadoHay que indicar la ruta hasta el fichero deseado Como mínimo, debe ir la barra (“/”)Como mínimo, debe ir la barra (“/”)
http://www.uniovi.eshttp://www.uniovi.es//
Si no la ponemos, la pone el navegador por nosotrosSi 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/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 La ruta sí puede diferenciar entre mayúsculas y minúsculas (si el servidor web es, por ejemplo, una máquina Unix)(si el servidor web es, por ejemplo, una máquina Unix)
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
5050
Nombre del ficheroNombre del ficheroNombre del ficheroNombre del fichero Depende del sistema operativo del servidor webDepende del sistema operativo del servidor web Las páginas Web generalmente tienen como extensión Las páginas Web generalmente tienen como extensión .html.html
o o .htm.htm Las extensiones son importantes para que el navegador sepa Las extensiones son importantes para que el navegador sepa
cómo tratar un ficherocómo tratar un ficheroun .html, lo interpreta y lo muestraun .jpg, trata de mostrar la imagenun .doc, abre el Word si lo tenemos instaladoetcétera
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
5151
Nombre del ficheroNombre del ficheroNombre del ficheroNombre del fichero Si no se especifica, el servidor busca un fichero con Si no se especifica, el servidor busca un fichero con
un nombre determinado en el directorio especificadoun nombre determinado en el directorio especificadoNormalmente, el index.htmlindex.html o el index.htmindex.htmSe puede configurar el el programa que utilicemos como servidor web (Apache, IIS...)
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
5252
PuertoPuertoPuertoPuerto Por omisión, una petición HTTP se dirige al puerto 80Por 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 Pero se podría configurar el servidor web para que
“escuchase” peticiones en otro puerto“escuchase” peticiones en otro puerto En ese caso, hay que indicarlo explícitamente:En ese caso, hay que indicarlo explícitamente:
http://www.midominio.comhttp://www.midominio.com:8080:8080//
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
5353
¿Qué es un servidor Web?¿Qué es un servidor Web?¿Qué es un servidor Web?¿Qué es un servidor Web? Un programa que atiende las peticiones HTTP Un programa que atiende las peticiones HTTP
llegadas a un puerto determinado de la máquinallegadas a un puerto determinado de la máquinaTambié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 http://httpd.apache.org/
Internet Information Server (IIS)
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
5454
Descarga de ApacheDescarga de ApacheDescarga de ApacheDescarga de Apache La versión actual es la 2.0.54La versión actual es la 2.0.54 Dirección de descarga:Dirección de descarga:
http://httpd.apache.org/download.cgiAhí podemos obtener tanto los fuentesfuentes para Unix o Windows (que habrá que compilar) como un programa de instalaciónprograma de instalación para Windows (Win32 BinaryWin32 Binary)
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
5555
Instalación de Apache Instalación de Apache (Windows)(Windows)Instalación de Apache Instalación de Apache (Windows)(Windows) Opciones de instalación:Opciones de instalación:
Como servicio en el puerto 80Para 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 administradorDirectorio de instalación
– C:/ApacheC:/Apache
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
5656
EjecuciónEjecuciónEjecuciónEjecución Una vez finalizada la instalación, hay que ejecutar Apache Una vez finalizada la instalación, hay que ejecutar Apache
manualmentemanualmente
c:/Apache/Apache2/bin/c:/Apache/Apache2/bin/Apache.exeApache.exe
Ahora, ya podemos comenzar a solicitarle páginasAhora, ya podemos comenzar a solicitarle páginasNuestra 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:http://localhost:8080/http://localhost:8080/ o http://127.0.0.1:8080/http://127.0.0.1:8080/
Deberá aparecer la página siguiente:
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
5757
Página de prueba de la Página de prueba de la instalacióninstalaciónPágina de prueba de la Página de prueba de la instalacióninstalación
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
5858
¿Qué hace un servidor Web ¿Qué hace un servidor Web cuando recibe una solicitud?cuando recibe una solicitud?¿Qué hace un servidor Web ¿Qué hace un servidor Web cuando recibe una solicitud?cuando recibe una solicitud? Si el último elemento del URL es un fichero:Si el último elemento del URL es un fichero:
Si se incluye una ruta de directorios, lo buscará a partir del indicado en la directiva DocumentRootDocumentRoot
– Por omisión, es el directorio htdocshtdocs dentro del directorio de instalación de Apache
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
5959
¿Qué hace un servidor Web ¿Qué hace un servidor Web cuando recibe una solicitud?cuando recibe una solicitud?¿Qué hace un servidor Web ¿Qué hace un servidor Web cuando recibe una solicitud?cuando recibe una solicitud? En el caso de que el último elemento del URL sea un En el caso de que el último elemento del URL sea un
directorio, sin especificar el fichero:directorio, sin especificar el fichero:Si en dicho directorio existe un fichero index.htmlindex.html (o lo que se especifique en DirectoryIndexDirectoryIndex), se devolverá ésteSi no existe dicho fichero, y siempre y cuando esté habilitada la opción Options Options IndexesIndexes) se hará un listado del directorio
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
6060
ÍndiceÍndiceÍndiceÍndice Introducción a Internet y el WebIntroducción a Internet y el Web
HTTP, HTML, URL, servidores Web… Introducción a las páginas dinámicasIntroducción a las páginas dinámicas
CGI, ASP, JSP y Servlets, etc. Mantenimiento de la sesión del usuarioMantenimiento de la sesión del usuario Servidores de aplicacionesServidores de aplicaciones
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
6161
Páginas estáticasPáginas estáticasPáginas estáticasPáginas estáticas Al principio, el Web estaba poblado únicamente por páginas Al principio, el Web estaba poblado únicamente por páginas
estáticasestáticasEl 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 Este enfoque puede ser perfectamente válido para muchos sitiossitios
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 Pero no permitiría, por ejemplo, crear un sitio de comercio electrónico donde se pueda comprar, o el de un bancoelectró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
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
6262
Funcionamiento de las Funcionamiento de las páginas estáticaspáginas estáticasFuncionamiento de las Funcionamiento de las páginas estáticaspáginas estáticas
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
6363
Funcionamiento de las Funcionamiento de las páginas dinámicaspáginas dinámicasFuncionamiento de las Funcionamiento de las páginas dinámicaspáginas dinámicas
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
6464
Modo de funcionamientoModo de funcionamientoModo de funcionamientoModo de funcionamiento El esquema de funcionamiento de las páginas El esquema de funcionamiento de las páginas
dinámicas es siempre similar independientemente de dinámicas es siempre similar independientemente de en qué se hayan desarrollado éstasen qué se hayan desarrollado éstas
CGI, ASP, Servlets/JSP… El servidor Web detecta una petición de una página El servidor Web detecta una petición de una página
dinámica y se la pasa al programa necesariodinámica y se la pasa al programa necesarioPodría ser una extensión del servidorO bien un programa completamente independiente
Éste programa es quien sabe cómo interpretar el Éste programa es quien sabe cómo interpretar el código de la página para devolver el HTML apropiadocódigo de la página para devolver el HTML apropiado
CGICGICGICGI
CGI fue la primera tecnología que permitió CGI fue la primera tecnología que permitió crear páginas dinámicas, que realizaban crear páginas dinámicas, que realizaban algún tipo de procesamiento en el lado del algún tipo de procesamiento en el lado del servidor.servidor.
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
6666
CGI: Common Gateway CGI: Common Gateway InterfaceInterfaceCGI: Common Gateway CGI: Common Gateway InterfaceInterface Es un estándar que permite el intercambio de Es un estándar que permite el intercambio de
información entre servidores Web y programas información entre servidores Web y programas externosexternos
Así, mientras que un documento HTML es estático Así, mientras que un documento HTML es estático (un fichero de texto que no cambia), un programa (un fichero de texto que no cambia), un programa CGI permite mostrar información dinámica, al CGI permite mostrar información dinámica, al ejecutarseejecutarse
Por ejemplo, puede hacer una consulta a una base de datos ubicada en el servidor y mostrar los resultados en HTML
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
6767
IntroducciónIntroducciónIntroducció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
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
6868
Ejemplo: Hola, mundoEjemplo: Hola, mundoEjemplo: Hola, mundoEjemplo: Hola, mundo
#!C:\Perl\bin\perl.exeprint "Content-type: text/html\n\n";print "<html>\n<head>\n<title>El Hola, mundo en CGI</title>\n</head>\n<body>\n";print " <p>¡Hola, mundo</p>\n";print "</body>\n</html>";
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
6969
¿Cómo obtiene el programa ¿Cómo obtiene el programa los datos necesarios?los datos necesarios?¿Cómo obtiene el programa ¿Cómo obtiene el programa los datos necesarios?los datos necesarios? Depende del método HTTP por el que se envíenDepende del método HTTP por el que se envíen
GETGET– Los datos viajan codificados en el propio URL
POSTPOST– Los datos viajan encapsulados en el propio mensaje HTTP
Hay dos formas posibles en que el servidor Web Hay dos formas posibles en que el servidor Web puede pasarle los datos al programa CGI:puede pasarle los datos al programa CGI:
Mediante las variables de entornovariables de entorno
Mediante la entrada estándarentrada estándar (stdin)
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
7070
Variables de entornoVariables de entornoVariables de entornoVariables de entorno La tabla siguiente muestra alguna de las variables de La tabla siguiente muestra alguna de las variables de
entorno:entorno:(Puede verse una lista completa en http://hoohoo.ncsa.uiuc.edu/cgi/env.html)
Variable Descripción
SERVER_NAMESERVER_NAME El nombre del servidor o su dirección IP
QUERY_STRINGQUERY_STRINGLa información que sigue al “?” en el URL que referencia a este programa
CONTENT_LENGTHCONTENT_LENGTHPara consultas que llevan asociada información (por ejemplo, las hechas mediante POST), el tamaño en bytes de dicha respuesta
PATH_INFOPATH_INFO
…… …
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
7171
Acceder a las variables de Acceder a las variables de entornoentornoAcceder a las variables de Acceder a las variables de entornoentorno La forma de acceder al contenido de dichas variables La forma de acceder al contenido de dichas variables
desde el programa CGI varía dependiendo del desde el programa CGI varía dependiendo del lenguaje en que haya sido escritolenguaje en que haya sido escrito
Por ejemplo, a continuación se muestra cómo acceder al valor de la variable SERVER_NAMESERVER_NAME en C y en Perl:
C getenv("SERVER_NAME")
Perl $ENV{'SERVER_NAME'}
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
7272
EjemploEjemploEjemploEjemplo El siguiente programa CGI en Perl muestra el valor El siguiente programa CGI en Perl muestra el valor
de todas las variables de entorno:de todas las variables de entorno:
#!/usr/bin/perlprint "Content-type: text/html\n\n";foreach $key (keys %ENV) {print "$key --> $ENV{$key}<br>";}
Configuración de Apache Configuración de Apache para CGIpara CGI
Configuración de Apache Configuración de Apache para CGIpara CGI
Antes, es necesario saber qué debemos hacer en el Antes, es necesario saber qué debemos hacer en el fichero de configuración de Apache (fichero de configuración de Apache (httpd.confhttpd.conf) para ) para permitir la ejecución de programas CGIpermitir la ejecución de programas CGI
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
7474
Directiva ScriptAliasDirectiva ScriptAliasDirectiva ScriptAliasDirectiva ScriptAlias Aunque hay otras formas de hacerlo en Apache, por Aunque hay otras formas de hacerlo en Apache, por
motivos de seguridad suele hacerse mediante la motivos de seguridad suele hacerse mediante la directiva directiva ScriptAliasScriptAlias
Definiendo un único directorio para todos los programas (scripts) CGI
ScriptAlias /cgi-bin/ "C:/Apache/Apache2/cgi-bin/"ScriptAlias /cgi-bin/ "C:/Apache/Apache2/cgi-bin/"
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
7575
Intérprete de PerlIntérprete de PerlIntérprete de PerlIntérprete de Perl Además, claro está, necesitamos tener un intérprete Además, claro está, necesitamos tener un intérprete
de Perl instalado en nuestra máquinade Perl instalado en nuestra máquinaPodemos obtener uno para Windows en:
– http://www.activestate.com/
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
7676
Entrada estándarEntrada estándarEntrada estándarEntrada estándar El contenido de un formulario enviado mediante el El contenido de un formulario enviado mediante el
método POST está disponible como un flujo de método POST está disponible como un flujo de caracteres en la entrada estándarcaracteres en la entrada estándar
En ese caso, la variable de entorno CONTENT_LENGTHCONTENT_LENGTH indica el número total de bytes disponibles
El programa puede así obtener esa información El programa puede así obtener esa información como si estuviese leyendo de un fichero o del como si estuviese leyendo de un fichero o del tecladoteclado
Los datos del formulario se codifican en un Los datos del formulario se codifican en un determinado formato, muy simpledeterminado formato, muy simple
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
7777
Formato de los datosFormato de los datosFormato de los datosFormato de los datos Consiste en pares Consiste en pares nombre=valornombre=valor separados por “ separados por “&&”” Los caracteres especiales, como espacios en blanco, Los caracteres especiales, como espacios en blanco,
“=” y “&” se convierten a su valor hexadecimal“=” 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 Hay bibliotecas de funciones que dividen dicha cadena en partes, ahorrándonos así la labor de cadena en partes, ahorrándonos así la labor de procesamientoprocesamiento
name=Rich%20Bowen&city=Lexington&state=KY
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
7878
Entrada estándar. Ejemplo Entrada estándar. Ejemplo en Perlen PerlEntrada estándar. Ejemplo Entrada estándar. Ejemplo en Perlen 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:<BR>"; print $input; } else { print "Please give me a POST request with some data<BR>\n"; }
exit(0);
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
7979
Entrada estándar. Ejemplo Entrada estándar. Ejemplo en Cen CEntrada estándar. Ejemplo Entrada estándar. Ejemplo en Cen 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:<BR>";printf("%s",input);}
else {printf("Please give me a POST request with some data<BR>\n")}
exit(0);
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
8080
¿Cómo llegan los datos ¿Cómo llegan los datos cuando se usa GET en vez de cuando se usa GET en vez de POST?POST?
¿Cómo llegan los datos ¿Cómo llegan los datos cuando se usa GET en vez de cuando se usa GET en vez de POST?POST? En ese caso, la cadena que venía antes por la En ese caso, la cadena que venía antes por la
entrada estándar ahora se añade al URL, tras un “?”entrada estándar ahora se añade al URL, tras un “?” Luego, al llegar al servidor Web, éste mete esa Luego, al llegar al servidor Web, éste mete esa
información en la variable de entorno información en la variable de entorno QUERY_STRINGQUERY_STRING
A través de la cual ya está disponible para el programa CGI, como veíamos antes
Introducción a ASPIntroducción a ASPIntroducción a ASPIntroducción a ASP
Una vez visto CGI, y como paso previo Una vez visto CGI, y como paso previo antes de ver la tecnología J2EE, que antes de ver la tecnología J2EE, que será el objetivo propiamente dicho del será el objetivo propiamente dicho del curso, echémosle un vistazo a esta otra curso, echémosle un vistazo a esta otra tecnología de páginas dinámicas.tecnología de páginas dinámicas.
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
8282
Requisitos de softwareRequisitos de softwareRequisitos de softwareRequisitos de software Uno de los inconvenientes de ASP es que es Uno de los inconvenientes de ASP es que es
dependiente de un servidor Web concretodependiente de un servidor Web concretoEl Internet Information Server (IIS)Internet Information Server (IIS) de Microsoft
Dicho servidor ya viene de manera predeterminada Dicho servidor ya viene de manera predeterminada en las últimas versiones de Windowsen 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 http://localhost/http://localhost/
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
8383
Sintaxis generalSintaxis generalSintaxis generalSintaxis general ASP, al igual que las JSP de Java, se basa en ASP, al igual que las JSP de Java, se basa en
mezclar instrucciones de programación en nuestras mezclar instrucciones de programación en nuestras páginas HTMLpáginas HTML
El motor de ASP procesará dichas instrucciones El motor de ASP procesará dichas instrucciones dinámicamente y obviará el HTMLdiná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 Para ello, hay que encerrar el código ASP entre los símbolos símbolos <% %>
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
8484
Lenguaje de programaciónLenguaje de programaciónLenguaje de programaciónLenguaje 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:
Visual Basic Script (VBScriptVBScript)JScript (como denomina Microsoft a su implementación de ECMAScript –que a su vez es el estándar de JavaScriptJavaScript–)
Si no decimos nada, por omisión asume VBScriptSi no decimos nada, por omisión asume VBScript Será el lenguaje que emplearemos en los ejemplosSerá el lenguaje que emplearemos en los ejemplos
Es el más frecuente cuando hablamos de páginas ASP
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
8585
Ejemplo: mi primera Ejemplo: mi primera página ASPpágina ASPEjemplo: mi primera Ejemplo: mi primera página ASPpágina ASP Será –¡cómo no!– el archiconocido Será –¡cómo no!– el archiconocido “Hola, mundo”“Hola, mundo” La página siguiente escribe dinámicamente el La página siguiente escribe dinámicamente el
mensajemensaje<html> <head> <title>Mi primera página ASP</title> </head> <body> <h1> <% Response.Write “¡Hola, mundo!" %> (mi primera página ASP) </h1></body> </html>
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
8686
¿Cómo probamos la ¿Cómo probamos la página?página?¿Cómo probamos la ¿Cómo probamos la página?página? Si la abrimos directamente en el navegador, no Si la abrimos directamente en el navegador, no
veremos el mensajeveremos el mensajeO veríamos el código fuenteU obtendríamos un error (si los navegadores validasen el código HTML que reciben)
Para que tenga sentido, es necesario que la Para que tenga sentido, es necesario que la interprete el motor de ASPinterprete el motor de ASP
Es decir, que reciba la petición el IIS
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
8787
Administración del IISAdministración del IISAdministración del IISAdministración del IIS Se instala en el directorio Se instala en el directorio C:/InetpubC:/Inetpub Dentro de él, el directorio raíz del servidor está en Dentro de él, el directorio raíz del servidor está en
wwwrootwwwroot Y ahí es donde deberemos poner nuestra páginaY ahí es donde deberemos poner nuestra página
(También podríamos configurar directorios virtualesdirectorios virtuales) Creamos una carpeta Creamos una carpeta ejemplosejemplos y llamamos y llamamos
holaMundo.aspholaMundo.asp al fichero anterior al fichero anterior La forma de ejecutarlo es:La forma de ejecutarlo es:
http://localhost/holaMundo.asphttp://localhost/holaMundo.asp
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
8888
Otro ejemplo, más Otro ejemplo, más “dinámico”“dinámico”Otro ejemplo, más Otro ejemplo, más “dinámico”“dinámico” Naturalmente, para el viaje anterior no hacen falta Naturalmente, para el viaje anterior no hacen falta
tantas alforjastantas alforjasNo tiene ningún sentido emplear una página dinámica para eso
Hagamos ahora una página que muestre algo de Hagamos ahora una página que muestre algo de información dinámicainformación dinámica
Por ejemplo, que diga “Buenos días” o “Buenas tardes” en función de la hora
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
8989
Saludo personalizado: fecha y Saludo personalizado: fecha y horahoraSaludo personalizado: fecha y Saludo personalizado: fecha y horahora
<% ‘ 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 End If %> Hoy es <%=fecha%> y son las <%=hora%>
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
9090
Objetos predefinidosObjetos predefinidosObjetos predefinidosObjetos predefinidos ASP tiene los siguientes objetos predefinidos:ASP tiene los siguientes objetos predefinidos:
ApplicationApplication– Permite compartir información entre todos los usuarios de una aplicación (en
esto se diferencia de Session)ASPErrorASPError
ObjectContextObjectContext
RequestRequest– Para obtener información de la petición HTTP (parámetros, cookies…)
ResponseResponse– Para enviar datos al cliente (escribir código HTML, redirigir a otra página, etc.)
ServerServer– Fundamentalmente, para crear objetos de componentes del servidor
SessionSession– Permite almacenar el estado de la sesión
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
9191
Acceso a bases de datosAcceso a bases de datosAcceso a bases de datosAcceso a bases de datos Prácticamente cualquier aplicación Web va a Prácticamente cualquier aplicación Web va a
necesitar acceder a una base de datos en el servidornecesitar acceder a una base de datos en el servidor
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
9292
Aplicación de ejemploAplicación de ejemploAplicación de ejemploAplicación de ejemplo Veremos una aplicación de ejemplo que simulará un Veremos una aplicación de ejemplo que simulará un
sitio Web sobre cine, con información acerca de las sitio Web sobre cine, con información acerca de las películas:películas:
Se podrá buscar una película por su título y listar todas las películas de un determinado directorAdemá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)
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
9393
Diseño de la base de datosDiseño de la base de datosDiseño de la base de datosDiseño de la base de datos Cada película tiene varios actores, y un actor puede Cada película tiene varios actores, y un actor puede
participar en varias películasparticipar en varias películas
Intérprete Películan n
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
9494
Relación actor-películaRelación actor-películaRelación actor-películaRelación actor-película Una relación “n” a “n” no puede modelarse Una relación “n” a “n” no puede modelarse
directamente en una base de datos relacional, sino directamente en una base de datos relacional, sino que necesitamos una tabla intermedia:que necesitamos una tabla intermedia:
Intérprete Película
n nReparto
1 1
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
9595
CartelCartelCartelCartel Para poder mostrar el cartel de cada película de Para poder mostrar el cartel de cada película de
forma automática, guardamos el nombre del fichero forma automática, guardamos el nombre del fichero de imagen en la base de datosde imagen en la base de datos
Y las guardamos todas en el mismo directorio del sitio Web, con ese mismo nombre
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
9696
Creación de la base de Creación de la base de datosdatosCreación de la base de Creación de la base de datosdatos Nos servirá Microsoft AccessNos servirá Microsoft Access Luego se podrá acceder a ella desde las páginas Luego se podrá acceder a ella desde las páginas
ASP independientemente del Sistema de Gestión de ASP independientemente del Sistema de Gestión de Bases de Datos utilizado (Access, Oracle, SQL Bases de Datos utilizado (Access, Oracle, SQL Server…)Server…)
La forma más flexible es hacerlo mediante ODBCLa forma más flexible es hacerlo mediante ODBCPermite acceder de forma genérica a cualquier base de datos definida en el sistema
No obstante, no se utilizará en el ejemploNo obstante, no se utilizará en el ejemplo(Por facilidad de depuración)
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
9797
Creación del origen de datos Creación del origen de datos ODBCODBCCreación del origen de datos Creación del origen de datos ODBCODBC Creamos un nuevo origen de datos del tipo Creamos un nuevo origen de datos del tipo
“Microsoft Access Driver”“Microsoft Access Driver”
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
9898
Configuración de ODBCConfiguración de ODBCConfiguración de ODBCConfiguración de ODBC Aparecerá esta pantalla, en la que asignamos un Aparecerá esta pantalla, en la que asignamos un
nombre al origen de datos y seleccionamos la nombre al origen de datos y seleccionamos la ubicación de la base de datos:ubicación de la base de datos:
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
9999
Seleccionar base de datosSeleccionar base de datosSeleccionar base de datosSeleccionar base de datos Tras pulsar el botón Tras pulsar el botón SeleccionarSeleccionar, buscamos la , buscamos la
ubicación de la base de datos (el fichero ubicación de la base de datos (el fichero .mdb.mdb donde donde hayamos creado la base de datos con Access)hayamos creado la base de datos con Access)
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
100100
Configuración de ODBCConfiguración de ODBCConfiguración de ODBCConfiguración de ODBC Éste deberá ser el aspecto de la ventana una vez Éste deberá ser el aspecto de la ventana una vez
configurado el nuevo origen de datos:configurado el nuevo origen de datos:
Sólo falta pulsar AceptarAceptar para que sea creado
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
101101
Origen de datos creadoOrigen de datos creadoOrigen de datos creadoOrigen de datos creado
Ahora ya está Ahora ya está creado el creado el origen de datos origen de datos para nuestra para nuestra base de datos base de datos de películasde películas
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
102102
Creación de un directorio Creación de un directorio virtualvirtualCreación de un directorio Creación de un directorio virtualvirtual
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
103103
Estudio de la aplicaciónEstudio de la aplicaciónEstudio de la aplicaciónEstudio de la aplicación A continuación, examinemos el código fuente ASP A continuación, examinemos el código fuente ASP
de las páginas de la aplicaciónde las páginas de la aplicación Iremos explicando diferentes aspectos de ASP Iremos explicando diferentes aspectos de ASP
sirviéndonos de la aplicación de ejemplo:sirviéndonos de la aplicación de ejemplo:Acceso a datosManejo de formulariosRedirección de páginasGeneración de HTML dinámico
– (en función de determinadas condiciones)
Etcétera
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
104104
ÍndiceÍndiceÍndiceÍndice Introducción a Internet y el WebIntroducción a Internet y el Web
HTTP, HTML, URL, servidores Web… Introducción a las páginas dinámicasIntroducción a las páginas dinámicas
CGI, ASP, JSP y Servlets, etc. Mantenimiento de la sesión del usuarioMantenimiento de la sesión del usuario Servidores de aplicacionesServidores de aplicaciones
Mantenimiento de la Mantenimiento de la sesiónsesión
Mantenimiento de la Mantenimiento de la sesiónsesión
Una de los grandes inconvenientes a Una de los grandes inconvenientes a solventar en las aplicaciones Web es cómo solventar en las aplicaciones Web es cómo mantener la sesión del usuario. Veamos en mantener la sesión del usuario. Veamos en qué consiste y qué alternativas existen para qué consiste y qué alternativas existen para hacerlo.hacerlo.
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
106106
HTTP, protocolo sin estadoHTTP, protocolo sin estadoHTTP, protocolo sin estadoHTTP, protocolo sin estado HTTP es un protocolo HTTP es un protocolo sin estadosin estado Esto significa que para el servidor Web cada petición Esto significa que para el servidor Web cada petición
de una página es únicade una página es únicaNo 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 Son necesarias alternativas software, por tanto, que permitan simular el estadopermitan simular el estado
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
107107
AlternativasAlternativasAlternativasAlternativas Aunque hay varias formas de hacerlo (dependiendo de si Aunque hay varias formas de hacerlo (dependiendo de si
trabajamos en ASP, en J2EE…) la mayoría pasan por el uso trabajamos en ASP, en J2EE…) la mayoría pasan por el uso de de “cookies”“cookies”
Algunas de las alternativas son:Algunas de las alternativas son:Usar el objeto SessionSession (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”URL rewriting” Etcétera
CookiesCookiesCookiesCookies
Veamos una introducción a las cookies y Veamos una introducción a las cookies y algunos ejemplos en los que algunos ejemplos en los que aprenderemos a manipularlas.aprenderemos a manipularlas.
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
109109
¿Qué son las cookies?¿Qué son las cookies?¿Qué son las cookies?¿Qué son las cookies? Las Las cookiescookies son pequeñas porciones datos que son son pequeñas porciones datos que son
almacenados localmente por el navegador en forma almacenados localmente por el navegador en forma de pequeños ficheros de textode pequeños ficheros de texto
Cada vez que el cliente envía información al servidor, Cada vez que el cliente envía información al servidor, incluye en la petición HTTP las cookies que incluye en la petición HTTP las cookies que previamente haya guardado provenientes de ese previamente haya guardado provenientes de ese servidorservidor
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
110110
Detalles de Detalles de implementaciónimplementaciónDetalles de Detalles de implementaciónimplementación Según la especificación, un agente de usuario (es Según la especificación, un agente de usuario (es
decir, un navegador), debe permitir al menos:decir, un navegador), debe permitir al menos:Un total de 300 cookies300 cookiesHasta 4 KB4 KB (4.096 bytes) por cookiepor cookieAl menos 20 cookies de un servidor20 cookies de un servidor dado
El navegador se encarga automáticamente de El navegador se encarga automáticamente de eliminar aquéllas que hace más tiempo que no se eliminar aquéllas que hace más tiempo que no se utilizan cuando necesita guardar nuevas cookiesutilizan cuando necesita guardar nuevas cookies
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
111111
SintaxisSintaxisSintaxisSintaxis Cada cookie presenta la siguiente sintaxis general:Cada cookie presenta la siguiente sintaxis general:
Lo único obligatorio es que tenga un Lo único obligatorio es que tenga un nombrenombre y un y un valorvalor asociado; el resto de atributos son opcionales asociado; el resto de atributos son opcionales
Aunque también se utiliza bastante el atributo expiresexpires
nombre=valor; [expires=fecha; path=directorio; domain=nombreDeDominio; secure]
nombre=valor; [expires=fecha; path=directorio; domain=nombreDeDominio; secure]
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
112112
Descripción de los Descripción de los atributosatributosDescripción de los Descripción de los atributosatributos Un par Un par nombre = valornombre = valor
Por ejemplo: IDUsuario = 49;IDUsuario = 49;
expiresexpiresHasta cuándo será válida la cookie
– Debe ir en este formato: Wdy, DD-Mon-YYYY HH:MM:SS GMTWdy, 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
pathpathEl conjunto de directorios del servidor para los que es válida esta cookie (por omisión, será el raíz “/”, es decir, todos)
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
113113
Descripción de los Descripción de los atributos (2)atributos (2)Descripción de los Descripción de los atributos (2)atributos (2) domaindomain
El servidor o nombre de dominio para el que es válida la cookieUna cookie sólo puede ser leída y modificada desde el servidor y directorio especificados en la cookie cuando ésta fue creada
securesecureEs booleano; si está definido (si aparece el atributo) deberá haber una conexión segura (httpshttps) para que la cookie sea enviada
Uso de cookies en ASPUso de cookies en ASPUso de cookies en ASPUso de cookies en ASP
Veamos de qué forma podemos establecer Veamos de qué forma podemos establecer y leer cookies en ASP.y leer cookies en ASP.
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
115115
Response.CookiesResponse.CookiesResponse.CookiesResponse.Cookies Mediante la colección Mediante la colección CookiesCookies del objeto predefinido del objeto predefinido
ResponseResponse podemos establecer el valor de una cookie podemos establecer el valor de una cookieSi la cookie especificada no existe, se crearáSi existe, machacará el valor que tuviera anteriormente
Ejemplo:Ejemplo:<%<%
Response.Cookies(“IDUsuario”) = 49Response.Cookies(“IDUsuario”) = 49
Response.Cookies(“IDUsuario”).Expires =Response.Cookies(“IDUsuario”).Expires =
““December 31, December 31, 2004”2004”
%>%>
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
116116
Leer el valor de una cookieLeer el valor de una cookieLeer el valor de una cookieLeer el valor de una cookie Se hace a través de la misma colección, sólo que Se hace a través de la misma colección, sólo que
ahora sin especificar ningún valor:ahora sin especificar ningún valor:
<%= Request.Cookies(“IDUsuario”) %><%= Request.Cookies(“IDUsuario”) %>
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
117117
Ejemplo: contador de Ejemplo: contador de visitasvisitasEjemplo: contador de Ejemplo: contador de visitasvisitas Realicemos un sencillo ejemplo en el que se cuenten Realicemos un sencillo ejemplo en el que se cuenten
las visitas de un usuario a una páginalas visitas de un usuario a una página
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
118118
URL RewritingURL RewritingURL RewritingURL Rewriting Consiste en incluir la información del estado en el Consiste en incluir la información del estado en el
propio URLpropio URL/…/comprar.asp?/…/comprar.asp?paso=3&producto1=01992CX&producto2=ZZ112230paso=3&producto1=01992CX&producto2=ZZ112230&producto3=HJ19X25…&producto3=HJ19X25…
No es de recibo en aplicaciones “serias”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.
Ventajas e inconvenientesVentajas e inconvenientesVentajas e inconvenientesVentajas e inconvenientes
Almacenar el estado de la sesión en el Almacenar el estado de la sesión en el cliente presenta algunas ventajas frente a cliente presenta algunas ventajas frente a hacerlo en el servidor, pero también tiene hacerlo en el servidor, pero también tiene algunos inconvenientes.algunos inconvenientes.
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
120120
VentajasVentajasVentajasVentajas Menor uso de los recursos del servidorMenor 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 clustersFácil escalabilidad y uso de clustersAl 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 La sesión del cliente podría sobrevivir a una caída del servidordel servidor
Un reintento por parte del cliente con el mismo URL suele funcionar
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
121121
InconvenientesInconvenientesInconvenientesInconvenientes PrivacidadPrivacidad
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 alteradosLos datos pueden ser alteradosUn usuario podría modificar el fichero de una cookieLo mismo ocurre con otros mecanismos de cliente: URL, formularios, etc.
Aumenta el tráfico por la redAumenta el tráfico por la redEl estado se transmite con cada petición al servidor
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
122122
InconvenientesInconvenientesInconvenientesInconvenientes Implementación complejaImplementació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 limitadoTamaño de datos limitadoTanto el tamaño máximo permitido por las cookies como la longitud máxima de un URL pueden darnos problemas para almacenar sesiones complejas
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
123123
ÍndiceÍndiceÍndiceÍndice Introducción a Internet y el WebIntroducción a Internet y el Web
HTTP, HTML, URL, servidores Web… Introducción a las páginas dinámicasIntroducción a las páginas dinámicas
CGI, ASP, JSP y Servlets, etc. Mantenimiento de la sesión del usuarioMantenimiento de la sesión del usuario Servidores de aplicacionesServidores de aplicaciones
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
124124
¿Qué es un servidor de ¿Qué es un servidor de aplicaciones?aplicaciones?¿Qué es un servidor de ¿Qué es un servidor de aplicaciones?aplicaciones? Es un programa que provee la infraestructura Es un programa que provee la infraestructura
necesaria para las aplicaciones Web empresarialesnecesaria 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 WebSe ha convertido en una pieza de software clave para cualquier empresa dedicada al comercio electrónicoEs una capa intermedia (middlewaremiddleware) que se sitúa entre el servidor Web y las aplicaciones y bases de datos subyacentes
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
125125
Visión generalVisión generalVisión generalVisión general
Servidor de aplicaciones(Transacciones, mensajería, servicios Web…)
CORBA J2EE .NET
Aplicación cliente
Aplicación cliente
Aplicación cliente
SGBD
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
126126
MotivaciónMotivaciónMotivaciónMotivación Comienzan a surgir cuando queda claro las Comienzan a surgir cuando queda claro las
aplicaciones aplicaciones cliente/servidorcliente/servidor no iban a ser escalables no iban a ser escalables a un gran número de usuariosa un gran número de usuarios
Debido a las características de los clientes “pesados” Se hacía necesario mover las Se hacía necesario mover las reglas de negocioreglas de negocio a a
algún lugar intermedio entre los clientes y la base de algún lugar intermedio entre los clientes y la base de datosdatos
Empezaron a surgir productos para hacer esa tareaEmpezaron a surgir productos para hacer esa tareaCada compañía los llamaba de una forma distinta
– Servidores de transacciones, servidores de aplicaciones…
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
127127
MisiónMisiónMisiónMisión Los llamasen como los llamasen, estaban diseñados Los llamasen como los llamasen, estaban diseñados
para para gestionar de forma centralizadagestionar de forma centralizada el modo en que el modo en que los los clientesclientes debían conectarse a la debían conectarse a la base de datosbase de datos o a o a los los serviciosservicios con los que tenían que interoperar con los que tenían que interoperar
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
128128
Servicios proporcionadosServicios proporcionadosServicios proporcionadosServicios proporcionados Creación y gestión de los componentes del servidorCreación y gestión de los componentes del servidor
Por aquel entonces, basados en CORBA o COM ClusteringClustering Equilibrado de cargaEquilibrado de carga TransaccionesTransacciones SeguridadSeguridad Acceso a datosAcceso a datos ……
Servicios proporcionadosServicios proporcionadosServicios proporcionadosServicios proporcionados
A continuación, se explicarán un poco más A continuación, se explicarán un poco más en detalle cada uno de los servicios en detalle cada uno de los servicios anteriores, ofrecidos, en mayor o menor anteriores, ofrecidos, en mayor o menor medida, por los servidores de aplicaciones.medida, por los servidores de aplicaciones.
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
130130
Gestión de la sesiónGestión de la sesiónGestión de la sesiónGestión de la sesión
Como sabemos, HTTP es un protocolo sin sesiónComo sabemos, HTTP es un protocolo sin sesiónNo 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 En cualquier aplicación de comercio electrónico, es necesario poder identificar al usuario a través de su necesario poder identificar al usuario a través de su navegación por el sitio Webnavegació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
El servidor ha de conservar información entre peticiones del usuario a lo largo de la duración de una sesión
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
131131
Gestión de la sesión (2)Gestión de la sesión (2)Gestión de la sesión (2)Gestión de la sesión (2) La implementación “a mano” se complicaría La implementación “a mano” se complicaría
enormemente en el caso de contar con varios enormemente en el caso de contar con varios servidores (equilibrado de carga)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 Lo lógico es que sea el servidor de aplicaciones quien se encargue de gestionar la sesiónquien se encargue de gestionar la sesión
Además, debería ser más eficiente que si lo programamos nosotros mismos
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
132132
Equilibrado de cargaEquilibrado de cargaEquilibrado de cargaEquilibrado de carga
Por equilibrado de carga (Por equilibrado de carga (load balancingload balancing) se entiende la ) se entiende la capacidad de repartir el procesamiento entre distintos capacidad de repartir el procesamiento entre distintos servidoresservidores
Las peticiones de los clientes se redirigen a la máquina que más desocupada se encuentre en ese momentoMejora 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 Además de la escalabilidadescalabilidad, se consigue una mayor , se consigue una mayor
tolerancia a fallostolerancia a fallos
Los servidores de aplicaciones proporcionan mecanismos de equilibrado de carga (aspecto clave para la escalabilidad)
Los servidores de aplicaciones proporcionan mecanismos de equilibrado de carga (aspecto clave para la escalabilidad)
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
133133
Acceso a datosAcceso a datosAcceso a datosAcceso a datos Los servidores de aplicaciones proveen facilidades para Los servidores de aplicaciones proveen facilidades para
administrar conexiones a bases de datos relacionalesadministrar conexiones a bases de datos relacionalesOracle, SQL Server, DB2…
Los componentes (las clases que implementan la lógica del Los componentes (las clases que implementan la lógica del negocio) acceden a ellas de forma estándarnegocio) 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 También suelen permitir acceder a otros tipos de fuentes de
datos: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
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
134134
““Pooling” de conexionesPooling” de conexiones““Pooling” de conexionesPooling” de conexiones Abrir una conexión a una base de datos suele ser un Abrir una conexión a una base de datos suele ser un
proceso costosoproceso costosoNo 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 Los servidores de aplicaciones suelen contar con
una serie de conexiones permanentemente abiertas una serie de conexiones permanentemente abiertas que distribuye de forma transparente a los distintos que distribuye de forma transparente a los distintos procesosprocesos
Se debería poder configurar el número de conexiones abiertas, e incluso la política de asignación
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
135135
Gestión transaccionalGestión transaccionalGestión transaccionalGestión transaccional
Son un elemento básico de cualquier aplicación comercialSon un elemento básico de cualquier aplicación comercialEvitan 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 Con un servidor de aplicaciones que tenga esta
característica, bastaría con indicarle dónde empieza y termina característica, bastaría con indicarle dónde empieza y termina la transacciónla 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
Transacción: secuencia de pasos que, o se ejecutan todos, o si no el sistema queda en el estado original
Para terminar…Para terminar…Para terminar…Para terminar…
Un comentario final, acerca de las Un comentario final, acerca de las tecnologías o plataformas típicas sobre las tecnologías o plataformas típicas sobre las que se implementan los servidores de que se implementan los servidores de aplicaciones, junto con un sencillo aplicaciones, junto con un sencillo esquema de una de ellas: J2EEesquema de una de ellas: J2EE
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
137137
Tecnologías actualesTecnologías actualesTecnologías actualesTecnologías actuales Actualmente, las dos plataformas más comunes son Actualmente, las dos plataformas más comunes son
J2EEJ2EE y, más recientemente, ha surgido y, más recientemente, ha surgido .NET.NETDe hecho, hasta hace poco hablar de servidores de aplicaciones era prácticamente hablar de J2EE
– (aunque no debemos hacer tal asociación)
Introducción al desarrollo de aplicaciones webIntroducción al desarrollo de aplicaciones webCésar Fernández AcebalCésar Fernández Acebal
138138
Ejemplo: arquitectura J2EEEjemplo: arquitectura J2EEEjemplo: arquitectura J2EEEjemplo: arquitectura J2EE