Skip to content

About

Campus virtual en Java con Servlets, JSP y MySQL: registro, inicio de sesión, cambio de contraseña y eliminación de cuenta. Proyecto final de Programación 2 (UMG, 2024).

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CampusLoginApp

Java Servlets y JSP Apache Tomcat MySQL NetBeans

Aplicación web de campus virtual construida con Java, Servlets y JSP que cubre el ciclo de vida completo de una cuenta de usuario: registro, inicio de sesión, cambio de contraseña y eliminación de la cuenta, con los datos guardados en MySQL.

Proyecto final del curso Programación 2 en la Universidad Mariano Gálvez de Guatemala (2024).

Funcionalidades

  • Registro de usuarios con nombre de usuario, correo electrónico y contraseña. La base de datos impide nombres de usuario repetidos.
  • Inicio de sesión que valida las credenciales contra MySQL y guarda al usuario en una sesión HTTP.
  • Página de bienvenida personalizada con el nombre de usuario y el correo.
  • Cambio de contraseña, que solo se aplica si la contraseña anterior es correcta.
  • Eliminación de cuenta con confirmación por contraseña; al completarse, la sesión se cierra.
  • Mensajes de error en cada formulario y aviso de éxito al cambiar la contraseña.

Cómo funciona

Cada formulario JSP envía una petición POST a un servlet. El servlet consulta la base de datos mediante la clase DBConnection y redirige a la página que corresponde según el resultado.

flowchart LR
    index["index.jsp<br/>Inicio de sesión"] -->|POST| login[LoginServlet]
    index --> register["register.jsp<br/>Registro"]
    register -->|POST| reg[RegisterServlet]
    login -->|credenciales válidas| welcome["welcome.jsp<br/>Bienvenida"]
    welcome --> change["change_password.jsp"]
    welcome --> delete["delete_account.jsp"]
    change -->|POST| cps[ChangePasswordServlet]
    delete -->|POST| das[DeleteAccountServlet]
    login --> db[("MySQL<br/>campus.users")]
    reg --> db
    cps --> db
    das --> db
Loading
Ruta Qué hace Consulta
/RegisterServlet Crea la cuenta y redirige al inicio de sesión INSERT INTO users (username, email, password) ...
/LoginServlet Valida las credenciales y guarda usuario y correo en la sesión SELECT * FROM users WHERE username = ? AND password = ?
/ChangePasswordServlet Cambia la contraseña si la anterior coincide UPDATE users SET password = ? WHERE username = ? AND password = ?
/DeleteAccountServlet Elimina la cuenta tras confirmar la contraseña y cierra la sesión DELETE FROM users WHERE username = ? AND password = ?

Aspectos técnicos

  • Consultas parametrizadas con PreparedStatement en todas las operaciones, lo que evita la inyección SQL.
  • Separación por capas: vistas en JSP, lógica en servlets y acceso a datos centralizado en DBConnection.
  • try-with-resources para cerrar la conexión a la base de datos automáticamente.
  • Mapeo declarativo de los servlets en web.xml.

Estructura del proyecto

CampusLoginApp/
├── database/
│   └── schema.sql                 # Tabla users
├── src/java/com/campus/
│   ├── db/DBConnection.java       # Conexión JDBC a MySQL
│   └── servlets/                  # Registro, login, cambio de contraseña y baja
├── web/
│   ├── *.jsp                      # Vistas
│   ├── css/styles.css             # Estilos
│   └── WEB-INF/web.xml            # Mapeo de servlets
├── nbproject/                     # Configuración del proyecto NetBeans
└── build.xml                      # Script de compilación Ant

Cómo ejecutarlo

Requisitos

  • JDK 23 o superior
  • Apache Tomcat 9
  • MySQL
  • MySQL Connector/J 9.1.0
  • Apache NetBeans con soporte para aplicaciones web Java

Pasos

  1. Crea la base de datos y el usuario que usa la aplicación:

    CREATE DATABASE campus;
    CREATE USER 'sql'@'localhost' IDENTIFIED BY '1234';
    GRANT ALL PRIVILEGES ON campus.* TO 'sql'@'localhost';

    Si prefieres otro usuario o contraseña, cámbialos en src/java/com/campus/db/DBConnection.java.

  2. Crea la tabla:

    mysql -u sql -p campus < database/schema.sql
  3. Abre el proyecto en NetBeans (File → Open Project).

  4. Si NetBeans avisa de referencias faltantes, haz clic derecho sobre el proyecto, elige Resolve Project Problems e indica la ubicación de mysql-connector-j-9.1.0.jar y del servidor Tomcat 9.

  5. Ejecuta el proyecto y abre http://localhost:8080/CampusLoginApp/.

Próximas mejoras

  • Guardar las contraseñas con un algoritmo de hash, como BCrypt, en lugar de texto plano.
  • Leer las credenciales de la base de datos desde configuración externa.
  • Comprobar que haya una sesión activa antes de cambiar la contraseña o eliminar la cuenta, e invalidarla al cerrar sesión.
  • Escapar los datos que se muestran en las páginas para prevenir XSS.

Autora

Erica Franco · @Erica4fr

About

Campus virtual en Java con Servlets, JSP y MySQL: registro, inicio de sesión, cambio de contraseña y eliminación de cuenta. Proyecto final de Programación 2 (UMG, 2024).

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages