El sistema del Taller de Inglés es una aplicación web Jakarta EE 10 empaquetada como un único archivo WAR y desplegada en GlassFish 7+. Sigue un patrón MVC (Modelo–Vista–Controlador) clásico: las vistas son páginas JSP servidas desdeDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/LuisAMoralesA/tallerIngles-UAEMEcatepec/llms.txt
Use this file to discover all available pages before exploring further.
src/main/webapp/view/, la capa de control son Servlets Jakarta EE anotados con @WebServlet, y la capa de modelo es un conjunto de clases Java que se comunican directamente con MySQL 8 a través de JDBC usando PreparedStatement. No hay ningún ORM — toda la persistencia pasa por la clase BaseDatos, que centraliza todas las operaciones CRUD.
Capas del sistema
Vista (JSP)
Las vistas son páginas JSP organizadas ensrc/main/webapp/view/ según su función:
login/— Formularios de inicio de sesión para los tres roles (administrador, profesor, alumno)principal/— Menús de bienvenida por rol, punto de entrada tras autenticarselistas/— Tablas de consulta de alumnos, profesores, administradores, grupos y documentosadd/— Formularios para agregar nuevos registros al sistemaupdate/— Formularios de actualización de información personal y credencialescalificaciones/— Asignación y visualización de calificaciones parciales y promediospagos/— Seguimiento de pagos individuales y calendario de mensualidadesmenuLateral/— Componentes de menú lateral incluidos por cada vista principalsweetAlert/— Ventanas emergentes de resultado (éxito, error, advertencia, correcto)
Controlador (Servlets)
La capa de control está formada por servlets Jakarta Servlet 6 ubicados encontroller/servlet/, cada uno anotado con @WebServlet y mapeado a una URL semántica (por ejemplo, /addStudent, /updateGrade, /reportesServlet). Los servlets:
- Reciben peticiones HTTP GET o POST desde los formularios JSP
- Extraen y validan los parámetros del request
- Invocan los métodos correspondientes de la clase
BaseDatos - Escriben atributos en el
HttpSessiono en elHttpServletRequest - Redirigen al JSP de resultado apropiado (éxito, error o lista actualizada)
HttpSession con un timeout de 30 minutos, configurado en WEB-INF/web.xml. Cuando la sesión expira, el sistema redirige al usuario a la vista sesionExpirada.jsp.
Modelo (JDBC)
La capa de modelo no usa ningún ORM. Se compone de:BaseDatos(controller/BaseDatos.java) — clase central que implementa todas las operaciones CRUD. Abre una nueva conexión JDBC para cada operación usandoDriverManager.getConnection()con el drivercom.mysql.cj.jdbc.Driver(mysql-connector-j 8.3.0). Todas las consultas usanPreparedStatementpara evitar inyección SQL.- POJOs de tabla (
model/Tables/) — clases Java simples que representan cada tabla de la base de datos:Students,Teachers,Admin_school,Grupos,Grade,Category,Report,Payment,Payment_status,Pay_simbology,Users. - Objetos de consulta (
model/Consultas/) — clases que representan los resultados de JOINs multi-tabla, usados cuando las vistas necesitan mostrar datos combinados:ConsultaAlumnos,ConsultaTeacher,ConsultasAdmin,ConsultaGrupos,ConsultaBitacorasAlumnos,ConsultaBitacorasProfesores,ConsultaCalificaciones,ConsultaPagos.
Tecnologías
| Categoría | Tecnología | Versión |
|---|---|---|
| Runtime | Jakarta EE | 10.0.0 |
| Servidor | GlassFish | 7+ |
| Base de datos | MySQL | 8+ |
| JDBC Driver | mysql-connector-j | 8.3.0 |
| Build | Maven | 3.8.1+ |
| Java | OpenJDK | 11+ |
| Reportes PDF | JasperReports | 7.0.3 |
| Reportes Excel | Apache POI | 5.2.3 |
| UI | Bootstrap | 5.1.3 |
| Alerts | SweetAlert2 | 11 |
| Tables | DataTables | 1.13.6 |
Estructura de paquetes
Flujo de una solicitud
Cada interacción del usuario sigue este ciclo de vida a través de las tres capas:- El usuario envía un formulario en una vista JSP (por ejemplo, el formulario de inscripción de un nuevo alumno).
- El navegador realiza un POST o GET a la URL del servlet correspondiente (por ejemplo,
/tallerDeInglesUAEM/addStudent). - El servlet lee los parámetros del request con
request.getParameter(), valida los datos y construye los objetos de modelo necesarios. BaseDatosejecuta unPreparedStatementcontra MySQL 8, devolviendo un resultado o confirmando la operación.- El servlet establece atributos en la sesión (
HttpSession) o en el request (HttpServletRequest) y redirige conresponse.sendRedirect()o haceforward()al JSP de destino. - El JSP renderiza la respuesta utilizando los atributos inyectados, presentando los datos en tablas interactivas de DataTables sobre un layout Bootstrap.