Instalacion de Apache Tomcat 7 en Windows

Mini tutorial (con imágenes) sobre la instalación de Apache tomcat 7 en Windows. Dado que he decido volver a retomar la programación en Java quiero dejar constancia con estas breves notas sobre la instalación de Apache Tomcat. Sobre la terminología y conceptos no daré muchos detalles específicos sino solo a grandes rasgos, daré por hecho que si tu también quieres instalarlo es porque ya tienes nociones de programación en Java o al menos sabes algo sobre el tema.

Como dijo Jack El Destripador, vayamos por partes…

¿Que es Apache Tomcat?

Es un Software de código abierto para la implementación (vaya, programación) de Servlets y tecnologías JavaServer Pages (JSP) los cuales derivan de Java. En sí Apache Tomcat actúa como un contenedor web para ejecutar Servlets/JSP.

Descargar el instalador de Tomcat

Para descargar tomcat hay que visitar la dirección http://tomcat.apache.org/ y en el panel derecho (sección Download) elegir una versión de Apache Tomcat:

A la fecha de hoy la versión más reciente de Tomcat es la version 7.0.37, pero ¿Cual versión que debes bajarte? Si observas esa misma pregunta está en la página de tomcat (en esta página) en la sección de descargas. Como ellos mismos explican, la versión depende de la especificación de Servlets y JSP’s que vayas a usar a la hora de estar programando.

En mi caso como voy a usar Tomcat para pruebas y además quiero aprender lo más reciente sobre servlets y jsp entonces me bajare la versión más reciente de Apache Tomcat, es decir, la versión que mencione anteriormente, da click en la versión elegida y podrás ver una pantalla similar a la siguiente:

Aquí debes el servidor espejo y el formato en el que deseas descargar el instalador de Apache Tomcat (formato zip, tar, instalador .exe, etc). En mi caso me bajare la versión: 32-bit/64-bit Windows Service Installer. Esta versión es una versión para windows el cual permite instalar Tomcat con un asistente de instalación, además, permite ejecutar apache de forma automática al encender la pc con un servicio de Windows.

De preferencia descárgalo en el escritorio para fácil ubicación y borrado (después de instalarlo):

Ahora que ya lo tienes en el escritorio hay que darle doble click para ejecutarlo e iniciar el asistente de instalación:

Instalacion de Apache Tomcat

Ahora procederemos a instalar Apache Tomcat. Al dar doble click sobre el icono del escritorio, se abre el asistente de instalación.

Paso 1: Bienvenida

En este paso se te da la bienvenida al asistente y se te indica que cierres todos los programas aplicativos antes de iniciar dicha instalación:

En realidad eso de cerrar las aplicaciones no es tan necesario (aplicaba para versiones anteriores de Windows) pues hoy en día yo desde que tenía windows Xp he instalado muchos programas en Windows que también indican que cierres y se instalan y funcionan sin problemas. Pero por si las dudas si gustas tú puedes cerrarlas. Da click en el botón Next (siguiente) para pasar al siguiente paso de instalación.

Paso 2: Aceptar el acuerdo de licencia

Esta pantalla del asistente te muestra el acuerdo de licencia, léelo; en resumen te indica los términos y condiciones a los que te sometes si usas el programa. Apache Tomcat es un Software libre de código abierto que se distribuye bajo la licencia de Apache. Así que no creo que tengas mucho de qué preocuparte al usar este Software. No digo que no lo hagas, si es tu deseo, hazlo:

Si estas de acuerdo, da click en el botón I Agree (Si Acepto) para aceptar el acuerdo de licencia y pasar al siguiente paso.

Paso 3: Elegir los componentes a instalar

Este paso te permite indicar los componentes de Apache Tomcat que deseas instalar, algunos son opcionales, te recomiendo que dejes los que están marcados por defecto pues creo que si tienen utilidad, por ejemplo la opción ‘Start Menu Items’ te crea unos accesos directos en el Menú inicio para que desde ahí puedes abrir Tomcat en caso de que no los programes con ejecución automática (cada vez que se enciende la computadora).

La opción Documentation. Te copia la documentación de Tomcat en la carpeta de instalación (mas adelante indicaremos donde se instalara). Por cierto, la documentación te recomiendo que la instales y que la leas pues es muuy buena. Muchas veces instalamos un programa y nos ponemos a buscar tutoriales y videos, etc. acerca del uso del programa sin revisar la documentación de los creadores del programa (la oficial), no hay nada mejor que la doc. oficial de un programa para aprender a usarlo. Así que deja de buscar por otros lados tutoriales, manuales y primero que nada revisa esta documentación que aunque esta en inglés es muy útil.
La opción Manager: Instala una aplicacion Web para administrar Tomcat.
La opción Examples: Instala ejemplos de Servlets y JSPs.

