Protocolo de Transferencia de Hipertexto (HTTP)

El protocolo HTTP (Hipertext Transfer Protocol) es similar a muchos otros protocolos de internet, como SMTP (Simple Mail Transfer Protocol) y FTP (File Transfer Protocol), ya que HTTP es un protocolo para transferir datos desde un servidor a un cliente. La diferencia entre HTTP y casi todos los demás protocolos de internet es que, mientras los protocolos típicos admiten varias solicitudes por conexión, HTTP solo admite una. Esto significa que con HTTP el cliente se conecta al servidor para recuperar un solo archivo y después se desconecta.

HTML también permite integrar en un documento HTML imágenes y otros objetos multimedia, siendo estos almacenados en el servidor web. Por tanto a través de HTTP se pueden transmitir estos archivos.

El navegador web envía una única solicitud al servidor. El servidor web determina qué archivo se solicita y devuelve como respuesta los datos de dicho archivo. El navegador interpreta la respuesta y representa el contenido en la pantalla. La información solicitada es la ubicación del archivo, u otro recurso que requiera el usuario, e información sobre el navegador. La información de respuesta incluye el recurso solicitado y otra información. La solicitud suele ser sin formato, la respuesta puede ser texto sin formato, con algo de formato o datos parcialmente binarios (como es el caso de las imágenes).

Imagen

Estructura de un Sitio Web

Un sitio web es una colección de páginas HTML y otros archivos multimedia que albergan todo el contenido que puede ver el usuario en un determinado servidor web. Estos archivos se almacenan en el servidor web y pueden incluir una jerarquía de directorios compleja. El sitio web está formado de esa jerarquía de directorios.

Java Platform, Enterprise Edition

Java Platform, Enterprise Edition o Java EE (anteriormente conocido como Java 2 Platform, Enterprise Edition o J2EE hasta la versión 1.4), es una plataforma de programación parte de la Plataforma Java para desarrollar y ejecutar software de aplicaciones en Lenguaje de programación Java con arquitectura de N niveles distribuida, basándose ampliamente en componentes de software modulares ejecutándose sobre un servidor de aplicaciones. La plataforma Java EE está definida por una especificación.

PLATAFORMA JAVA, EDICIÓN ENTERPRISE 5 (Java EE 5)

Una plataforma de programación parte de la Plataforma Java para desarrollar y ejecutar software de aplicaciones en Lenguaje de programación Java con arquitectura de N niveles distribuida, basándose ampliamente en componentes de software modulares ejecutándose sobre un servidor de aplicaciones. La plataforma Java EE está definida por una especificación.

Sitios Web y Aplicaciones Web

Un sitio web es una colección de archivos estáticos, páginas HTML, gráficos y otros archivos diversos. Una aplicación web es un sitio web con funcionalidad dinámica en el servidor. Una aplicación web ejecuta programas en el servidor, por ejemplo:

  • Un navegador solicita al servidor un formulario.
  • El servidor responde enviando el formulario HTML al navegador en el flujo de solicitud HTTP.
  • A continuación, el navegador envía al servidor otra solicitud con datos del formulario HTML.
  • El servidor pasa la solicitud y los datos a un programa que responde devolviendo los datos al navegador.

Ejecución de Programas CGI

En los inicios de HTML, los diseñadores crearon un mecanismo que permitía a un usuario invocar un programa en el servidor Web. Dicho mecanismo se llamó Common Gateway Interface (CGI), así cuando un sitio web incluye procedimientos CGI, a este se le denominó Aplicación Web.
Normalmente el navegador debe enviar los datos al programa CGI del servidor. La especificación CGI determina cómo se empaquetan y envían los datos al servidor en la solicitud HTTP. Estos datos suelen introducirse en el navegador web mediante un formulario HTML.

Ventajas y Desventajas de los Programas CGI

Ventajas:

  • Los programas pueden crearse en distintos lenguajes, aunque suele utilizarse PERL.
  • Un programa CGI con defectos no produce el fallo del sistema en el servidor Web.
  • Los programas son fáciles de referenciar para un diseñador web. Una vez creada la secuencia de comandos el diseñador puede referenciarla en una línea de una página web.

Desventajas:

  • El tiempo de respuesta de los programas CGI es alto, ya que se ejecutan en su propio Shell del sistema operativo. Considerando que crear un Shell de sistema operativo constituye una actividad muy pesada para el sistema operativo.
  • Los lenguajes aptos para CGI no siempre son seguros o están orientados a objeto.
  • La secuencia de comandos CGI debe generar una respuesta HTML, de manera que el código CGI se mezcla con HTML. Así no se separan adecuadamente la lógica de negocio y la de presentación.

