Ejercicios de protocolo HTTP e introducción a las aplicaciones web
Pruebas con protocolo HTTP (1 punto)
En las plantillas de la sesión tenéis un par de archivos JAR que implementan un cliente y un servidor HTTP de "pruebas". Estos únicamente establecen la conexión y nos permiten escribir manualmente los comandos HTTP y ver la respuesta del otro lado. Crea un fichero ejer1_1.txt con lo que vayas haciendo en este ejercicio (las respuestas que obtengas del servidor o las peticiones del cliente, y las respuestas a las preguntas que se te plantean).
Utilizando el programa que simula ser un cliente HTTP (ClienteHTTP.jar) vamos a abrir la página principal de la Universidad de Alicante.
- Ejecutar el programa desde un terminal colocándose en el directorio en que reside y tecleando
java -jar ClienteHTTP.jar
- En el campo host deberéis indicar www.ua.es, y pulsar el botón "Conectar"
- Como petición teclear
GET / HTTP/1.0 (línea en blanco)
NOTA: es importante respetar la línea en blanco al final de la petición - Comprobad que se recibe el HTML de la página principal de la UA comparando con el código fuente de la misma página vista desde un navegador.
- Forzad a que el servidor os envíe la página en valenciano repitiendo la petición pero ahora adjuntando la cabecera Accept-language con el valor ca (correspondiente al locale catalán/valenciano, según la lista de códigos ISO 639-1)
Utilizando el programa que simula ser un servidor HTTP que tenéis en la plantilla (ServidorHTTP.jar), hacer lo siguiente:
- Ejecutar el programa desde un terminal con
java -jar ServidorHTTP.jar
- Escribir como número de puerto 1080, 8080 o cualquier valor por encima de 1024 (ya que en linux los usuarios comunes no tienen permiso para crear sockets de servidor por debajo de este puerto). Pulsar sobre "Esperar petición".
- Utilizar un navegador para hacer un petición HTTP a nuestro servidor de prueba. Pondremos una URL del estilo: http://localhost:1080/index.htm (evidentemente hay que usar el mismo puerto que hemos puesto en el servidor).
- Observar en el servidor espía la petición que ha hecho el navegador. ¿Cómo se identifica el navegador (versión + sistema operativo)?
- Abrir la página HTML form_get.htm con cualquier navegador web. Introducir datos en el formulario y enviar una petición. Esta petición se estará realizando al servidor espía instalado. Observar en este servidor la petición realizada. ¿Dónde se han enviado los datos del formulario?
- Vamos a hacer lo mismo que en el apartado anterior, pero con la página form_post.htm. ¿Qué diferencia hay entre esta petición y la realizada en el caso anterior? ¿Dónde se envían los datos introducidos en el formulario?
Recursos estáticos en Tomcat (0,5 puntos)
Vamos a probar el servidor web Tomcat y a subir recursos estáticos a él para comprobar que funciona. Nota: en la entrega debes adjuntar
-
Tomcat está instalado en el directorio /opt/apache-tomcat-<nº de version>. Ponerlo en marcha ejecutando el
script startup.sh de su directorio bin. Aparecerán mensajes indicando las variables de entorno que está usando:
Using CATALINA_BASE: /opt/apache-tomcat-6.0.29 Using CATALINA_HOME: /opt/apache-tomcat-6.0.29 Using CATALINA_TMPDIR: /opt/apache-tomcat-6.0.29/temp Using JRE_HOME: /opt/jdk1.6.0_21 Using CLASSPATH: /opt/apache-tomcat-6.0.29/bin/bootstrap.jar
Comprobar que Tomcat ha arrancado accediendo a http://localhost:8080/ desde cualquier navegador. Debería aparecer la página principal de Tomcat -
Copiar el fichero pagina.htm (podrás encontrarlo en las plantillas de la sesión) a la aplicación raíz (webapps/ROOT dentro de Tomcat), que es la que se ejecuta por defecto (la página principal de Tomcat es parte de ella). Comprobar que se puede acceder correctamente a este recurso introduciendo la siguiente URL
http://localhost:8080/pagina.htm
. Incluye un volcado de la pantalla del navegador en la entrega con el nombre ejer1_2.jpg
Desplegar una aplicación web sencilla sin Eclipse (1 punto)
En las plantillas de la sesión hay una sencilla aplicación web que permite mantener una página y que los visitantes puedan añadir comentarios. Vamos a empaquetar y desplegar la aplicación en Tomcat
Nota: en la entrega incluye todos los ficheros que generes dentro de una carpeta ejer1_3 (el .war y el tomcat-users.xml)
Empaquetamiento en .war. Observar la estructura de directorios que cuelga del directorio comentarios. Podemos empaquetar la aplicación mediante la herramienta jar incluída en el JDK, como se especifica en los apuntes:
jar cvf comentarios.war *
La operación anterior hay que hacerla desde dentro del directorio comentarios, es decir, el .war creado no debe contener la carpeta "comentarios" propiamente dicha, sino lo que contiene ésta.
Si no tenemos la herramienta jar en el path, podemos comprimir los archivos en un .zip convencional y cambiarle manualmente la extensión.
Despliegue manual en Tomcat Para desplegar el .war manualmente basta con dejarlo en la carpeta webapps del directorio de instalación de Tomcat. Observar que transcurridos unos segundos el .war se descomprime automáticamente en una carpeta con el mismo nombre. Para probar la aplicación abre un navegador y accede a la URL
http://localhost:8080/comentarios/comentarios.jsp
Repliegue de la aplicación: para eliminar la aplicación del servidor basta con borrar el .war y también el directorio descomprimido.
Despliegue a través del manager de Tomcat:. Esta sería la forma de trabajar si no estuviéramos en la misma máquina que el servidor. Para ello, exportamos a un .WAR en cualquier directorio (que no sea de Tomcat).
Crear un nuevo usuario con rol "manager" en el fichero de usuarios de Tomcat (conf/tomcat-users.xml): introducir las lineas:
<role rolename="manager"/> <user username="manager" password="manager" roles="manager"/>
IMPORTANTE: tendrás que rearrancar Tomcat para que el cambio tenga efecto. Páralo ejecutando el script bin/shutdown.sh y vuelve a ejecutarlo con bin/startup.sh
El acceso al manager se hace a través de la URL
http://localhost:8080/manager/html
Tomcat nos pedirá un usuario con rol manager. Introducir el usuario de administración. El .war se despliega con el formulario que aparece al final de la página. Una vez desplegado, comprobar que la aplicación aparece en la lista de aplicaciones activas. Comprobar también que si la aplicación se recarga a través del manager, los comentarios se pierden (ya que por el momento la aplicación los guarda en memoria del servidor).