Selecciona los componentes que desees y da click al botón Next para ir al siguiente paso del asistente.

Paso 4: Nombre del servicio y login del administrador


En este paso puedes configurar varias cosas, te recomiendo dejarlas como están, te explico algunas opciones:
Windows Service Name. El instalador automáticamente te crea un servicio para que al encender la PC te arranque Apache tomcat. Esta opción te permite especificar el nombre de dicho servicio de Windows. En la imagen se observa que a este servicio le asigne el nombre contenedor_tomcat7. Más adelante explicare como configurar este servicio para que no arranque Tomcat de forma automática.

En la sección Tomcat Administrator Login (optional):
User name: Aquí puedes especificar el nombre de usuario del administrador de tomcat y en la caja de texto password especificas la contraseña de dicho usuario.
Roles: Te permite especificar el rol del usuario, te recomiendo dejar el que esta por defecto (manager-gui) ya que ese te permite accesar a la aplicación web para administrar Tomcat. Da click en el boton Next para avanzar al siguiente paso.

Paso 5: Eleccion del Java Runtime Environment (JRE)


Como decía al inicio, Tomcat te permite la ejecución de tecnologías Servlets y JSPs, por lo tanto necesita de una Máquina Virtual de Java (JVM), en este paso debes elegir la ruta de instalación de una JVM. El instalador de Apache Tomcat por defecto ya trae un JRE que usa para ejecutar el servicio de Windows, pero el también usa el registro de Windows para determinar la ruta base de Java o JRE que pudiéramos tener preinstalados.

A menos que sepas donde esta una versión mas reciente, te recomiendo que dejes la ruta tal y como esta des click en el botón Next para ir al siguiente paso.

Paso 6: Ruta de instalacion de Apache Tomcat


En este paso debemos elegir una carpeta donde se instalara Apache Tomcat. Cabe mencionar que constantemente en tutoriales, manuales, libros, etc. encuentres muchas referencias la palabra $CATALINA_HOME. Ésta representa la carpeta de instalación de tomcat, independientemente si es Linux o Windows.

A menos que tengas poco espacio en disco o quieras instalarlo en otro lugar especifico, te recomiendo que dejes la ruta predeterminada y des click al botón install para iniciar la copia de los archivos del instalador al disco duro.

Copia de los archivos de Apache Tomcat

Despues de dar click al boton install veras una pantalla similar a la siguiente; en la cual se observa el progreso de la copia de archivos, creacion del servicio, etc.

Una vez que el instalador ha terminado de copiar los archivos te muestra la siguiente pantalla en la cual se te indica que ha sido completado el asistente de instalación de Apache Tomcat:

Además, te da la opción de arrancar Apache Tomcat (inicia el servicio de windows) y/o leer el archivo léame que contiene información sobre la versión instalada. Si eliges iniciar Tomcat te mostrara una barra de progreso

y si no hay ningún problema mostrara un nuevo icono en la bandeja del sistema de Windows (en mi caso Windows 7):

Desde este icono podrás configurar el inicio del servicio de Windows (Opción Configure…, ficha General, Opción Statup type).

Una vez que ya tenemos instalado e iniciado el servicio, podemos abrir el navegador y escribir la dirección http://localhost:8080/ para verificar la instalación:

Si al hacerlo, te muestra la pantalla anterior; la instalación fue exitosa y ya puedes empezar a escribir tus WebApps (Aplicaciones web), sino, que es muy poco probable vuelve realizar los pasos o déjame un comentario con una descripción del problema y en cuanto vea tu mensaje y tenga tiempo te contesto.

Desinstalacion de Apache Tomcat (Windows)

Si por alguna razon extraña ya no deseas tener instalado Apache Tomcat en tu computadora, para desinstalarlo;

  • En el Panel de control->Programas y características buscas Apache Tomcat y los desinstalas.
  • Asegúrate de que no tengas iniciado el servicio de Apache Tomcat (con el boton de la bandeja del sistema) y borra la carpeta de instalación de Tomcat (paso 6).
  • Listo, quedo desinstalado.

Despedida

Eso es todo sobre la instalación de Apache Tomcat, mas adelante explicare como crear tu primera aplicación web y ejecutarla en Apache Tomcat. Espero que te haya gustado y sobre todo que te sirva. Te invito a que me dejes un comentario si te gusto el tutorial.

Hasta pronto, saludos

Servlet que muestra en el navegador contenido de tabla MySQL y realiza busquedas

Creo que el titulo de la entrada lo dice todo, pero bueeno; A continuacion quiero mostrar como se despliega en el navegador el contenido de una tabla de MySQL a travez de un Servlet. Ademas, este ejemplo muestra una manera muy sencilla de realizar la busqueda de un registro en particular en base al contenido de alguno de los campos de la tabla. Anteriormente mostre el clasico Hola Mundo en version Servlet y ahora quiero mostrar algo mas util que pueda servir para adaptarlo a algun proyecto.

y como mencione en la anterior entrada del Servlet del hola mundo, vuelvo a repetir …Aca en mi otro blog hice un sencillo manual sobre como se instala y se configura Apache Tomcat. Y otra cosa, sino sabes nada de Servlets te recomiendo leer algo introductorio respecto al tema, por que aqui solo muestro el codigo sin practicamente nada de teoria de Servlets pues doy por hecho que ya sabes algo basico sobre el tema.

Yo en mi caso tengo en mi lap:
Version de la JVM: jdk1.6.0_23
Version de Apache: tomcat-6.0.29
Kernel de ubuntu: 2.6.35-27 (10.10)
Arquitectura del equipo: x86
Ruta de instalacion de Apache tomcat: /usr/local/apache-tomcat-6.0.29

En este ejemplo el nombre de la BD a usar es agenda y el nombre de la tabla es contactos (como se ve en el codigo, metodo conectarBD() ). A continuacion muestro la estructura de la tabla contactos:

Estructura de la tabla contactos

Estructura de la tabla contactos

Bueno sin mas preambulos y por que en el codigo se explica casi todo a continuacion muestro el codigo del ejemplo:

/*
          Instituto Tecnologico de Zacatepec
Descripcion: Servlet que muestra muestra en el navegador el contenido de 
            una tabla MySQL y realiza busquedas de registros en la misma.
Author:      Gonzalo Silverio  gonzasilve@gmail.como
Archivo:     ListarContactos.java
Compilar con:  javac ListarContactos.java
*/

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;

//Para manejo de BD
import java.sql.*;

