# naveenkoppisetti/studentmanagementsystem architecture

> Architecture diagram of the GitHub repository naveenkoppisetti/studentmanagementsystem, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-11-10). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/naveenkoppisetti/studentmanagementsystem
- Repository: https://github.com/naveenkoppisetti/studentmanagementsystem

## Overview

This is a Java Servlet/JSP student account-management application: students register or log in, then access profile details and perform profile updates or account deletion. Servlets coordinate password hashing, session state, and DAO operations; the DAO persists student records through JDBC to MySQL. The README also documents logout, authentication filtering, responsive views, and custom error pages. Links involving unsampled JSP behavior rely only on the README’s MVC description; the graph otherwise follows the shown servlet and DAO calls.

Main entry points: [`src/main/java/dao/StudentDAO.java`](https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/dao/StudentDAO.java) (Student DAO), [`src/main/java/filter/AuthenticationFilter.java`](https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/filter/AuthenticationFilter.java) (Authentication filter), [`src/main/java/controller/RegisterServlet.java`](https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/controller/RegisterServlet.java) (Register servlet), [`src/main/java/controller/LoginServlet.java`](https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/controller/LoginServlet.java) (Login servlet)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_views["Web views"]
  node_registration_view["Registration form<br/>[register.jsp]"]
  node_login_view["Login form<br/>[login.jsp]"]
  node_dashboard["Dashboard<br/>[home.jsp]"]
  node_details_view["Student details<br/>[details.jsp]"]
  node_update_view["Profile form<br/>[update.jsp]"]
  node_delete_view["Delete confirmation<br/>[delete.jsp]"]
  node_error_views["Error pages<br/>[404.jsp]"]
end

subgraph group_controllers["Servlet controllers"]
  node_register["Register servlet"]
  node_login["Login servlet<br/>[LoginServlet.java]"]
  node_update["Update servlet<br/>[UpdateServlet.java]"]
  node_delete["Delete servlet<br/>[DeleteServlet.java]"]
  node_logout["Logout servlet<br/>[LogoutServlet.java]"]
end

subgraph group_security["Authentication and security"]
  node_auth_filter["Authentication filter"]
  node_password_hash["Password hashing<br/>[PasswordUtil.java]"]
end

subgraph group_data["Student data"]
  node_student_record["Student record<br/>[Student.java]"]
  node_student_dao["Student DAO<br/>[StudentDAO.java]"]
  node_db_connection["JDBC connection<br/>[DBConnection.java]"]
end

node_student(("Student"))
node_mysql[("MySQL database")]

node_student -->|"opens"| node_registration_view
node_student -->|"opens"| node_login_view
node_registration_view -->|"submits to"| node_register
node_login_view -->|"submits to"| node_login
node_register -->|"hashes password"| node_password_hash
node_register -->|"populates"| node_student_record
node_register -->|"checks and saves"| node_student_dao
node_login -->|"hashes password"| node_password_hash
node_login -->|"checks credentials"| node_student_dao
node_login -->|"receives student"| node_student_record
node_student_dao -->|"maps records"| node_student_record
node_student_dao -->|"uses connection"| node_db_connection
node_db_connection -->|"connects to"| node_mysql
node_auth_filter -->|"guards"| node_dashboard
node_auth_filter -->|"guards"| node_details_view
node_auth_filter -->|"guards"| node_update_view
node_auth_filter -->|"redirects to"| node_login_view
node_update_view -->|"submits to"| node_update
node_update -->|"populates"| node_student_record
node_update -->|"updates profile"| node_student_dao
node_delete_view -->|"submits to"| node_delete
node_delete -->|"deletes account"| node_student_dao
node_logout -->|"redirects to"| node_login_view

