Dr. Carlos Roberto Jaimez González
Introducción
El propósito de este laboratorio es familiarizarse en el uso de Java Server Pages (JSP) para generar páginas web dinámicas. Antes de comenzar con este laboratorio es necesario que revises y estudies el material de JSP cubierto durante la clase, o al menos que entiendas la idea de mezclar tags HTML con código Java (scriptlets), y expresiones Java. También es importante que hayas terminado los ejercicios de los laboratorios anteriores.
En la primera parte del laboratorio veremos algunos ejemplos, en los cuales tendrás que copiar y pegar el código proporcionado aquí en el editor de tu elección (hemos estado trabajando con NetBeans); después tendrás que cargar o recargar la página web en un browser para verificar su funcionamiento.
JSP es ejecutado solamente en el servidor web. Debido a esto, el contenido que es producido por el servidor web es razonablemente estándar, y debería funcionar en cualquier web browser (compara esto con algunos de los ejemplos de JavaScript que estudiamos en sesiones anteriores, los cuales no funcionaban en Internet Explorer).
Tomcat
Para este curso usaremos Tomcat como nuestro servidor web. Cuando Tomcat está configurado correctamente, debe de funcionar sin ningún problema. La configuración de Tomcat varía entre sus diferentes versiones. Para nuestro curso usaremos Tomcat 6.0.20.
Para la instalación de Tomcat en tu computadora, sigue las siguientes instrucciones. Descarga Tomcat de la siguiente URL: http://tomcat.apache.org/download-60.cgi. La versión de Tomcat que debes descargar es la que está marcada con un recuadro rojo en la imagen de abajo:
Descomprime el archivo .zip que descargaste, en el directorio de tu elección. Para que la ruta de acceso a Tomcat sea sencilla, renombra el directorio raíz a Tomcat.
Una vez descomprimido el contenido del archivo .zip, y renombrado el directorio, debes de ver una estructura de directorios como la siguiente:
Una descripción de los directorios se proporciona a continuación:
- bin: Este directorio contiene los archivos startup.bat and shutdown.bat, los cuales utilizarás para iniciar y parar Tomcat, respectivamente.
- conf: Los archvivos de configuración de Tomcat, tales como server.xml y web.xml se encuentran en este directorio.
- lib: Aquí se colocan los archivos .jar que son utilizados por las aplicaciones web. Por ejemplo, si una aplicación web se conecta a una base de datos relacional, entonces el archivo .jar que permite la conexión a la base de datos iría aquí.
- logs: Este directorio contiene los logs que Tomcat genera automáticamente por sus diferentes actividades.
- webapps: Tomcat espera que cada una de las las aplicaciones web que generes, tenga un directorio dentro de webapps. Los directorios existentes dentro de webapps proporcionan algunas aplicaciones web de ejemplo.
- work: Este es el directorio donde Tomcat genera los Servlets y los compila, a partir de los archivos JSP que le son solicitados. Es interesante observar la relación entre una página JSP y el Servlet que es generado a partir de ella.
Para completar la instalación de Tomcat es necesario crear 2 variables de ambiente: CATALINA_HOME y JAVA_HOME, las cuales indican el directorio raíz donde está ubicado Tomcat y el directorio raíz donde está ubicado Java, respectivamente. En las imágenes de abajo se muestran las 2 variables de ambiente como están configuradas en mi computadora.
Una vez creadas las 2 variables de ambiente, estamos listos para verificar el funcionamiento de nuestro servidor web. Para ello será necesario ejecutar el archivo startup.bat que se encuentra en el directorio bin (recuerda que es necesario ejecutar este archivo como Administrador). Al ejecutar startup.bat, se abrirá la consola de Tomcat, como la siguiente:
Si todo está configurado correctamente, dando click al siguiente en el link http://localhost:8080, se abrirá la página de inicio de default de Tomcat:
Aplicación Hola Mundo
Esta es una de las aplicaciones de ejemplo que vimos durante la clase. Debes crear un directorio dentro de webapps, el cual será el directorio de tu aplicación web. Yo llamaré este directorio WebDinamico. Dentro de este directorio crea un archivo llamado testDate.jsp. Copia el siguiente texto en el archivo. Todo esto lo puedes hacer directamente en NetBeans.
<html> <head> <title>Hola JSP</title> </head> <body> <p>Hola Mundo: <%=new java.util.Date()%> </p> </body> </html>
Dando click en la siguiente URL: http://localhost:8080/WebDinamico/testDate.jsp, se abrirá una página como la siguiente:
Refresca la página algunas veces y observa como la fecha es actualizada. Esto es debido a que el código es ejecutado en el servidor cada vez que la página es solicitada (cada vez que refrescas la página).
Ahora ya sabes cómo crear una aplicación web sencilla con una página JSP dinámica. El siguiente ejemplo incluirá algunas clases de ayuda (helper classes).
Clases de ayuda (Helper Classes)
Una clase de ayuda es una clase Java que es usada por una página JSP para colaborar realizando alguna tarea. Recuerda que es una mala práctica de programación incluir código complejo dentro de una página JSP. En muchas ocasiones es mejor delegar tareas específicas a las clases de ayuda. Si las clases de ayuda son específicas a una aplicación particular, entonces los archivos .class deben de ser colocados en el directorio WEB-INF\classes, el cual está en el directorio de tu aplicación web (por ejemplo: C:\Tomcat\webapps\WebDinamico\WEB-INF\classes).
El siguiente ejemplo presenta una clase de ayuda muy simple: beans.Saludo. El objetivo de este ejemplo es demostrar que podemos llamar desde un JSP a una clase definida por el usuario cuando sea requerida. Los archivos JSP y Java son mostrados abajo.
<%@ page import="java.util.Date" %> <%@ page import="beans.Saludo" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head><title>Saludo</title></head> <body> <p>La fecha es: <%=new Date()%> </p> <h2>Saludo. <%=Saludo.hola()%> </h2> </body> </html>
package beans; import java.util.Date; public class Saludo { public static String hola() { return "Hola a las: " + new Date(); } }
Para que este ejemplo funcione correctamente es importante que Tomcat pueda encontrar los archivos .class que son llamados desde el código JSP. El directorio raíz donde deben colocarse los archivos .class es WEB-INF\classes, el cual está dentro del directorio de tu aplicación web.
Una vez que hayas compilado la clase beans.Saludo, y colocado el archivo .class en el directorio WEB-INF\classes, podrás verificar el funcionamiento de este ejemplo solicitando en un web browser el archivo JSP. La página resultante debe ser similar a la siguiente:
De hecho, existen otros archivos que también necesitan ir en el lugar correcto. Uno de esos archivos es context.xml. La ubicación de este archivo en tu aplicación web es mostrado en la siguiente imagen.
Por default, Tomcat no recarga automáticamente las clases Java cuando las recompilas. Para un ambiente de desarrollo es más conveniente que las clases se recarguen después de cualquier cambio en ellas (aunque esto es menos eficiente). Para realizar esto, es necesario editar el archivo context.xml, cuya ubicación es mostrada arriba, con el siguiente contenido:
<?xml version="1.0" encoding="UTF-8"?> <Context reloadable="true" path="/"> </Context>
Para verificar que con este cambio en el archivo context.xml Tomcat recargará automáticamente las clases, modifica la clase beans.Saludo, recompilala, y solicita nuevamente al browser el archivo JSP. El cambio en la clase debe de verse reflejado sin la necesidad de reiniciar nuestro servidor web Tomcat.
Tabla de Conversión
Repite el ejercico de la Tabla de Conversión de Grados Centígrados a Grados Fahrenheit hecho en JavaScript; pero ahora crea la tabla dinámicamente utilizando JSP.
Reservación de Hotel
Estudia los ejemplos de Reservación de Hotel vistos en clase: el ejemplo que recupera los datos manualmente, y el ejemplo que recupera los datos semi-automáticamete mediante un Java Bean. Recuerda que setProperty recupera automáticamente todos los datos de la forma que fueron enviados, y copia sus valores en los campos correspondientes en el Java Bean.
La página para realizar la reservación es mostrada a continuación:
La página resultante, después de enviar los datos, es la siguiente:
Path info
En una aplicación web es en ocasiones útil conocer la ruta (path) de la aplicación web actual. Dentro de una página JSP, se puede accesar esta información de la siguiente manera:
getServletConfig().getServletContext().getRealPath("")
Esta información es necesaria cuando estemos trabajando con archivos de bases de datos.
Resumen
En este laboratorio hemos cubierto lo siguiente:
- Instalación de Apache Tomcat.
- Creación de una simple página JSP Hola Mundo.
- Cómo llamar métodos de una helper class desde un archivo JSP.
- Cómo especificar que los archivos .class sean recargados automáticamente después de su recompilación.
- Cómo encontrar la ruta de la aplicación web actual.
- Algunos otros ejemplos que ilustran el material cubierto durante las clases.
Fin del Lab 4