Ejecución de Servlets de Java

Los servlets son el avance sobre los programas CGI tradicionales. Un servlet de Java es un programa Java que al igual que un programa CGI, se ejecuta en el servidor, pudiéndose ejecutar tareas similares a las realizadas por un programa CGI, sin embargo la arquitectura de ejecución es distinta.
Como en el caso de las secuencias de comandos CGI, se pueden crear servlets capaces de reconocer solicitudes HTTP, generar la respuesta dinámicamente (consultando la Base de datos para satisfacer la solicitud) y después enviar al navegador una respuesta que contenga un documento o una página HTML.

Ventajas y Desventajas de los Servlets

Ventajas:

  • Cada solicitud se ejecuta en un subproceso distinto, con lo cual las solicitudes de servlets se procesan mucho más rápido que en el procesamiento CGI tradicional.
  • Los servlets son sólidos y están orientados a objeto.
  • Los servlets solo pueden escribirse en lenguaje Java, lo que facilita su creación.
  • Los servlets son independientes de la plataforma ya que son creados en Java.

Desventajas:

  • Los servlets suelen contener lógica de negocio y lógica de presentación.

Arquitectura de 3 Capas

La arquitectura de 3 capas (también denominado modelo o patrón) tiene un cliente de interfaz de usuario que se ejecuta en una máquina de usuario que se comunica con software de lógica de negocio en un servidor, que a su vez se comunica con el software responsable del almacenamiento de la información a largo plazo en los equipos de base de datos.

Tipos de Componentes Visuales

Hay cuatro tipos de componentes visuales:

  1. Presentación de datos: incluye todos los datos presentados en una pantalla visible (gráficos, hojas de cálculo, listados, etc).
  2. Formularios de Datos: son los formularios de entrada de datos.
  3. Ayudas de navegación: este tipo de vistas incluyen menús de navegación, hipervínculos, mapas de sitios, etc.
  4. Pantallas informativas o ventanas emergentes: este tipo de vistas incluye texto de bienvenida, instrucciones, pantallas de ayuda, mensajes de error, cuadros de información, etc.

Protocolo de Transferencia de Hipertexto (HTTP)

En cualquier protocolo de comunicación el cliente debe transmitir una solicitud y el servidor debe transmitir una respuesta significativa. En HTTP la solicitud es algún recurso especificado por una URL, si dicha URL especifica un documento estático, la respuesta incluye el texto de este documento. Podemos considerar que la solicitud y la respuesta envuelven a la URL (más los datos del formulario) y el texto de respuesta. La siguiente figura ilustra la arquitectura cliente-servidor.

Imagen

Métodos HTTP

Se pueden usar diferentes métodos para efectuar una solicitud HTTP, como se muestran a continuación.

Método HTTPDescripción
OPTIONSSolicita las opciones de comunicaciones disponibles en la cadena de solicitud / respuesta.
GETSolicita la recuperación de información especificada mediante la URL de solicitud.
HEADIdéntico a GET, con la excepción de que no devuelve un cuerpo de mensaje, sino solo los encabezados.
POSTSolicita al servidor que acepte la entidad contenida en el cuerpo del mensaje HTTP.
PUTSolicita al servidor que almacene la entidad contenida en el cuerpo del mensaje HTTP.
DELETESolicita al servidor que elimine el recurso especificado mediante la URI de solicitud.
TRACESolicita al servidor que invoque un bucle de capa de aplicación del mensaje de solicitud.
CONNECTReservado para usar con un proxy que pueda convertirse en Túnel.

Método HTTP GET

El método HTTP más común es la solicitud GET. Se utiliza el método GET siempre que el usuario hace clic en un hipervínculo de la página HTML que está visualizando. También se usa el método GET cuando el usuario introduce una URL en el campo de dirección. Mientras se procesa una página Web el navegador también emite solicitudes GET de imágenes, applets, archivos de hojas de estilo y otros medios vinculados.

Encabezados de Solicitud HTTP

EncabezadoUso
ACCEPTLos tipos MIME que puede recibir el cliente.
HOSTEl host de internet y el número de puerto del recurso solicitado
REFERERLa dirección de la que procede la URL de solicitud.
USER-AGENTInformación del cliente que originado la solicitud.

Encabezados de Respuesta HTTP

