Sistema Bancario
Realizado durante el año 2024
El sistema simula las operaciones fundamentales de una entidad bancaria, ofreciendo una plataforma para la administración de clientes, cuentas, préstamos y transacciones. La aplicación está diseñada para dos roles principales: Administradores, con capacidades de gestión y supervisión; y Clientes, que acceden a funcionalidades de autoservicio.
Arquitectura y Stack Tecnológico
El proyecto está construido sobre una arquitectura Modelo-Vista-Controlador (MVC) clásica, una elección estable y probada para aplicaciones web Java EE. Esta separación de responsabilidades permite un desarrollo modular y un mantenimiento más sencillo.
- Stack Tecnológico Principal:
- Lenguaje: Java 8
- Base de Datos: MySQL
- Servidor de Aplicaciones: Apache Tomcat (o similar)
- Tecnologías Web: Servlets 3.1, JavaServer Pages (JSP) 2.3, JSTL
- Conectividad de Base de Datos: JDBC
Desglose de la Arquitectura MVC
- Modelo: Representa los datos y la lógica de negocio.
- Capa de Entidad (
entidad): Contiene los POJOs (Plain Old Java Objects) que modelan las entidades del dominio, comoCliente,Cuenta,PrestamoyMovimiento. Estos objetos son la representación de los datos en la aplicación. - Capa de Acceso a Datos (DAO -
daoydaoImp): Implementa el patrón Data Access Object para abstraer y encapsular el acceso a la base de datos MySQL. Utiliza JDBC para ejecutar consultas SQL. La claseConexiongestiona el pool de conexiones. - Capa de Negocio (
negocioDaoynegocioDaoImp): Actúa como una capa intermedia que consume los DAO y aplica la lógica de negocio. Proporciona una API clara al controlador, desacoplándolo de la lógica de persistencia.
- Capa de Entidad (
- Vista: Es la capa de presentación responsable de la interfaz de usuario.
WebContent: Este directorio contiene los archivos JSP (.jsp), que generan dinámicamente el HTML que se envía al navegador. Se utiliza JSTL (JavaServer Pages Standard Tag Library) para simplificar el código en las vistas y evitar el uso de scriptlets (<% ... %>).- CSS y Assets: Incluye hojas de estilo (
.css) para la presentación visual.
- Controlador: Gestiona las solicitudes del usuario, interactúa con el modelo y selecciona la vista adecuada.
- Servlets (
servlet): Cada servlet actúa como un controlador para un conjunto específico de acciones (por ejemplo,servletLogin,ServletNuevaTransferencia). Reciben peticiones HTTP, procesan los parámetros, invocan la capa de negocio y, finalmente, redirigen la solicitud (usandoRequestDispatcher) a un JSP para renderizar la respuesta.
- Servlets (
Implementaciones Destacadas
a. Patrón de Diseño DAO (Data Access Object)
La implementación del patrón DAO es central en la arquitectura de la aplicación.
- Abstracción: Se definen interfaces (
IClienteDao,ICuentaDao) que declaran las operaciones de persistencia (CRUD). - Implementación Concreta: Clases como
ClienteDaoImpyCuentaDaoImpimplementan estas interfaces utilizando sentencias JDBC (PreparedStatement) para interactuar de forma segura y eficiente con la base de datos, evitando la inyección de SQL. - Gestión de Conexiones: La clase
Conexioncentraliza la creación y cierre de conexiones a la base de datos, un punto clave para el rendimiento y la gestión de recursos.
b. Control de Acceso Basado en Roles
El sistema distingue claramente entre los roles de Administrador y Cliente.
- Autenticación: El
servletLoginvalida las credenciales del usuario contra la tablaUsuariosen la base de datos. - Autorización: Una vez autenticado, el tipo de usuario (Admin/Cliente) se almacena en la sesión HTTP (
HttpSession). - Filtros de Seguridad: Se utiliza un Filtro de Servlet (
ErrorFilter) para interceptar todas las petacciones y verificar si el usuario tiene una sesión activa y los permisos necesarios para acceder a las rutas solicitadas. Las rutas de administración (/ListadoClientes.jsp, etc.) están protegidas para que solo los administradores puedan acceder.
c. Flujo de Operaciones Bancarias
- Transferencias: El proceso de transferencia involucra una transacción que afecta a dos cuentas. El
ServletNuevaTransferenciaorquesta la operación: valida el saldo, actualiza la cuenta de origen y la de destino, y registra los movimientos correspondientes en la tablaMovimientos. - Solicitud y Aprobación de Préstamos: Los clientes pueden solicitar préstamos a través de
PrestamosSolicitud.jsp. Un administrador puede luego ver y aprobar estas solicitudes. El sistema está preparado para calcular cuotas e intereses, aunque la lógica de aprobación final es un proceso manual en esta implementación.
4. Conclusión
Este proyecto es un excelente ejemplo de una aplicación web Java EE monolítica bien estructurada. La estricta adhesión al patrón MVC, el uso correcto del patrón DAO y una clara separación de capas demuestran una base sólida de ingeniería de software. Aunque no utiliza frameworks modernos de alto nivel (como Spring o Hibernate), la aplicación es estable, segura y mantenible, y sirve como una demostración competente del dominio de las tecnologías fundamentales de Java para la web.