Aplicación web básica desarrollada con JSF (JavaServer Faces) para gestionar un carrito de compras. Proyecto académico sin base de datos, los datos se almacenan en sesión.
- JSF 2.3 (Mojarra)
- Java 11
- Maven 3.9
- Apache Tomcat 9.0
- Docker & Docker Compose
CarritoJSF/
├── src/main/
│ ├── java/com/carrito/
│ │ ├── beans/
│ │ │ └── CarritoBean.java # ManagedBean con lógica del carrito
│ │ └── model/
│ │ ├── Product.java # Modelo de producto
│ │ └── CartItem.java # Modelo de item del carrito
│ └── webapp/
│ ├── WEB-INF/
│ │ ├── web.xml # Descriptor de despliegue
│ │ └── faces-config.xml # Configuración JSF
│ ├── index.xhtml # Página principal
│ ├── agregar.xhtml # Formulario agregar productos
│ └── carrito.xhtml # Gestión del carrito
├── Dockerfile
├── docker-compose.yml
└── pom.xml
- index.xhtml - Página principal con navegación
- agregar.xhtml - Agregar productos al carrito (ID + Nombre)
- carrito.xhtml - Gestionar el carrito:
- Ver productos agregados
- Aumentar/disminuir cantidad
- Editar nombre del producto
- Eliminar productos
- Vaciar carrito
- Docker y Docker Compose instalados
- Alternativamente: Java 11+ y Maven 3.9+
# Construir y levantar el contenedor
docker compose up --build
# En segundo plano
docker compose up -d --build
# Detener
docker compose down# Construir imagen
docker build -t carrito-jsf .
# Ejecutar contenedor
docker run -d -p 8080:8080 --name carrito-jsf-app carrito-jsf
# Detener
docker stop carrito-jsf-app
docker rm carrito-jsf-appUna vez desplegado, accede a:
# Compilar
mvn clean package
# Desplegar en Tomcat
# Copiar target/carrito-jsf.war a $TOMCAT_HOME/webapps/ROOT.war
# O usar Maven con Tomcat plugin
mvn tomcat7:run- Página Principal: Selecciona "Agregar Producto" o "Ver Carrito"
- Agregar Producto:
- Ingresa un ID (número)
- Ingresa el nombre del producto
- Click en "Agregar al Carrito"
- Gestionar Carrito:
- Usa los botones + / - para ajustar cantidades
- Click en "Editar" para cambiar el nombre
- Click en "Eliminar" para quitar un producto
- Click en "Vaciar Carrito" para limpiar todo
La aplicación usa JSF correctamente:
- Archivos
.xhtmlcon Facelets - Componentes JSF:
h:form,h:inputText,h:commandButton,h:dataTable,h:messages,h:link - ManagedBean con
@ManagedBeany@SessionScoped - Navegación JSF con
outcome - Binding bidireccional con EL (
#{}) - Validación con
requiredy mensajes web.xmlcon FacesServlet configuradofaces-config.xmlpara configuración JSF
- Los datos se almacenan en sesión HTTP
- Al reiniciar el servidor, se pierden los datos
- Cada navegador tiene su propia sesión independiente
- Proyecto diseñado para evaluación académica
Alejandro Pinzon Fajardo - Arquitectura de Software