public class ListarContactos extends HttpServlet
{
	private static Connection connBD = null;
	Statement estSQL;
	ResultSet rs;
	String estadoPagina =  "nada" ;	//no llega ningun parametro en la URL
	
    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException
    {
        response.setContentType("text/html");        
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Agenda gonzasilve</title>");        
        response.addHeader("Pragma","no-cache");
        out.println("</head>");
        out.println("<body>");
        out.println("<br> <h1 align='center'> gonzasilve's Directorio de contactos! </h1> <br><br> ");
        //Formulario que se llama a si mismo para realizar las busquedas
        out.println("<form action='http://localhost:8080/ListarContactos' method='GET'> ");
        //Los campos de busqueda se muestran en una tabla independiente
        out.println("<table align='center' width='40%' border='0' >  ");
        out.println("<tr>");
        out.println("<td> <b> Buscar un contacto </b> </td>");
        out.println("<td> <input type='text' size='30' maxlength='30' name='txt_buscado'>  </td> ");
        out.println("<td>");
        out.println("<select name='campos'> ");
        out.println("<option value='id'>ID</option> ");
        out.println("<option value='nombre' selected >Nombre</option> ");
        out.println("<option value='correo'>Correo</option> ");
        out.println("<option value='tel'>Telefono</option> ");
        out.println("</select> ");
        out.println(" <input type='hidden' name='sts' value='buscar'> ");
        out.println("</td>");
        out.println("<td>");
        out.println(" <input type='submit' name='buscar' value='Buscar'> ");
        out.println("</td>");
        out.println("</tr>");
        out.println(" </table> ");  //Fin de campos de busqueda
        out.println("</form> ");
        out.println("<center>");
        out.println(" <b> <FONT color=:#0033FF> ");
        
        try
        {     //Obtener el estado (status-->sts)
          estadoPagina =  request.getParameter("sts");
          if(estadoPagina == null)
            estadoPagina="nada";
          //En caso de que el usuario pulso en el boton buscar
          if( estadoPagina.equals("buscar" ) )
                out.println("El registro buscado, si es encontrado sera marcado con color rojo.");
        }
        catch( Exception exx )
        {
           exx.printStackTrace();
        }
        
        //Desplegar los datos del registro actual en el navegador
        out.println(" </FONT> </b> <br> </center> ");
        out.println("<br> ");
        out.println("<table align='center' width='90%' border='1' cellpadding='0' cellspacing='0'>  ");
        out.println("<tr> ");
        out.println("<td> ");
        out.println("<table width='100%' align='center' border='0' cellpadding='0' cellspacing='0'> ");
        out.println(" <tr bgcolor='#CCFF66' >");
        //Columnas de la tabla de la BD
        out.println("<td align='center width='3%' > <b> ID </b> </td>  ");
        out.println("<td align='left' width='25%' > <b> Nombre </b> </td> ");
        out.println("<td align='center' width='20%' > <b> Correo </b> </td>  ");
        out.println("<td align='center' width='12%'> <b> Telefono </b> </td>  ");
        out.println("<td align='center' > <b> Fotografia </b> </td>  ");
        out.println(" </tr>");
        int i=0, idContacto=0;
        String cmp_DondeBuscar,txt_Buscado;
        try
        {
        	conectarBD();
        	rs = estSQL.executeQuery("SELECT * FROM contactos");
	        while( rs.next() )    //Mientras haya una sig. tupla
	        {     // en caso de que el estado sea buscando
	        	if( estadoPagina.equals("buscar" ) )
	        	{
              //Obtener el campor x el que se va a buscar
	        		cmp_DondeBuscar = 	String.valueOf( request.getParameter("campos") );
              //Obtener el texto a buscar
	        		txt_Buscado		=	String.valueOf( request.getParameter("txt_buscado") ).toLowerCase();
                //Si se indico buscar x ID
	        		if( cmp_DondeBuscar.equals("id") )
	        		{
	        			idContacto = Integer.parseInt( txt_Buscado );
	        			if( idContacto == rs.getInt("id") )
		            		out.println(" <tr bgcolor='red'>");
	        		}   //Si se indico buscar x nombre
	        		else if( cmp_DondeBuscar.equals("nombre")  )
	        		{	        			
	        			if( txt_Buscado.equals( rs.getString("nombre").toLowerCase() ) )
		            		out.println(" <tr bgcolor='red'>");
	        		}     //Si se indico buscar x correo
	        		else if( cmp_DondeBuscar.equals("correo")  )
	        		{	        			
	        			if( txt_Buscado.equals( rs.getString("correo").toLowerCase() ) )
		            		out.println(" <tr bgcolor='red'>");
	        		}     //Si se indico buscar x telefono
	        		else if( cmp_DondeBuscar.equals("tel")  )
	        		{	        			
	        			if( txt_Buscado.equals( rs.getString("tel").toLowerCase() ) )
		            		out.println(" <tr bgcolor='red'>");
	        		}
	        		 
	        	}
	        	else
	        	{           //Para alternar entre dos colores diferentes de fila
		        	if( i%2==0 )
		            	out.println(" <tr bgcolor='#CCCCFF'>");
		            else
		            	out.println(" <tr bgcolor='#EEEEEE'>");
	        	}
              //Mostrar los datos del registro actual en el navegador
            out.println(" <td>"+ rs.getInt("id")+" </td>");
            out.println(" <td>"+ rs.getString("nombre")+"</td>");
            out.println(" <td>"+ rs.getString("correo")+"</td>");
            out.println(" <td>"+ rs.getString("tel")+"</td>");
            out.println(" <td>"+ rs.getString("fotografia")+"</td>");
            out.println(" </tr>");
            i++;
	        } //Fin de while que recorre tuplas
        	
        }
        catch( SQLException sqlex )
        {
        	out.println(" 3rror al conectar en la pagina principal");
        	sqlex.printStackTrace();
        }
       	
        out.println("</table>");
        out.println("</td> ");
        out.println("</tr> ");
        out.println("</table>");
        out.println("<br><br>");
        out.println("</body>");
        out.println("</html>");
    }
    
    //Conectar con MySQL y devuelve true solo en caso de que
    //Se haya obtenido una conexion a la BD especificada
    public boolean conectarBD() throws SQLException
    {
      	try
		{
      //seleccionar el driver
			Class.forName("com.mysql.jdbc.Driver");
      //especificar datos de conexion
			connBD = DriverManager.getConnection("jdbc:mysql://localhost/agenda","root","12345");
			estSQL = connBD.createStatement();
      //Verificar si se obtuvo la conexion correctamente
			if (connBD == null )
				return false;   //No se pudo conectar
			return true;
		}
		catch ( SQLException e )
		{
			System.out.println("ERROR: 3xcepcion al conectar la BD ");
			return false;
		}
		catch( Exception es )
		{
			System.out.println("ERROR: 3xcepcion al conectar la BD ");
			return false;
		}
    }
}

