1. El fichero Ej1.java contiene un applet que grabará un texto en un fichero de la máquina local donde se ejecute. Se pide:
a) Compilar y ejecutar la clase Ej1 tanto como aplicación y como applet. Para probar el applet se proporciona la página de prueba Ej1.html. ¿Por qué esta clase permite ser ejecutada de las dos formas?
b) Intentar grabar el texto en un fichero en la aplicación y en el applet. ¿Qué ocurre en cada caso? ¿Por qué?
c) Instalar un gestor de seguridad al cargar la aplicación en la línea de comandos. ¿Qué ocurre en este caso?
d) Ahora añadiremos el gestor de seguridad en el código de la aplicación (no en la línea de comandos). Ejecutar la aplicación y comprobar que el comportamiento es el mismo que en el caso anterior. Pero, ¿qué ocurre si ejecutamos el programa como applet? ¿Por qué?
e) Si queremos permitir que el applet escriba en un fichero, ¿qué tendremos que hacer? Otorgar los permisos necesarios y comprobar que puede escribir correctamente el fichero.
2. (CHAT) Vamos a convertir nuestra aplicación cliente de chat en un applet. Se pide:
a) Cambiar la clase principal de la aplicación del chat, haciendo que herede de JApplet en lugar de JFrame. Se puede añadir un método main como el del ejercicio anterior para permitir que la aplicación se ejecute como aplicación y como applet. Crear una página HTML de prueba (AppletChat.html) similar a la del ejercicio anterior. Comprobar que se puede cargar correctamente de ambas formas.
b) Vamos a probar conectándonos a un servidor alojado en otra máquina. Para ello deberemos obtener la IP de la máquina de un compañero mediante el siguiente comando:
ipconfigUna vez tenemos la IP ejecutar el servidor de chat en su máquina, y cargar el cliente del chat en la nuestra conectándonos a la IP del otro equipo. Probar que cargándolo como aplicación funciona correctamente. Ahora probar a cargarlo como applet, ¿qué ocurre? ¿Por qué? ¿Cómo podríamos solucionar el problema?
c) Imaginemos que vamos a poner el chat para que cualquiera pueda acceder a él en una web sin tener que otorgar ningún permiso. ¿Qué deberemos hacer para que esto sea posible? Debemos tener en cuenta que el usuario que se conecta a la web no sabrá cuál es la IP del servidor para conectarse a él. Además deberemos permitir que la IP del servidor pueda cambiar, o podamos llevarnos el chat a otro servidor web sin necesidad de cambiar el código fuente y recompilar. ¿Cómo haremos entonces para conocer la dirección a la que debe conectarse el applet cliente? (PISTA: Buscar entre los métodos de la clase Applet aquel que nos proporcione la información que buscamos)
Implementar la conexión al servidor utilizando este método. El applet deberá establecer la conexión con el servidor donde está alojado en el momento de su inicialización, sin tener el usuario que introducir a mano la IP y pulsar conectar (podemos eliminar este campo).
Ahora vamos a probar el chat tal como se vería desde la web. Para ello debemos instalar un servidor web, en este caso Tomcat:
- Descargar e instalar Apache Tomcat
- Copiar nuestra aplicación de chat al directorio %TOMCAT_HOME%\webapps\ROOT, de forma que la página del chat se encuentre en el directorio raíz del sitio web.
- Ejecutar el servidor web (Start Tomcat)
- Obtener la IP de la máquina donde se ejecuta el servidor web.
- Desde otra máquina abrir la dirección http://<ip servidor>/AplicChat.html
- Si hemos implementado correctamente el cliente deberá conectarse a la misma máquina donde se encuentra alojado el applet automáticamente, y ya sólo tendremos que introducir el login y password y empezar a hablar con otros usuarios conectados.
Probar a conectarse varios usuarios a una misma web desde distintas máquinas y comprobar que el chat funciona correctamente.
3. (CHAT OPTATIVO) Vamos a añadir un nuevo botón a la aplicación de chat que nos permita guardar el buffer de texto en un fichero, de forma que podamos almacenar nuestras conversaciones.
a) Añadir el botón y la función de guardar todo el texto del área de texto del chat en un fichero. Podemos abrir un cuadro de diálogo para que el usuario pueda elegir el fichero donde guardar la conversación. Este cuadro de diálogo está incluido entre las clases de Swing, buscar en la documentación la forma de crearlo y utilizarlo.
b) Probar la función de guardar el buffer ejecutándolo como aplicación y comprobar que funciona correctamente.
c) Ejecutarlo como applet, ¿qué ocurre en este caso al intentar grabar un fichero? Añadir los permisos necesarios para que se pueda grabar cualquier fichero que quiera el usuario.