EncabezadoUso
CONTENT-TYPEUn tipo MIME como text/html que clasifica el tipo de datos de la respuesta.
CONTENT-LENGTHLa longitud en Bytes de la carga de la respuesta
SERVERUna cadena informativa sobre el servidor que ha respondido a esta solicitud.
CACHE-CONTROLUna directiva para el navegador Web que indica dónde debe almacenarse en caché el contenido de la respuesta.

Arquitectura de Contenedor Web

Los servlets Java son componentes que debe existir en un contenedor web. El contenedor Web se crea sobre la plataforma JAVA SE e implementan las API del servlet y todos los servicios necesarios para procesar solicitudes HTTP (y de otros protocolos TCP/IP).

Imagen

El contenedor web activa el servlet que coincide con la URL de solicitud llamando al método service en una instancia de la clase servlet. En concreto, la activación del método service para una determinada solicitud HTTP se gestiona en un subproceso separado dentro del proceso del contenedor web.

Protocolos de Internet

http
Es el servicio invocado para transmitir páginas web y el que usaremos normalmente en los enlaces.
https
Es una innovación sobre el anterior, que nos permite acceder a servidores (generalmente comerciales) que nos ofrecen el uso de técnicas de encriptación para proteger los datos que intercambiemos con él de terceras personas.
ftp
Permite trasmitir ficheros desde servidores de ftp anónimo. Si no le pedimos un fichero sino un directorio, en general el navegador se encargará de mostrarnos el contenido del mismo para que podamos escogerlo cómodamente. Utilizando la @ podremos acceder a servidores privados.
mailto
Para poder mandar un mensaje. Por ejemplo, la URL mailto:[email protected] me mandaría un mensaje a mí.
news
Para poder acceder a foros de discusión (mal traducidos a veces como grupos de noticias). Se indica el servidor y el grupo. Por ejemplo news://news.ibernet.es/es.comp.demos nos conectaría con el foro es.comp.demos en el servidor nacional de Telefónica.

telnet
No es implementado generalmente por los navegadores, que suelen invocar un programa externo. Nos permite conectarnos con otros ordenadores y entrar en ellos como si nuestro ordenador fuese una terminal del mismo.
La dirección de la máquina puede ser, o bien una serie de cuatro números entre 0 y 255 (123.3.5.65) o bien algo más fácil de recordar como es una serie de palabras separadas por puntos (www.programacion.net). El puerto generalmente no se indica, ya que el servicio predetermina uno.
La ruta es una serie de directorios separados por el símbolo /, que es el utilizado en UNIX (el sistema operativo más extendido en los servidores de Internet).
Existe otro formato de URL. Cuando queremos acceder a un fichero situado en la misma máquina que la página web que estamos creando podemos utilizar este formato:

Estructura de un Documento HTML

La estructura de un documento HTML se puede resumir así:
tipo de documento


título de la página
cosas que afectan a la página pero no a su contenido


contenido de la página

La cabecera
Suele ser el lugar más indicado para colocar aquellos elementos de la página que no alteren el contenido de la misma, aunque sí la forma de presentarlo y su comportamiento. Es por eso que es el lugar más recomendable para colocar los scripts y las hojas de estilo, como veremos en los capítulos correspondientes.
4. Formularios
Una de las mayores ventajas de la web es que resulta tremendamente interactiva. Los usuarios de una página no tienen más que escribir al autor de la misma para comentarle cualquier cosa de la misma. Sin embargo, si deseamos que nos digan sólo unas cosas concretas (responder a alguna pregunta, seleccionar entre varias opciones, etc..) deberemos utilizar formularios

5. Lenguajes de script
Un lenguaje de script es un pequeño lenguaje de programación cuyo código se inserta dentro del documento HTML. Este código se ejecuta en el navegador del usuario al cargar la página, o cuando sucede algo especial como puede ser el pulsar sobre un enlace.
Estos lenguajes permiten variar dinámicamente el contenido del documento, modificar el comportamiento normal del navegador, validar formularios, realizar pequeños trucos visuales, etc… Sin embargo, conviene recordar que se ejecutan en el navegador del usuario y no en la máquina donde estén alojadas, por lo que no podrán realizar cosas como manejar bases de datos. Esto hace que los contadores (por ejemplo) se deban realizar de otra manera, utilizando programas CGI.
Imagen Javascript
Como este curso está orientado a Internet, no vamos a ver nada de VBScript aquí por las razones comentadas anteriormente. Pero para ilustrar la utilidad de los lenguajes de script, vamos a realizar una pequeña introducción al Javascript. Si te sientes interesado, visita mi curso de JavaScript 1.2 http://www.programacion.com/cursos/curso/tutorial.php?id=js> para mayor información sobre el tema.