Como se observa la clase del Servlet se llama ListarContactos; no olvidar dar de alta a este Servlet en el archivo /usr/local/apache-tomcat-6.0.29/webapps/ROOT/WEB-INF/web.xml. Para dar de alta este servlet basta con agregar las siguientes lineas a dicho archivo:

	<!-- SERVLET QUE LISTA Y BUSCA REGISTROS DE UNA TABLA -->
	<servlet>
		<servlet-name>ListarContactos</servlet-name>
		<servlet-class>ListarContactos</servlet-class>
	</servlet>

	<!-- Standard Action Servlet Mapping -->
	<servlet-mapping>
		<servlet-name>ListarContactos</servlet-name>
		<url-pattern>/ListarContactos</url-pattern>
	</servlet-mapping>

Y a continuacion muestro un pantallazo de la compilacion de este Servlet en la consola:

Compilacion del Servlet que lista contactos de tabla MySQL

Compilacion del Servlet que lista contactos de tabla MySQL

Ahora el Servlet en ejecucion en el navegador Firefox (disfrazado un poco):

Servlet que lista registros de tabla contactos MySQL

Servlet que lista registros de tabla contactos MySQL

Pantallazo donde se esta buscando un registro:

Servlet mostrando un contacto encontrado

Servlet mostrando un contacto encontrado

Es todo, espero comentarios sobre dudas, sugerencias o criticas constructivas, ya sabes si quieres el .java basta con dejar tu mail. Hasta pronto y gracias por pasar por aqui. see you :p

Servlet Hola Mundo!

Antes que cualquier cosa, quiero que sepas que si quieres ejecutar este ejemplo de servlet en tu computadora debes tener instalado Apache Tomcat, aca en mi otro blog hice un manual sobre como se instala y se configura Apache Tomcat. Y otra cosa, sino sabes nada de Servlets te recomiendo leer algo introductorio respuesto al tema, por que aqui solo muestro el codigo sin nada de teoria.

Yo en mi caso tengo en mi compu:
Version de la JVM: jdk1.6.0_20
Version de Apache tomcat-6.0.29
Kernel de ubuntu: 2.6.31-22
Arquitectura del equipo: i686
ruta de instalacion de Apache tomcat: /usr/local/apache-tomcat-6.0.29/

la verdad al momento de escribir esto ando aqui medio aburridon y pues se ocurrio repasar algo de servlets, quiero dejar el clasiquisimo Hola Mundo en Version Servlet. Aca el codigo muy sencillo:

/*
                   Instituto Tecnologico de Zacatepec
Descripcion: Servlet que muestra el clasico Hola Mundo.
Author:      Gonzalo Silverio  gonzasilve@gmail.como
Fecha:        12/08/2010
Archivo:     HolaMundo.java
Compilar con:  javac HolaMundo.java
*/

import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class HolaMundo extends HttpServlet
{
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws IOException, ServletException
    {
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Clasico Hola mundo!</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Hola mundo de servlets!</h1>");
        out.println("</body>");
        out.println("</html>");
    }
}

A continuacion la compilacion del codigo en una terminal de ubuntu:

Compilacion de servlet HolaMundo

Compilacion de servlet HolaMundo

Antes de abrirlo en el navegador no olvidar dar de alta este servlet en el archivo web.xml, es decir, darlo de alta en el archivo /usr/local/apache-tomcat-6.0.29/webapps/ROOT/WEB-INF/web.xml, agregando estas lineas:

	<!-- SERVLET DE HOLA MUNDO -->
	<servlet>
		<servlet-name>HolaMundo</servlet-name>
		<servlet-class>HolaMundo</servlet-class>
	</servlet>

	<!-- Standard Action Servlet Mapping -->
	<servlet-mapping>
		<servlet-name>HolaMundo</servlet-name>
		<url-pattern>/HolaMundo</url-pattern>
	</servlet-mapping>

ahora si voi a mostrarlo ejecutandose en Firefox de ubuntu (jejeje, un poco disfrazado):

Servlet HolaMundo ejecutandose.

Servlet HolaMundo ejecutandose.

bueno despues seguire subiendo mas cosas de Servlets, pues me llaman mucho la atencion, espero te sirva si eres novato como yo.

bye