Práctica 7: Servlets En esta práctica, primero se creará y se instalará en el servidor de aplicaciones Apache Tomcat, el servlet “HelloWorld”. Después se instalará un segundo servlet al cual se le harán una serie de modificaciones. Ejercicio 7.1: Instalación de Tomcat y primer servlet Este primer ejercicio consiste en seguir los pasos que se describen a continuación para instalar y ejecutar el servlet “HelloWorld”. Pasos a realizar para la puesta en funcionamiento del primer servlet en Tomcat: 1. Copiar el directorio Q:\Java\apache-tomcat-5.5.12 al directorio G:\ 2. Crea los directorios de la aplicación “primerServlet” en el subdirectorio webapps de la instalación del tomcat. Crear la carpeta primerServlet en webapps Crear la carpeta WEB-INF en el subdirectorio webapps\primerServlet Crear la carpeta classes en el subdirectorio webapps\primerServlet\WEB-INF 3. 2.Definir las variables de entorno en una consola de MS-DOS: SET JAVA_HOME=Q:\JAVA\jdk1.6.0_04 SET CATALINA_HOME=G:\apache-tomcat-5.5.12 SET PATH=%JAVA_HOME%\bin;%CATALINA_HOME%\bin;%PATH% SET CLASSPATH=%CLASSPATH%;%CATALINA_HOME%\common\lib\servlet-api.jar;. De esta forma se tendrá acceso a los comandos startup y shutdown de la aplicación tomcat y a las clases de los servlets. 4. En el directorio webapps\primerServlet\WEB-INF\classes crear el código fuente de HelloWorld.java: import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet{ public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { PrintWriter out = response.getWriter(); out.println("Hello World"); } } Compilarlo con el comando: javac HelloWorld.java 5. Crear el fichero web.xml en el directorio G:\apache-tomcat-5.5.12\webapps\primerServlet\WEB-INF con el contenido: 2 Informática II <?xml version="1.0" encoding="ISO-8859-1"?> <web-app> <servlet> <servlet-name>primer</servlet-name> <servlet-class>HelloWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>primer</servlet-name> <url-pattern>/primer.html</url-pattern> </servlet-mapping> </web-app> 6. Arranca el servidor de servlets con el comando: startup 7. Arranca el navegador y solicita la página con la dirección: http://localhost:8080/primerServlet/primer.html Ejercicio 7.2: Instalación de SurveyServlet En este segundo ejercicio se instalará un servlet y se comprobará su funcionamiento, para posteriormente realizar las modificaciones que se solicitan. El servlet con el que se trabajará será el ejemplo SurveyServlet.java que introduce los datos de una encuesta en un fichero. Primero se debe realizar la instalación y configuración del servlet en el servidor de servlets instalado en el ejercicio 1. Para ello se dispone de los ficheros JdcSurvey.html, SurveyServlet.java y web.xml comprimidos en el fichero Practica07.zip, que se encuentra en la página de material de la web de la asignatura. Descarga el fichero y descomprímelo en el directorio practicaServlet del subdirectorio webapps de Tomcat.. Modificar JdcSurvey.html para que el formulario envíe los datos al servlet SurveyServlet.java del propio directorio y comprobar el funcionamiento viendo que inserta los datos correctamente en el fichero especificado. Se debe intentar realizar este ejercicio con las explicaciones vistas en el primer ejercicio y los ficheros de Practica07.zip. Si se encuentran dificultades se puede encontrar ayuda en el siguiente apartado que muestra los pasos a realizar. Pasos a realizar para la puesta en funcionamiento de SurveyServlet en Tomcat: 1. Tomcat se encuentra instalado según las instrucciones del ejercicio 1. 2. Crear un nuevo directorio de trabajo (practicaServlet) en el subdirectorio webapps de la instalación de tomcat y descomprimir allí el fichero Practica07.zip. El fichero html se debe encontrar en webapps\practicaServlet El fichero web.xml se debe situar en el subdirectorio webapps\practicaServlet\WEB-INF El fichero java se debe situar en el subdirectorio webapps \practicaServlet \WEB-INF\classes 3. Modifica el texto “Thank you” por “Gracias” las dos veces que aparece en el fichero SurveyServlet.java en las líneas 101 y 102. De esta forma sabrás si el servlet al que se está llamando es el propio. 4. Modifica el título de la página HTML a “Mi página JdcSurvey” en el fichero JdcSurvey.html. 5. La dirección a la que debe llamar el formulario es: http://localhost:8080/practicaServlet/survey 6. En el directorio webapps \practicaServlet\WEB-INF\classes compila el código fuente java con el comando: javac SurveyServlet.java 7. Comprobar el contenido del fichero web.xml: <?xml version="1.0" encoding="ISO-8859-1" ?> Anexo 1. Introducción a SQL 3 <web-app> <servlet> <servlet-name>Survey</servlet-name> <servlet-class>SurveyServlet</servlet-class> <init-param> <param-name>resultsDir</param-name> <param-value>G:\apache-tomcat-5.5.12\webapps\practicaServlet\tmp</paramvalue> </init-param> </servlet> <servlet-mapping> <servlet-name>Survey</servlet-name> <url-pattern>/survey</url-pattern> </servlet-mapping> </web-app> 8. Los resultados se escriben en el fichero Survey01Results.txt que se crea en el directorio: G:\apache-tomcat-5.5.12\webapps\practicaServlet\tmp (este directorio debe estar creado previamente). 9. Arranca el servidor de servlets con el comando: startup 10. Arranca el navegador y solicita la página JdcSurvey.html. con al URL: http://localhost:8080/practicaServlet/JdcSurvey.html 11. Selecciona una opción referente al tamaño de la compañía, introduce un comentario e indicar un IDE. Pulsa el botón “Submit Query”. Comprobar que el resultado que se obtiene tiene el título “Gracias” y el mensaje “Gracias por su participación" (es decir, se está usando el servlet que hemos modificado). En el servidor de servlets se debe haber impreso la línea: SurveyServlet: INIT 12. Comprobar que se ha escrito el siguiente fichero: G:\apache-tomcat-5.5.16\webapps\practicaServlet\tmp \Survey01Results.txt Ejercicio 7.3:Modificaciones en SurveyServlet A continuación realizar las modificaciones oportunas en el servlet SurveyServlet.java para que este presente los datos que se han introducido en la respuesta al cliente de la forma mostrada en la Figura 7.1. Figura 7.1. Salida del servlet SurveyServlet.java 4 Informática II Ejercicio 7.4:Otra modificación de SurveyServlet El servlet SurveyServlet.java sólo imprime una de las opciones elegidas de IDE. En el caso de seleccionar varias, para imprimir todas se debe sustituir el código que se muestra en la siguiente tabla (se recomienda crear un nuevo servlet: SurveyServletNew.java): SurveyServlet.java SurveyServletNew.java while(values.hasMoreElements()) { String name = (String)values.nextElement(); String value = req.getParameterValues(name)[0]; if(name.compareTo("submit") != 0) { toFile.println(name + ": " + value); } } while(values.hasMoreElements()) { String name = (String)values.nextElement(); String[] valueArray = req.getParameterValues(name); for (int i=0;i<valueArray.length;i++) { String value = valueArray[i]; if(name.compareTo("submit") != 0) { toFile.println(name + ": " + value); } } } Puede ocurrir que no se reconozca la máquina que hace de servidor de servlets, en este caso el ordenador local, cuando el formulario envía la información: <FORM action=”http://localhost:8080/servlet/survey” method=”POST”> Entonces se debe modificar el nombre que aparece actualmente “localhost” por: • el número de IP de la máquina en la que se está trabajando, por ejemplo: 193.145.251.42:8080 • el nombre de la máquina A01.tecnun.es:8080. en la que se está trabajando, por ejemplo: Lo habitual es colocar el número propio de IP que se puede obtener con el comando “ipconfig”. El nombre de la máquina en la que se está trabajando o “host” se obtiene con el comando “ipconfig /all”.