Besstami is a Java EE web application developed as an academic project, inspired by the Bankati concept. The project demonstrates a comprehensive understanding of Java EE fundamentals, MVC architecture, and 3-tier application design.
The primary focus is on clean architecture, separation of concerns, and proper implementation of core JEE components including Servlets, JSP, Filters, and Listeners, rather than building a production-ready system.
- Apply Java EE (JEE) concepts in a practical web application
- Implement a robust 3-tier architecture following the MVC pattern
- Practice comprehensive request handling, session management, and access control
- Understand persistence logic through custom file-based storage
- Deliver a well-structured, maintainable, and academically sound project
- Demonstrate mastery of core JEE components without relying on frameworks
- User authentication and authorization
- Secure session management
- Role-based access control
- Data creation, update, and retrieval operations
- Request filtering for security and access control
- Application lifecycle management using listeners
- Resource protection and controlled access
- Clear separation between presentation, business logic, and data access layers
- Custom persistence layer without external database dependencies
- Filter chain for request preprocessing and security
- Event-driven lifecycle management
- Java EE (JEE)
- Servlets (Request handling and control)
- Filters (Security and preprocessing)
- Listeners (Lifecycle management)
- JSP (JavaServer Pages)
- JSTL (JSP Standard Tag Library)
- Expression Language (EL)
- Design Pattern: MVC (Model-View-Controller)
- Architecture: 3-Tier Architecture
- Server: Apache Tomcat
- Persistence: File-based storage (TXT files)
- IDE: Eclipse / IntelliJ IDEA
- Java Version: JDK 8+
The application follows a strict 3-tier architecture to ensure maintainability, scalability, and clarity:
- Components: JSP pages, JSTL tags, Expression Language
- Responsibility: UI rendering and user interaction
- Focus: Clean, maintainable view logic without business rules
- Components: Business logic classes, service layer
- Responsibility: Application rules, data validation, and business processes
- Focus: Acts as an intermediary between controllers and data access
- Components: DAO classes, file I/O handlers
- Responsibility: Data persistence management
- Operations:
- Reading data from text files
- Writing and updating stored information
- Data integrity management
βββββββββββββββ
β Browser β
ββββββββ¬βββββββ
β HTTP Request
β
βββββββββββββββββββ
β Controller β β Servlets
β (Servlets) β
ββββββββββ¬βββββββββ
β
ββββββ΄βββββ
β β
βββββββββ ββββββββ
β Model β β View β
β(Beans)β β (JSP)β
βββββ¬ββββ ββββββββ
β
β
ββββββββββ
β DAO β
ββββββββββ
β
β
βββββββββββ
β TXT Fileβ
βββββββββββ
Components:
- Model: Java beans/POJOs representing business entities
- View: JSP pages using JSTL and EL for rendering
- Controller: Servlets handling HTTP requests and orchestrating flow
This structure ensures a clear separation of responsibilities and follows standard JEE best practices.
Key Design Decisions:
- No external database (MySQL, PostgreSQL, etc.)
- Data stored in text (TXT) files
- Custom DAO implementation for file operations
This approach was chosen intentionally to focus on:
- File I/O handling in Java
- DAO design pattern implementation
- Core JEE concepts without framework dependencies
- Understanding persistence fundamentals
- Resource management and error handling
Purpose: Request preprocessing and security enforcement
Implemented Filters:
- Authentication Filter: Validates user sessions before accessing protected resources
- Access Control Filter: Checks user permissions and roles
- Request Preprocessing: Handles encoding, logging, and request validation
Purpose: Application lifecycle and event management
Implemented Listeners:
- ServletContextListener: Application startup initialization and shutdown cleanup
- HttpSessionListener: Session lifecycle management and tracking
- ServletRequestListener: Request-level event handling
- Java Development Kit (JDK) 8 or higher
- Apache Tomcat 8.5+ or 9.x
- IDE (Eclipse or IntelliJ IDEA)
- Basic understanding of Java EE concepts
-
Clone the repository
git clone https://github.com/your-username/besstami.git
-
Import into IDE
- Open Eclipse or IntelliJ IDEA
- Import as existing project
- Ensure project structure is recognized
-
Configure Apache Tomcat
- Add Tomcat server to your IDE
- Set deployment directory
- Configure server ports if needed
-
Deploy the application
- Build the project (Maven/Gradle if applicable)
- Deploy to Tomcat server
- Start the server
-
Access the application
http://localhost:8080/Besstami
Besstami/
βββ src/
β βββ main/
β β βββ java/
β β β βββ controllers/ # Servlets
β β β βββ models/ # Business entities
β β β βββ dao/ # Data access layer
β β β βββ filters/ # Request filters
β β β βββ listeners/ # Application listeners
β β βββ webapp/
β β β βββ WEB-INF/
β β β β βββ web.xml # Deployment descriptor
β β β βββ views/ # JSP pages
β β β βββ resources/ # CSS, JS, images
β β βββ data/ # TXT files for persistence
βββ pom.xml (if using Maven)
β
Complete implementation of 3-tier architecture
β
MVC pattern properly applied
β
Custom file-based persistence layer
β
Security filters and access control
β
Session management and listeners
β
Academic documentation and screenshots
Project Type: Academic Java EE Project
Purpose: Learning and demonstrating Java EE, MVC, and web application architecture
Level: 4th Year Computer & Network Engineering
Evaluation-Oriented: Designed to meet academic standards and best practices
Scope: Educational project, not intended for production use
This project demonstrates understanding of:
- Java EE web application development
- MVC architectural pattern
- Multi-tier application design
- Servlet API and lifecycle
- Session management and security
- Filter chains and listeners
- Custom persistence implementation
- Clean code and separation of concerns
- Database integration (MySQL/PostgreSQL)
- RESTful API implementation
- Frontend framework integration (Angular/React)
- Spring Framework migration
- Enhanced security (OAuth2, JWT)
- Unit and integration testing
- Logging framework (Log4j, SLF4J)
- Deployment containerization (Docker)
Anas Lahmidi
π GitHub: github.com/AnasLahmidi
πΌ LinkedIn: linkedin.com/in/anas-lahmidi
For questions, suggestions, or collaboration opportunities:
This project is developed for educational purposes only.
Note: This project represents an academic exercise in Java EE fundamentals. It prioritizes clean architecture and proper implementation of core JEE concepts over production-ready features.