Case Study

Java • Servlets • JSP • JDBC • Oracle SQL

Online Examination Portal

A secure, database-backed enterprise evaluation engine that provides role-based portal dashboards, real-time assessment logic, automated time compliance, and grading.

  • AdminManagement Dashboard
  • JDBCOracle SQL Persistence
  • AutoEvaluation & Timer

Project Parameters

  • Role: Sole Developer (Designed schema, servlet handlers, JSP pages)
  • Database: Oracle SQL Express Edition (Tables, constraints, primary key sequences)
  • Stack: Java Standard Edition, Jakarta Servlet API, JavaServer Pages (JSP), JDBC driver
  • Deployment: Apache Tomcat Server 10.1
  • Timeline: 4-week structured development cycle

The Problem

Traditional manual classroom examinations require tedious grading schedules, generate excessive physical logs, and lack secure timing restraints. Standard web tools fail to enforce access restriction, leading to student administrative overrides or coordinate mismatches.

The Solution

Created a secure web portal featuring role isolation. Student view is locked once a timed assessment launches. Admin tools manage questions dynamically. Oracle database constraints maintain data validity across score histories.

What I Learned

Mastered transaction isolation in JDBC, connection configurations, HTTP session filter blocks, servlet controller mapping configurations, CSS-responsive dashboard design, and timed auto-evaluations.

Usability Mockups

Interactive desktop and mobile view layouts.

localhost:8080/exam-portal/student-dashboard
Welcome, Om Kumar (Student) Timer: 45:00
Question 3 of 20:

Which of the following classes is NOT thread-safe in Java?

Exam Admin
Question Registry:
Total DB Rows: 84 questions

Functional Modules

Everything built into the Examination Engine.

Role-Based Authentication

Admins and students enter secure paths via servlet Filters that parse HTTP request cookies, checking specific credentials against tables.

Admin Dashboard

Allows administrators to perform CRUD operations on questions, categorize test profiles, and check total test score statistics.

Student Assessment Terminal

Students can enroll, read exam parameters, select options, and update profile credentials cleanly on custom panels.

Timed Automatic Submission

Browser timers sync with Tomcat session timeouts. If time runs out, a JavaScript callback executes a servlet submit action, recording the answers automatically.

JDBC & Oracle SQL Connection

Uses Oracle JDBC driver to compile SQL queries, retrieve result sets, process prepared updates, and execute atomic transactions securely.

Automatic Evaluation

A backend grading engine cross-references selected student choice indices with database answer indices, calculating margins instantly upon submission.

Visual Architecture

Technical blueprints of the application stack.

System Architecture Diagram

Detailed flow showing Client Web Request, Servlet Routing Controllers, JSP View Templating, JDBC database operations, and Oracle SQL storage.

Client / UI HTML/CSS/JS Browser Session HTTPS Request JSP View Render Tomcat Web Container Java Servlets Controller Routing Session Filters Redirect Get Data JSP Templates View Compiler JSTL Tags JDBC API Connection Pool Oracle Database Relational SQL Data Integrity

Relational Database Schema (Oracle SQL)

Database schema layout illustrating PK/FK relationships and field structures designed to store user data, exam profiles, questions, and grades.

USERS user_id (PK) - NUMBER email - VARCHAR2(80) password - VARCHAR2(50) role - VARCHAR2(20) EXAMS exam_id (PK) - NUMBER title - VARCHAR2(100) duration_mins - NUMBER total_questions - NUMBER RESULTS result_id (PK) - NUMBER user_id (FK) - NUMBER exam_id (FK) - NUMBER score - NUMBER(5,2) completed_at - TIMESTAMP QUESTIONS question_id (PK) - NUMBER exam_id (FK) - NUMBER question_text - VARCHAR2(500) options - VARCHAR2(100) Array correct_opt_idx - NUMBER

Exam Timer & Submission Workflow

Functional workflow showing session startup, active questions loops, automatic submission routines, and database evaluation triggers.

Launch Exam Init Servlet Session Get Questions Active Test Console JS Timer ticking Time Left > 0? Time Out (Autosubmit Callback) Servlet Evaluation Calculate Score Display Result Persist SQL

Engineering Challenges

Problems solved during implementation.

Session State Integrity

Technical Challenge

Maintaining active student states under unexpected browser reloads. Standard sessions would reset the current exam pointer. I solved this by tracking session indices directly in dynamic Tomcat database tables using the session ID as a lookup key, allowing instant recovery on page reload.

Autosubmit Security

Security Challenge

Preventing students from disabling the JavaScript timer to gain extra time. I implemented a secondary verification layer on the server servlet which cross-references the session creation timestamp with the submission timestamp, automatically invalidating submissions exceeding the threshold limit by more than 10 seconds.

Looking for code discussions?

If you would like a live screenshare of the Tomcat database connection or want to discuss servlet filter logic, feel free to contact me.

Explore other projects

Check out the frontend grade calculator utility built to calculate grade averages instantly.