Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/03/2016, 09:23
frony
 
Fecha de Ingreso: enero-2005
Mensajes: 95
Antigüedad: 19 años, 11 meses
Puntos: 0
Pregunta Duda sobre como implementar MVC ..El Controlador

Hola amigos.
luego de leer los fantásticos tópicos que hay aquí,como invitado,me anime a preguntar,ya que veo una gran experiencia en la comunidad. Quisiera salir de la ignorancia sobre como se utiliza el patrón MVC cuando se trabaja con Java,específicamente aplicaciones de escritorio.
He visto bastantes videotutoriales en Youtube sobre como se utiliza MVC en Java,pero la duda que me queda es como usar el controlador para "conectar" el modelo y la parte gráfica(solo he usado MVC en PHP).
Tengo tres paquetes:<strong>modelo,vista y controlador</strong>. el modelo lo he subdividido en dos paquetes uno para la parte de la persistencia(modelo.dao) y otro donde solo tengo las entidades con sus métodos accesores(modelo.vo). La distribución de las clases en los paquetes me queda asi

modelo.vo:Estudiante
modelo.dao:EstudianteDao
controlador:De momento sin ninguna clase
vista:AlumnoVentana
Ademas de una clase conexion,para crear la conexión al gestor de base de datos y poder realizar las consultas a través de las clases DAO.

Este es el código de cada clase

Conexion.Java
Código:
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package modelo;

import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 *
 * @author ASUS
 */
public class Conexion {
    private final String usuario="root";
    private final String password="CXT982mw";
    private final String url="jdbc:mysql://localhost:3306/bd";
    private Connection con;
    
    public Conexion() {
        try {
            Class.forName("com.mysql.jdbc.Driver");
            con=DriverManager.getConnection(url,usuario,password);
            System.out.println("Conexion realizada con exito!");
        } 
        catch(ClassNotFoundException e){
            System.out.println("No se entro el Driver: "+e);
        }
        catch(SQLException e){
            System.out.println("No se pudo realizar la conexion: "+e);
        }
        catch (Exception e) {
            System.out.println("Error: "+e);
        }
    }
    
    //Devuelve la cadena de conexion
    public Connection getConexion(){
        System.out.println("Enviando conexion");
        return con;
    }
    //Cerrar la conexion a la BD
    public void cerrarConexion(){
        try {
            if(con!=null){
                con.close();
                System.out.println("Conexion cerrada con exito!");
            }
            else{
                System.out.println("La conexion no existe.");
            }
        } catch (Exception e) {
            System.out.println("No se pudo cerrar la conexion");
        }
    }
}
EstudianteDao.java

Código:
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package modelo.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import modelo.Conexion;
import modelo.vo.Estudiante;

/**
 *
 * @author ASUS
 */
public class EstudianteDao {
    private Conexion conexion=new Conexion();
    /**
     * Insertar un Estudiante en la BD
     * @param est 
     */
    public void insertar(Estudiante est){
        //obteto del tipo Connection para hacer ejecutar las querys a la BD.
        Connection con=conexion.getConexion();
        String sql="INSERT INTO expedientealumno(carnet,codcarrera,nombres,apellido1,apellido2,apellcasad,edad,nui)"
                + " VALUES(?,?,?,?,?,?,?,?)";
        
        try {
            PreparedStatement pst=con.prepareStatement(sql);
            pst.setString(1, est.getCarnet());
            pst.setString(2, est.getCodigoCarrera());
            pst.setString(3, est.getNombres());
            pst.setString(4, est.getPrimerApellido());
            pst.setString(5, est.getSegundoApellido());
            pst.setString(6, est.getApellidoCasada());
            pst.setInt(7, est.getEdad());
            pst.setString(8, est.getNui());
            if (pst.executeUpdate()>0) {
                System.out.println("registro insertado con exito");
            } 
            
        } catch (SQLException e) {
            System.out.println("No se pudo insertar el registro: "+e);
        }
        catch(Exception e){
            System.out.println("Ocurrido el siguiente error: "+e);
        }
        finally{
            conexion.cerrarConexion();
        }
    }
    
}
Estudiante.java

Código:
/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package modelo.vo;

/**
 *
 * @author ASUS
 */
public class Estudiante {
    private String carnet;
    private String codigoCarrera;
    private String nombres;
    private String primerApellido;
    private String SegundoApellido;
    private String apellidoCasada;
    private int edad;
    private String nui;

    /**
     * Constructor por defecto
     */
    public Estudiante() {
    }
    /**
     * Constructor con parametros estudiante.
     * @param carnet
     * @param codigoCarrera
     * @param nombres
     * @param primerApellido
     * @param SegundoApellido
     * @param apellidoCasada
     * @param edad
     * @param nui 
     */
    public Estudiante(String carnet, String codigoCarrera, String nombres, String primerApellido, String SegundoApellido, String apellidoCasada, int edad, String nui) {
        this.carnet = carnet;
        this.codigoCarrera = codigoCarrera;
        this.nombres = nombres;
        this.primerApellido = primerApellido;
        this.SegundoApellido = SegundoApellido;
        this.apellidoCasada = apellidoCasada;
        this.edad = edad;
        this.nui = nui;
    }
    
    //Inicio metodos accesores

    public String getCarnet() {
        return carnet;
    }

    public void setCarnet(String carnet) {
        this.carnet = carnet;
    }

    public String getCodigoCarrera() {
        return codigoCarrera;
    }

    public void setCodigoCarrera(String codigoCarrera) {
        this.codigoCarrera = codigoCarrera;
    }

    public String getNombres() {
        return nombres;
    }

    public void setNombres(String nombres) {
        this.nombres = nombres;
    }

    public String getPrimerApellido() {
        return primerApellido;
    }

    public void setPrimerApellido(String primerApellido) {
        this.primerApellido = primerApellido;
    }

    public String getSegundoApellido() {
        return SegundoApellido;
    }

    public void setSegundoApellido(String SegundoApellido) {
        this.SegundoApellido = SegundoApellido;
    }

    public String getApellidoCasada() {
        return apellidoCasada;
    }

    public void setApellidoCasada(String apellidoCasada) {
        this.apellidoCasada = apellidoCasada;
    }

    public int getEdad() {
        return edad;
    }

    public void setEdad(int edad) {
        this.edad = edad;
    }

    public String getNui() {
        return nui;
    }

    public void setNui(String nui) {
        this.nui = nui;
    }
    //Fin metodos accesores

}
AlumnoVentana.java





De esta clase no coloco el codigo por que es el que me genera netbeans,pero allí no he colocado ningún otro código,lo único que hice(como vi en los vídeos de youtube) fue dejar todos los campos y botones como publico..aun que no se si es correcto.

he probado cada clase pro separado y funciona...Pero en el controlador es donde tengo la gran interrogante. como conecto la vista y el modelo? es a través del constructor? que debería enviar de la vista y el modelo? en algunos vídeos lo hacen mas o menos asi:


Código:
public controlado(Vista v, Modelo m){

}
pero en otros vídeos que vi crean otra clase,que contiene el metodo main, alli instancian el modelo,la vista y el controlador . De lo que he programado con MVC, tengo un poco de experiencia en PHP, y cuando lo hacia era en el controlador que creaba la instancia del modelo (dao y vo) y una vez obtenía el resultado ese lo enviaba a la vista,la cual trabajaba con un sistema de plantilla.

Pero en Java me pierdo :( y ya que estoy aprendiendo quisiera hacerlo de la mejor forma posible, les agradecería de mucho su orientación al respecto.
__________________
customsmf
Seo,tutoriales,decargas