Ejecutar un Servlet por primera vez sin dolores de cabeza

Java es un muy buen lenguaje de programación pero tiene algunos detalles que no lo hacen tan popular. Uno de esos detalles es que la curva de aprendizaje es mucho más pronunciada y dificultosa.  Hoy he decidido escribir como ejecutar un servlet por primera vez ya que esto podría causar un verdadero dolor de cabeza a quien se inicia en la programación Web con Java.

Un servlet es una aplicación Java que corre en entorno Web.  Para ejecutar un servlet se requiere un contendor de servlet como Tomcat.

Para este ejemplo se requiere además de conocimientos básicos de Java tener Tomcat instalado y configurado adecuadamente en Windows.  Si aún no cumple con este requisito puede visitar http://jcalderon.wordpress.com/2008/01/04/instalacion-y-configuracion-de-apache-tomcat-60-en-windows-xp/

Una vez se tenga corriendo Tomcat, se crea una estructura de directorios para ejecutar el servlet. La estructura se crea dentro del directorio webapps ubicado dentro del directorio de Tomcat. En mi máquina la ubicación es la siguiente C:\Archivos de programa\apache-tomcat-6.0.20\webapps

1)      Crear un directorio para ejecutar el proyecto llamado pruebas

2)      Dentro del directorio pruebas se crea el directorio WEB-INF que es indispensable y contiene información muy importante.

3)      Dentro de WEB-INF crear dos directorios, uno llamado src y otro llamado classes.  El directorio src en realidad no es indispensable pero allí, para efectos de este ejemplo, se guarda el  archivo fuente del servlet. El directorio classes es necesario y allí se guardará el servlet compilado.

Así vamos:

Estructura de directorios para primer servlet

Estructura de directorios para primer servlet

4)      Código fuente del servlet

/**
* Servlet de ejemplo para ejecutar por primera vez
* @author Enrique Villamizar
* @version Julio 29 de 2009
*/
import java.io.*;
import javax.servlet.http.*;
public class PrimerServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest solicitud, HttpServletResponse respuesta)
throws IOException {

// Escribir en el browser a través de la respuesta del objeto Writer
PrintWriter out = respuesta.getWriter();

out.println(“<html>”);
out.println(“<head><title> Mi primera vez! </title></head>”);
out.println(“<body>”);
out.println(“<p>”);
// Escribir algo dinámico de acuerdo a la información de la solicitud
String usuario = solicitud.getParameter(“usuario”);
if (usuario != null) {
out.println(“Hola, <b>” + usuario + “</b> bienvenido(a).”);
} else {
out.println(“Bienvenido, visitante anónimo.”);
}//fin-si

out.println(“Ud. está accesando este servlet desde “
+ solicitud.getRemoteAddr() + “.”);

out.println(“</p>”);
out.println(“</body>”);
out.println(“</html>”);
}
}

5)      Guardar el anterior código fuente en la carpeta src con el nombre de rigor (PrimerServlet.java) y compilarlo. Para que los servlets compilen se requiere que el archivo servlet-api.jar está agregado en la variable de entorno classpath.  En mi equipo figura así: C:\Archivos de programa\apache-tomcat-6.0.20\lib\ servlet-api.jar

6)      Mover el serlvet compilado (PrimerServlet.class) al directorio classes.

7)     Crear el archivo llamado web.xml y guardarlo en la carpeta WEB-INF. Este archivo es para configurar las propiedades del contenedor de servlets.   El código de web.xml es:

<?xml version=”1.0″ encoding=”ISO-8859-1″?>

<web-app xmlns=”http://java.sun.com/xml/ns/javaee”

xmlns:xsi=”http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation=”http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd”

version=”2.5″>

<servlet>

<servlet-name>Ejemplo</servlet-name>

<servlet-class>PrimerServlet</servlet-class>

</servlet>

<servlet-mapping>

<servlet-name>Ejemplo</servlet-name>

<url-pattern>/primero.do</url-pattern>

</servlet-mapping>

</web-app>

8)      Ahora reiniciar el contenedor Tomcat

9)      Ejecutar el servlet en un navegador con la siguiente url http://localhost:8080/pruebas/primero.do

Si todo ha ido bien aparecerá en el navegador lo siguiente:

Resultado de la ejecución del primer servlet sin parámetros

Resultado de la ejecución del primer servlet sin parámetros

Este server está diseñado para recibir un parámetro, de tal manera que si se ejecuta de la siguiente forma: http://localhost:8080/pruebas/primero.do?usuario=Enrique, el resultado será:

Resultado de la ejecución del primer servlet con el parámetro usuario

Resultado de la ejecución del primer servlet con el parámetro usuario

Queda pendiente algo más interesante. Crear el formulario que reciba el nombre del usuario y llame a nuestro primer servlet. Hasta pronto.

11 respuestas a esta entrada.

  1. Hola, muy buen post e interesante. Gracias por la referencia a mi blog ! jcalderon.wordpress.com

    Responder

  2. [...] Posted by kikev on Agosto 4, 2009 at 6:30 pm Filed under: Programación &nbsp|  Leave a comment  |  Trackback URI Previous Entry: Ejecutar un Servlet por primera vez sin dolores de cabeza [...]

    Responder

  3. Publicado por Josep en septiembre 4, 2009 at 5:59 am

    Buenas, he intentado practicar con tu ejemplo, pero cuando introduzco la url en el firefox me retrona …

    HTTP Status 404 -

    type Status report

    message

    description The requested resource () is not available.
    Apache Tomcat/6.0.20

    Sabes cual es la causa?

    Gracias

    pEp

    Responder

    • Publicado por kikev en septiembre 4, 2009 at 3:06 pm

      En realidad ese problema puede tener varias causas. Lo primero es que Tomcat no encuentra los recursos. Los recursos son las páginas, servlet y otros.

      También hay que revisar el archivo de configuración web.xml.

      Responder

  4. Publicado por Jose Luis en diciembre 1, 2009 at 4:11 pm

    como veo el archivo .clases de este ejemplo que se encuentra en tu pagina.
    Porque lo guardo y lo compilo y no se genera la clase me podriar explicar mas dellatadamente

    Responder

  5. Publicado por Jheyner en diciembre 25, 2010 at 11:53 am

    Hola, he seguido tu post pero tengo un problema cuando voy a darle de alta al proyecto pruebas desde el manager o usando la siguiente linea : http://localhost:8080/manager/html/start?path=/PRUEBAS me envia el siguiente error: FALLO – No se pudo arrancar la aplicación en trayectoria de contexto /PRUEBAS —> entonces no se que puede suceder, quedo al tanto de cualquier respuesta. Gracias…

    Responder

  6. Publicado por manuel en diciembre 14, 2011 at 3:29 pm

    hola, queria ver como funcionaba el contenedor web, con tu ejemplo me fue de mucha ayuda y pude resolverlo.. gracias

    Responder

  7. Que carajos es primero.do no deberia ser un pagina.HTML

    Responder

  8. Publicado por kikev en abril 15, 2012 at 11:08 am

    Hola adonis, buena observación. La estensión *.do de este ejemplo se debe a que en el archivo web.xml (llamado archivo de despliegue) donde se configuran elementos del Servlet, se encuentra el siguiente mapeo: /primero.do. Cambie esta línea por /primero.html y me cuenta, vale?

    Responder

  9. Publicado por kikev en abril 15, 2012 at 11:22 am

    Por favor, observe el numeral 7 del post en mención. Correción ortográfica: quize decir La extensión *.do

    Responder

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.