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

Anuncios

Acerca de gonzasilve
Freelance Web Developer.

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

  1. jesis says:

    enviamelo xfa

    jesus_pl_16@hotmail.com

  2. gabriela says:

    excelente. gabriela.moreno479@gmail.com

  3. gabriela says:

    Excelente gabriela.moreno479@gmail.com

  4. LeonardoLoz says:

    genial pero la base de datos donde esta me lo podrias enviar a este correo
    mil gracias mleonardo.lozdac@gmail.com

  5. Edgar says:

    Excelente material, gracias por compartir

  6. me lo `puedes enviar a este correo jc_amg95@hotmail.com

  7. david says:

    perfecto serias tan amable de enviarmelo; daviddanyan@gmail.com

  8. Jason says:

    excelente.. serias tan amable de enviarmelo. jcamarenom20@gmail.com

  9. ADAN ELIUTH FIGUEROA ZAYAS says:

    Excelente me lo puedes enviar porfa nada_fiz92@hotmail.com

  10. ADAN ELIUTH FIGUEROA ZAYAS says:

    exccelentte nada_fiz92@hotmail.com

  11. karivo says:

    buenisimo porfa al correo karivo_4@hotmail.com

  12. Ed says:

    Buenisimo… justo ahora estoy en eso unlimits.zk@gmail.com

  13. Lizbeth says:

    Excelente me puedes enviar porfa el código a mi correo l.pineda@outlook.com

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: