Unidad 7 Servlets 7.1 Marco teórico Lo que permite que ordenadores remotos con procesadores y sistemas operativos diferentes se entiendan y en definitiva que Internet funcione como lo hace en la actualidad, es un conjunto de instrucciones o reglas conocidas con el nombre de protocolo. La Internet utiliza varios protocolos, pero los que están en la base de todos los demás son el Transport Control Protocol (TCP) y el llamado Internet Protocol (IP), o en definitiva TCP/IP para abreviar. Se trata de una serie de reglas para mover de un ordenador a otro los datos electrónicos descompuestos en paquetes, asegurándose de que todos los paquetes llegan y son ensamblados correctamente en su destino. Todos los ordenadores en Internet utilizan el protocolo TCP/IP, y gracias a ello se consigue eliminar la barrera de la heterogeneidad de los ordenadores y resolver los problemas de direccionamiento. 7.2 Instalación del servidor web Apache Jakarta Tomcat 4.1.12 El instalador del servidor web Apache Jakarta Tomcat (AJT) 4.1.12, se encuentra en el cd de instalación de Java. La figura 7.1 muestra el enlace para acceder al programa de instalación. Figura 7-1 Enlace para instalar el servidor web Apache Jakarta Tomcat 4.1.12. Al dar clic en el enlace, el navegador iniciará la descarga del paquete de instalación, seleccionar el botón Abrir para iniciar la instalación (ver figura 7.2). M.C. Luis Antonio Gama Moreno 60
Figura 7-2 Diálogo para descargar el paquete de instalación. Al iniciar el programa de instalación le informará la versión del JDK que se encuentra instalada (ver figura 7.3). Es importante tener instalado previamente el JDK, de lo contrario el AJT no funcionará apropiadamente. Figura 7-3 Versión del JDK instalado. La figura 7.4 muestra el los términos de la licencia de uso. Debe leer los términos y si está de acuerdo presione el botón I agree para iniciar la instalación. Figura 7-4 Términos de la licencia de uso. M.C. Luis Antonio Gama Moreno 61
La figura 7.5 muestra los componentes a instalar. Se recomienda dejar las opciones que se encuentran marcadas por defecto. Figura 7-5 Selección de los componentes a instalar. La figura 7.6 muestra la ruta por defecto donde se instalará el AJT. Es recomendable cambiar el nombre que el instalador sugiere por uno corto, por ejemplo C:\TOMCAT4 debido a que será usado en la configuración de las variables de entorno. Figura 7-6 Cambiando el directorio de instalación del AJT. La figura 7.7 muestra el progreso de la instalación. Al finalizar se habrá instalado correctamente el paquete AJT. M.C. Luis Antonio Gama Moreno 62
Figura 7-7 Progreso de la instalación. La figura 7.8 muestra la consola de administración del AJT. Puede cambiar el puerto 8080 al puerto 80 que es el utilizado para el protocolo http por defecto. El AJT utiliza el puerto 8080 para no interferir con otro servidor web que ya se encuentre utilizando el puerto 80, como el Apache Web Server o el Internet Information Server (IIS). Se recomienda introducir una contraseña, para la consola de administración de los servlets. Figura 7-8 Consola de administración de AJT. La figura 7.9 ilustra la terminación exitosa de la instalación del paquete AJT. Hacer clic en el botón Close, para finalizar la instalación. M.C. Luis Antonio Gama Moreno 63
Figura 7-9 Fin de la instalación. 7.3 Configuración de las variables de entorno de AJT Para poder compilar los servlets y JSPs, es importante configurar las variables de entorno: CATALINA_HOME y CLASSPATH. La variable CATALINA_HOME debe ser agregada como nueva (ver figura 1.24 en la unidad 1). Figura 7-10 Configuración de la variable CATALINA_HOME. La figura 7.11 muestra la configuración de la variable de entorno CLASSPATH. Esta variable ya debe existir, por lo tanto en lugar de agregarla debe ser modificada. La nueva ruta de acceso: %CATALINA_HOME%\COMMON\LIB\servlet.jar contiene las clases para compilar servlets, esta debe ser agregada al final del valor actual de CLASSPATH. Figura 7-11 Configuración de la variable de entorno CLASSPATH. M.C. Luis Antonio Gama Moreno 64
7.4 Iniciando el servidor AJT Para iniciar el servicio AJT, puede seleccionarlo del menú Apache Tomcat 4.1 del menú Programas, como se muestra en la figura 7.12. Figura 7-12 Iniciando el servicio AJT. La figura 7.13 muestra la consola de ejecución del AJT. Figura 7-13 Consola de ejecución del AJT. M.C. Luis Antonio Gama Moreno 65
7.5 Hola Mundo con servlets. Objetivo: Que el usuario aprenda la sintaxis básica de un Servlet y como poder invocarlo desde un navegador web. Figura 7-14 Pantalla de ejecución de un Servlet. Código /* Nombre: HolaMundo.java Descripción: Programa que despliega un mensaje en el navegador web. Materia: Programación orientada a objetos. Profesor: M.C Luis Antonio Gama Moreno */ import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class HolaMundo extends HttpServlet{ ServletOutputStream out; public void service(httpservletrequest peticion, HttpServletResponse respuesta) throws ServletException, IOException { out = respuesta.getoutputstream(); try{ out.println("<html>"); out.println("<body>"); out.println("<p> Hola a todos =) </p>"); out.println("</body>"); out.println("</html>"); }catch(exception e){ M.C. Luis Antonio Gama Moreno 66
out.println("se produjo un error... <br>"+e); } }//Service }//HolaMundo Cómo funciona? Este programa es utilizado para desplegar un mensaje Hola Mundo en el navegador web mediante un Servlet. Nota: La ubicación de las clases ya compiladas, debe ser: C:\TOMCAT4\webapps\examples\WEB-INF\classes La URL (Unified Resource Locator: Localizador Uniforme de Recursos) en el navegador debe ser: http://localhost:8080/examples/servlet/holamundo donde HolaMundo es el programa servlet compilado. No debe de incluir la extensión. 7.6 Ejemplo de un formulario con Servlet Objetivo El usuario podrá crear formularios utilizando servlets. Figura 7-15 Página generada por el servlet Formulario. M.C. Luis Antonio Gama Moreno 67
Figura 7-16 Resultado de enviar la información del Formulario. Código /* Nombre: Formulario.java Descripción: Programa que muestra un formulario Materia: Programación orientada a objetos. Profesor: M.C Luis Antonio Gama Moreno */ import javax.servlet.*; import javax.servlet.http.*; import java.io.*; public class Formulario extends HttpServlet{ ServletOutputStream out; public void service(httpservletrequest peticion, HttpServletResponse respuesta) throws ServletException, IOException { out = respuesta.getoutputstream(); if (peticion.getparameter("enviar") == null){ try{ out.println("<html>"); out.println("<body>"); out.println("<form action=\"\" method=\"post\">"); out.println(" Nombre: <input name=\"nombre\" type=\"text\">"); out.println(" <input name=\"enviar\" type=\"submit\" value=\"enviar\">"); out.println("</form>"); out.println("</body>"); out.println("</html>"); }catch(exception e){ out.println("se produjo un error... <br>"+e); } }//if else{ M.C. Luis Antonio Gama Moreno 68
out.println("hola, bienvenido " + peticion.getparameter("nombre")); } }//Service }//Formulario Unidad 7. Servlets Cómo funciona? Cuando se solicita por primera vez el servlet Formulario, el programa realiza la verificación del parámetro Enviar. Si el valor es null, entonces es el primer llamado al servlet Formulario, por lo tanto hay que presentar el formulario de la figura 7.15. Una vez que el usuario introduce un nombre y enviarlo presionado el botón Enviar, la etiqueta <form> vuelve a invocar al servlet Formulario. Cuando no se especifica el servlet que responderá a la etiqueta form action= entonces se invoca así mismo, es decir, Formulario le envía el parámetro nombre al mismo servlet Formulario. 7.7 Hola en Java Server Pages (JSP) Marco teórico La idea básica de un JSP es combinar código java en una página HTML. Un JSP finalmente se compila para crear un servlet y de esta forma agregar contenido dinámico a las páginas web. El objetivo de los servlets es codificar un programa en java que sea capaz de crear etiquetas en HTML y asi crear páginas web dinámicas. Sin embargo, pueden existir servlets con una gran cantidad de código HTML lo cual resulta tedioso y difícil de manipular para muchos usuarios. La idea de los JSP es revertir el proceso, en lugar de enfocarse en el código java y embeber las etiquetas HTML, es embeber el código java dentro de una página HTML. Esto resulta muy útil cuando se requiere poco código java y mucho código en HTML. El siguiente programa, imprime un mensaje de hola desde un JSP. Código <html> <body bgcolor="white"> <h1> Hola <% out.print (request.getparameter("nombre")); %> </h1> </html> Cómo funciona? Este programa recibe un parámetro llamado nombre, el cual puede ser enviado desde un formulario o desde la URL del a siguiente forma: Nota: La ubicación de los archivos JSP debe: ser http://localhost:8080/hola.jsp?nombre=gama C:\TOMCAT4\webapps\ROOT La URL (Unified Resource Locator: Localizador Uniforme de Recursos) en el navegador debe ser: http://localhost:8080/hola.jsp M.C. Luis Antonio Gama Moreno 69
Figura 7-17 Hola mundo en JSP. 7.8 JSP para obtener la hora del sistema Objetivo El siguente código en JSP obtiene la hora del servidor web. Código <HTML> <BODY> <H1>Time JSP</H1> <% java.util.date dt = new java.util.date(system.currenttimemillis() ); %> <%=dt.gethours()%>:<%=dt.getminutes()%>:<%=dt.getseconds()%> </BODY> </HTML> Cómo funciona? Este programa crea un objeto dt de la clase java.util.date para obtener la hora del servidor web. Figura 7-18 Obteniendo la hora del servidor. M.C. Luis Antonio Gama Moreno 70