click node_registration_view "https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/webapp/register.jsp"
click node_login_view "https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/webapp/login.jsp"
click node_dashboard "https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/webapp/home.jsp"
click node_details_view "https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/webapp/details.jsp"
click node_update_view "https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/webapp/update.jsp"
click node_delete_view "https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/webapp/delete.jsp"
click node_error_views "https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/webapp/404.jsp"
click node_register "https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/controller/RegisterServlet.java"
click node_login "https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/controller/LoginServlet.java"
click node_update "https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/controller/UpdateServlet.java"
click node_delete "https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/controller/DeleteServlet.java"
click node_logout "https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/controller/LogoutServlet.java"
click node_auth_filter "https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/filter/AuthenticationFilter.java"
click node_password_hash "https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/util/PasswordUtil.java"
click node_student_record "https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/model/Student.java"
click node_student_dao "https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/dao/StudentDAO.java"
click node_db_connection "https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/database/DBConnection.java"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_registration_view,node_login_view,node_dashboard,node_details_view,node_update_view,node_delete_view,node_error_views toneBlue
class node_register,node_login,node_update,node_delete,node_logout,node_mysql toneAmber
class node_auth_filter,node_password_hash toneMint
class node_student_record,node_student_dao,node_db_connection toneRose
class node_student toneIndigo
```

## Components

### Web views

- [Registration form](https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/webapp/register.jsp): `src/main/webapp/register.jsp`
- [Login form](https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/webapp/login.jsp): `src/main/webapp/login.jsp`
- [Dashboard](https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/webapp/home.jsp): `src/main/webapp/home.jsp`
- [Student details](https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/webapp/details.jsp): `src/main/webapp/details.jsp`
- [Profile form](https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/webapp/update.jsp): `src/main/webapp/update.jsp`
- [Delete confirmation](https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/webapp/delete.jsp): `src/main/webapp/delete.jsp`
- [Error pages](https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/webapp/404.jsp): `src/main/webapp/404.jsp`

### Servlet controllers

- [Register servlet](https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/controller/RegisterServlet.java): `src/main/java/controller/RegisterServlet.java`
- [Login servlet](https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/controller/LoginServlet.java): `src/main/java/controller/LoginServlet.java`
- [Update servlet](https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/controller/UpdateServlet.java): `src/main/java/controller/UpdateServlet.java`
- [Delete servlet](https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/controller/DeleteServlet.java): `src/main/java/controller/DeleteServlet.java`
- [Logout servlet](https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/controller/LogoutServlet.java): `src/main/java/controller/LogoutServlet.java`

### Authentication and security

- [Authentication filter](https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/filter/AuthenticationFilter.java): `src/main/java/filter/AuthenticationFilter.java`
- [Password hashing](https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/util/PasswordUtil.java): `src/main/java/util/PasswordUtil.java`

### Student data

- [Student record](https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/model/Student.java): `src/main/java/model/Student.java`
- [Student DAO](https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/dao/StudentDAO.java): `src/main/java/dao/StudentDAO.java`
- [JDBC connection](https://github.com/naveenkoppisetti/studentmanagementsystem/blob/main/src/main/java/database/DBConnection.java): `src/main/java/database/DBConnection.java`

### Other components

- **Student**
- **MySQL database**

## Connections

- Student → Registration form: opens (evidence: `README.md`)
- Student → Login form: opens (evidence: `README.md`)
- Registration form → Register servlet: submits to (evidence: `README.md`)
- Login form → Login servlet: submits to (evidence: `README.md`)
- Register servlet → Password hashing: hashes password (evidence: `src/main/java/controller/RegisterServlet.java`)
- Register servlet → Student record: populates (evidence: `src/main/java/controller/RegisterServlet.java`)
- Register servlet → Student DAO: checks and saves (evidence: `src/main/java/controller/RegisterServlet.java`)
- Login servlet → Password hashing: hashes password (evidence: `src/main/java/controller/LoginServlet.java`)
- Login servlet → Student DAO: checks credentials (evidence: `src/main/java/controller/LoginServlet.java`)
- Login servlet → Student record: receives student (evidence: `src/main/java/controller/LoginServlet.java`)
- Student DAO → Student record: maps records (evidence: `src/main/java/dao/StudentDAO.java`)
- Student DAO → JDBC connection: uses connection (evidence: `src/main/java/dao/StudentDAO.java`)
- JDBC connection → MySQL database: connects to (evidence: `src/main/java/database/DBConnection.java`)
- Authentication filter → Dashboard: guards (evidence: `src/main/java/filter/AuthenticationFilter.java`)
- Authentication filter → Student details: guards (evidence: `src/main/java/filter/AuthenticationFilter.java`)
- Authentication filter → Profile form: guards (evidence: `src/main/java/filter/AuthenticationFilter.java`)
- Authentication filter → Login form: redirects to (evidence: `src/main/java/filter/AuthenticationFilter.java`)
- Profile form → Update servlet: submits to (evidence: `README.md`)
- Update servlet → Student record: populates (evidence: `src/main/java/controller/UpdateServlet.java`)
- Update servlet → Student DAO: updates profile (evidence: `src/main/java/controller/UpdateServlet.java`)
- Delete confirmation → Delete servlet: submits to (evidence: `README.md`)
- Delete servlet → Student DAO: deletes account (evidence: `src/main/java/controller/DeleteServlet.java`)
- Logout servlet → Login form: redirects to (evidence: `src/main/java/controller/LogoutServlet.java`)
