Menú Curso Java Web (JSP's/Servlets) : Código Fuente LogonAction.java utilizado para registro a través de "Struts".

(Anterior) "Struts"
Vea el CODIGO FUENTE de LogonForm.java

Código Fuente LogonAction.java

package com.osmosislatina.struts;

import javax.servlet.http.*;
import org.apache.struts.action.*;
import java.sql.*;
import javax.sql.*;
import javax.naming.*;

public class LogonAction extends Action { 

 
public ActionForward execute(ActionMapping mapping,
			      ActionForm form, 
			      HttpServletRequest request, 
			      HttpServletResponse response)

{ // Generar/Actualizar valores del Java Bean LogonForm laForma = (LogonForm) form; // Extrear la contrsena y correo electronico del Java Bean String email = laForma.getEmail(); String passwd = laForma.getPassword(); // Definir variables para los datos extraidos de la Base de Datos String emailEnDB; String passwdEnDB; // Definir referencias para conexion a Base de Datos DataSource pool = null; Connection conn = null;
 

	try {

            // Traer el Contexto JNDI
	    Context initContext = new InitialContext();
	    Context ctx  = (Context)initContext.lookup("java:/comp/env");
	    
	    // Extraer Conexion del Contexto JNDI
	    dataSource = (DataSource) ctx.lookup("jdbc/ConexionMySQL");
	    conn = dataSource.getConnection();
	    
	    String sql_busca = "select * from CURSOJSP_STRUTS where email = ?";
	    
	    PreparedStatement statement = conn.prepareStatement(sql_busca);
	    statement.setString(1,email);
	    
	    ResultSet result = statement.executeQuery();
	    boolean rs = result.next();
	    if (rs) 	 
		{ 
		    // Si existe el usario colocar valores de la Base de Datos 
		    // en Variables
		    emailEnDB =  result.getString(1);
		    passwdEnDB = result.getString(2);
		} else { 
		    // Enviar Usuario pagina de Error
		    return mapping.findForward("rechazo");		    
		}
	} catch (SQLException exc) {
	    getServlet().log(" Ocurrió un error en la Base de Datos al realizar una busqueda", exc);
	    return mapping.findForward("rechazo");
	} catch  (NamingException exc)  { 
	    getServlet().log(" Ocurrió un error en Contexto JNDI", exc);
	    return mapping.findForward("rechazo");
	    
        } finally { 
      	   // Cerrar Conexion
	   try { 
        	conn.close();	
           } catch (Exception exc) { 
	        getServlet().log(" Ocurrió un error al intentar cerrar conexion hacia la Base de Datos", exc);	    
	   } 
       }



	// Revisar si el correo electronico y contraseña de la Base de Datos
	// coincide con aquellas proporcionadas por el usuario
	
	if (email.equals(emailEnDB) && passwd.equals(passwdEnDB))
	    { 
		
		// Si la contraseña y correo electronico son apropiados
		// enviar respuesta "exito"
		return mapping.findForward("exito");
	    } 
	else 
	    { 
		// Si la contrseña y correo son incorrectos
		// enviar respuesta "rechazo"
		return mapping.findForward("rechazo");
	    } 
    

} }

  • Primeramente se define la librería ("package") a la cual pertenecerá la Clase com.osmosislatina.struts.

  • Posteriormente se importan las librerías que serán utilizadas por la Clase , se hace uso de las conocidas Clases HttpServletRequest y HttpServletResponse (javax.servlet.http.*) presentes en todo Servlet así como las Clases de la librería Struts ( org.apache.struts.action.* ), las respectivas Clases para interactuar con Bases de Datos (java.sql.* y javax.sql.*) y javax.naming.* para localizar recursos JNDI.

  • La Clase hereda ("inherit") de la Clase Action proporcionada por Struts, esto permite acceder al funcionamiento definido en esta Clase Base diseñada para uso con Struts.

  • Así como el método service() es parte central de un Servlet, el método execute() forma parte central en Clases del tipo Action (Struts). Dicho método toma como parámetros de entrada:

    • Un Objeto del tipo ActionMapping que permite el redireccionamiento hacia determinados puntos definidos en Struts.

    • Un Objeto ActionForm que contiene el Java Bean utilizado para transportar datos en Struts.

    • Un Objeto HttpServletRequest y otro HttpServletResponse que representan las solicitudes de entrada y salida, de la misma manera que un Servlet.

  • El primer paso dentro del método execute() es extraer el Java Bean que reside dentro del Objeto ActionForm, nótese que al momento de extraerlo se debe realizar un Casting explicito hacia la Clase del Java Bean, en este caso LogonForm.

  • Posteriormente se definen variables para representar los datos extraídos de la Base de Datos así como los elementos de conexión en sí para la Base.

  • Se inicia un bloque try/catch/finally donde se realiza una búsqueda en la Base de Datos por el usuario solicitado; aquí se puede notar que la conexión es extraída a través de una búsqueda JNDI y la búsqueda a través de un PreparedStatement tal y como se realizó en los ejemplos anteriores de Bases de Datos .

  • Una vez obtenidos los resultados de la Base de Datos, se define una condicional para revisar los valores con aquellos proporcionados por el usuario.

  • En base al resultado de validación descrito anteriormente se utiliza el método findForward del Objeto mapping para redireccionarse la solicitud hacia el nombre : exito o rechazo , dichos nombres representan aquellos definidos en la sección de forwards globales en el archivo de configuración para Struts : struts-config.xml.

Terminos Legales de Contenido ©2000-2011 Osmosis Latina

Diseñado bajo estándares : XHTML   CSS  

webmaster@osmosislatina.com