A Java-based web application for managing end-to-end event planning workflows, built with Java Servlets, JSP, and MySQL.
This system connects customers, event planners, and service providers under a single platform managed by an admin. Customers submit event requests, planners build and track event plans, and service providers register available services — all under role-based access control.
- Register and log in to a personal account
- Submit new event requests with details such as venue, date, budget, guest count, and required services
- View, update, and delete their own event requests
- Log in via the employee portal
- View event requests assigned to them
- Create, update, and delete event plans with fields for assigned providers, progress tracking, confirmed location, payment status, and planner notes
- Access a dedicated planner dashboard
- Log in and manage allocated services
- Create, view, update, and delete service allocations (event ID, service type, region, budget range)
- Manage all staff accounts (insert, update, delete)
- View all events in the system
- Assign roles: Admin, Event Planner, Service Provider
| Layer | Technology |
|---|---|
| Backend | Java (Servlets) |
| Frontend | JSP |
| Database | MySQL |
| Server | Apache Tomcat |
| DB Driver | MySQL Connector/J (com.mysql.jdbc.Driver) |
EventPlanning/src/main/java/
│
├── Controller/ # Planner-side servlets, DAO, DB singleton
│ ├── DBConnection.java
│ ├── EventplanDAO.java
│ ├── EventplanDAOInterface.java
│ ├── Createeventplanservlet.java
│ ├── Deleteventplanservlet.java
│ ├── UpdateEventPlanServlet.java
│ ├── PlannerdashboardServlet.java
│ ├── employeeLoginServlet.java
│ └── EventPlannerLogoutServlet.java
│
├── Services/ # Business logic / service layer
│ └── Services.java
│
├── Models/ # Plain Java model classes
│ ├── Employeedetails.java
│ ├── Eventplan.java
│ └── Eventrequest.java
│
├── EventPackage/ # Customer-facing event request CRUD
│ ├── Event.java
│ ├── EventDBUtil.java
│ ├── InsertEventServlet.java
│ ├── UpdateEventServlet.java
│ ├── DeleteEventServlet.java
│ └── GetAllEventServlet.java
│
├── EventPlanningPackage/ # Admin/staff management + shared DB connection
│ ├── db_connection.java
│ ├── adminModel.java
│ ├── adminControl.java
│ ├── StaffLoginServlet.java
│ ├── LogoutServlet.java
│ ├── insertServelet.java
│ ├── updateServelet.java
│ ├── deleteServelet.java
│ └── GetAllServelet.java
│
├── ProviderPackage/ # Service provider allocation CRUD
│ ├── AllocateServiceModel.java
│ ├── AllocateServiceController.java
│ ├── INSERTSERVLET.java
│ ├── UPDATESERVLET.java
│ ├── DELETESERVLET.java
│ ├── DISPLAYSERVLET.java
│ └── PROLOGOUTservlet.java
│
└── UserPackage/ # Customer registration, login, profile
├── Customer.java
├── CustomerDBUtil.java
├── CustomerInsert.java
└── LoginServlet.java
The application connects to a MySQL database named eventplanner on localhost:3306.
Default credentials (update before deploying):
username: root
password: 0000
CREATE DATABASE eventplanner;
-- Staff / Admin accounts
CREATE TABLE admin (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100),
contact_number VARCHAR(20),
role VARCHAR(50),
password VARCHAR(100)
);
-- Customer accounts
CREATE TABLE customer (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100),
phone VARCHAR(20),
username VARCHAR(50),
password VARCHAR(100)
);
-- Event requests submitted by customers
CREATE TABLE eventrequest (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
type VARCHAR(50),
venue VARCHAR(100),
date VARCHAR(20),
contactNumber VARCHAR(20),
guestCount VARCHAR(10),
budget VARCHAR(20),
requiredServices TEXT,
description TEXT,
userid INT
);
-- Event plans created by planners
CREATE TABLE eventplan (
planid INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(100),
assignedproviders TEXT,
progress VARCHAR(50),
confirmedlocation VARCHAR(100),
paymentstatus VARCHAR(50),
plannernotes TEXT,
requestid INT,
plannerid INT
);
-- Service allocations by providers
CREATE TABLE allocateservice (
id INT AUTO_INCREMENT PRIMARY KEY,
eventid VARCHAR(50),
servicetype VARCHAR(50),
region VARCHAR(50),
budgetrange VARCHAR(50)
);- Java 8+
- Apache Tomcat 9+
- MySQL 8+
- Maven (if using
pom.xml) or manual JAR setup
-
Clone the repository
git clone https://github.com/your-org/EventPlanning.git
-
Set up the database
- Create the
eventplannerdatabase and run the SQL above - Update DB credentials in
DBConnection.javaanddb_connection.javaif needed
- Create the
-
Build the project
- Import into Eclipse/IntelliJ as a Dynamic Web Project or Maven project
- Ensure
mysql-connector-javaJAR is on the classpath
-
Deploy to Tomcat
- Export as a
.warfile and drop into Tomcat'swebapps/directory, or run directly from your IDE
- Export as a
-
Access the app
- Customer portal:
http://localhost:8080/EventPlanning/logn.jsp - Staff login:
http://localhost:8080/EventPlanning/staffLogin.jsp
- Customer portal:
| Role | Redirected To |
|---|---|
| Admin | adminDashboard.jsp |
| Event Planner | PlannerdashboardServlet |
| Service Provider | spinsert.jsp |
| Customer | GetAllEventServlet → userprofile.jsp |
- SQL injection risk — several
EventDBUtilandadminControlmethods build queries via string concatenation. These should be migrated toPreparedStatement. - Plain-text passwords — passwords are stored and compared without hashing. BCrypt or similar should be applied before production use.
- Singleton DB connection (
DBConnection.java) — not thread-safe under concurrent load; consider a connection pool (e.g. HikariCP). - Inconsistent naming conventions — class and servlet names vary in casing and style across packages; standardising to PascalCase for classes is recommended.
This project is intended for academic/educational use.