Clase 2 Login MVC BD MySQL
Proyecto: Login en Java con NetBeans y MySQL
usando MVC
Requisitos
NetBeans IDE
MySQL (puede ser a través de XAMPP o instalado de forma independiente)
Conector JDBC de MySQL ( mysql-connector-java.jar ), descargable desde
MySQL Connector/J.
Paso 1: Configuración de la Base de Datos en MySQL
1. Crear la Base de Datos:
Abre phpMyAdmin en http://localhost/phpmyadmin o usa una terminal MySQL.
Ejecuta el siguiente código SQL para crear la base de datos y la tabla:
CREATE DATABASE loginDB;
USE loginDB;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL
);
INSERT INTO users (username, password) VALUES ('admin',
'12345');
2. Insertar Datos de Prueba:
Clase 2 Login MVC BD MySQL 1
El registro ('admin', '12345') se usará para las pruebas iniciales de login.
Paso 2: Crear el Proyecto en NetBeans
1. Crea un nuevo proyecto:
En NetBeans, selecciona File > New Project y elige Java Application.
Nombra el proyecto LoginApp y desmarca la opción Create Main Class.
2. Añadir el Conector JDBC:
Descarga mysql-connector-java.jar y añádelo a tu proyecto.
Haz clic derecho en Libraries dentro del proyecto, selecciona Add
JAR/Folder, y añade el archivo descargado.
Paso 3: Crear Paquetes y Clases
1. Crea los paquetes:
Crea tres paquetes en el proyecto:
modelo : para clases de datos y conexión a la base de datos.
vista : para la interfaz gráfica de usuario.
controlador : para la lógica de negocio y eventos.
Paso 4: Implementación del Modelo
En el paquete modelo , crea las siguientes clases.
Clase Usuario
Esta clase representa al usuario. Sus atributos son username y password .
package modelo;
// Clase Usuario que representa la estructura de un usuario c
on nombre de usuario y contraseña
public class Usuario {
private String username;
Clase 2 Login MVC BD MySQL 2
private String password;
// Constructor para inicializar los atributos de usuario
public Usuario(String username, String password) {
this.username = username;
this.password = password;
}
// Getters y Setters para acceder y modificar los datos d
e username y password
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
Clase Conexion
Esta clase gestiona la conexión a la base de datos MySQL.
package modelo;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
Clase 2 Login MVC BD MySQL 3
// Clase Conexion que establece la conexión con la base de da
tos MySQL
public class Conexion {
private static final String URL = "jdbc:mysql://localhos
t:3306/loginDB"; // Ruta de la base de datos
private static final String USER = "root"; // Usuario de
MySQL
private static final String PASSWORD = ""; // Contraseña
de MySQL
// Método para obtener la conexión
public Connection getConnection() {
Connection connection = null;
try {
connection = DriverManager.getConnection(URL, USE
R, PASSWORD);
System.out.println("Conexión exitosa.");
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
}
Clase UsuarioDAO
Esta clase gestiona las operaciones en la base de datos para la clase Usuario ,
incluyendo la validación de las credenciales.
package modelo;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
Clase 2 Login MVC BD MySQL 4
// Clase UsuarioDAO que contiene métodos para validar al usua
rio en la base de datos
public class UsuarioDAO {
private Conexion conexion; // Instancia de la clase Conex
ion para gestionar la conexión
public UsuarioDAO() {
this.conexion = new Conexion();
}
// Método para validar si el usuario y la contraseña son
correctos
public boolean validarUsuario(Usuario usuario) {
boolean existe = false;
String sql = "SELECT * FROM users WHERE username = ?
AND password = ?";
try (Connection conn = conexion.getConnection();
PreparedStatement ps = conn.prepareStatement(sq
l)) {
ps.setString(1, usuario.getUsername()); // Establ
ece el valor de username en la consulta
ps.setString(2, usuario.getPassword()); // Establ
ece el valor de password en la consulta
ResultSet rs = ps.executeQuery(); // Ejecuta la c
onsulta y obtiene el resultado
if (rs.next()) {
existe = true; // Si se encuentra el usuario,
existe se vuelve verdadero
}
} catch (SQLException e) {
e.printStackTrace();
}
return existe;
Clase 2 Login MVC BD MySQL 5
}
}
Paso 5: Implementación de la Vista
1. Crear LoginView como un JFrame Form :
Haz clic derecho en el paquete vista y selecciona New > JFrame Form.
Nombra la clase LoginView .
2. Agregar Componentes a LoginView :
Arrastra desde la paleta de NetBeans:
JLabel para "Usuario" y "Contraseña".
JTextField (cambia su nombre a txtUsername ) para el usuario.
JPasswordField (cambia su nombre a txtPassword ) para la contraseña.
JButton (cambia su nombre a btnLogin ) para el botón "Iniciar Sesión".
3. Agregar Getters en LoginView :
Añade estos métodos para que el controlador acceda a los componentes:
public javax.swing.JTextField getTxtUsername() {
return txtUsername;
}
public javax.swing.JPasswordField getTxtPassword() {
return txtPassword;
}
public javax.swing.JButton getBtnLogin() {
return btnLogin;
}
Paso 6: Implementación del Controlador
Clase 2 Login MVC BD MySQL 6
En el paquete controlador , crea la clase LoginController .
package controlador;
import modelo.Usuario;
import modelo.UsuarioDAO;
import vista.LoginView;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
// Clase LoginController que maneja la lógica del botón y val
ida al usuario
public class LoginController {
private LoginView view;
private UsuarioDAO usuarioDAO;
// Constructor que recibe la vista y el modelo para inici
alizar el controlador
public LoginController(LoginView view, UsuarioDAO usuario
DAO) {
this.view = view;
this.usuarioDAO = usuarioDAO;
// Asignar un ActionListener al botón de login
this.view.getBtnLogin().addActionListener(new ActionL
istener() {
@Override
public void actionPerformed(ActionEvent e) {
verificarLogin(); // Llama al método verifica
rLogin cuando se hace clic en el botón
}
});
}
Clase 2 Login MVC BD MySQL 7
// Método para verificar si las credenciales del usuario
son correctas
private void verificarLogin() {
String username = view.getTxtUsername().getText(); //
Obtener el texto del campo usuario
String password = new String(view.getTxtPassword().ge
tPassword()); // Obtener el texto del campo contraseña
// Crear un objeto Usuario con los datos ingresados
Usuario usuario = new Usuario(username, password);
// Validar el usuario con el método de UsuarioDAO
boolean existe = usuarioDAO.validarUsuario(usuario);
// Mostrar mensajes según el resultado de la validaci
ón
if (existe) {
JOptionPane.showMessageDialog(view, "Login exitos
o");
} else {
JOptionPane.showMessageDialog(view, "Usuario o co
ntraseña incorrecta");
}
}
}
Paso 7: Clase Principal
Crea una clase Main para iniciar la aplicación.
import modelo.UsuarioDAO;
import vista.LoginView;
import controlador.LoginController;
public class Main {
Clase 2 Login MVC BD MySQL 8
public static void main(String[] args) {
LoginView view = new LoginView(); // Crear la vista d
e login
UsuarioDAO usuarioDAO = new UsuarioDAO(); // Crear la
instancia del modelo DAO
LoginController controller = new LoginController(vie
w, usuarioDAO); // Crear el controlador y conectar la vista y
el modelo
view.setVisible(true); // Mostrar la vista al usuario
}
}
Actividad para Estudiantes
1. Explora el Patrón MVC: Revisa cómo se usa el patrón MVC en este proyecto y
responde:
¿Cuál es la función de cada clase ( Usuario , UsuarioDAO , LoginView ,
LoginController )?
¿Por qué la lógica de login está en el controlador y no en la vista?
2. Modifica el Proyecto
Agrega un nuevo mensaje si el usuario intenta ingresar sin completar los
campos.
1. Reflexiona sobre Seguridad:
¿Qué problemas de seguridad existen en este sistema de login?
Investiga cómo mejorar la seguridad de almacenamiento de contraseñas
en bases de datos.
Clase 2 Login MVC BD MySQL 9