diff --git a/MenuHeadServlet.java b/MenuHeadServlet.java
new file mode 100644
index 0000000..86b8184
--- /dev/null
+++ b/MenuHeadServlet.java
@@ -0,0 +1,168 @@
+package Controller;
+
+import LoginDb.DbHandler;
+import com.google.gson.Gson;
+import java.io.IOException;
+import java.io.PrintWriter;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.annotation.WebServlet;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpSession;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+/**
+ *
+ * @author 1121947
+ */
+//@WebServlet(name = "MenuHeadServlet", urlPatterns = {"/MenuHeadServlet"})
+public class MenuHeadServlet extends HttpServlet {
+
+ protected void processRequest(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ response.setContentType("text/html;charesultsetet=UTF-8");
+ try (PrintWriter out = response.getWriter()) {
+ /* TODO output your page here. You may use following sample code. */
+ out.println("");
+ out.println("");
+ out.println("
");
+ out.println("Servlet MenuHeadServlet");
+ out.println("");
+ out.println("");
+ out.println("Servlet MenuHeadServlet at " + request.getContextPath() + "
");
+ out.println("");
+ out.println("");
+ }
+ }
+
+ @Override
+ protected void doGet(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ processRequest(request, response);
+
+ HttpSession session = request.getSession(false);
+
+ String user = (String) session.getAttribute("user");
+
+ String userRole =(String)session.getAttribute("userRole");
+ System.out.println("User is :" + user);
+
+ Map responseData = new HashMap<>();
+ Map>> menuData = new LinkedHashMap<>(); // Main Menu → Submenus
+
+ if (user == null) {
+ responseData.put("role", "Guest");
+ responseData.put("screens", menuData);
+ response.getWriter().write(new Gson().toJson(responseData));
+ return;
+ }
+
+ Connection conn = null;
+ PreparedStatement preparedStatement = null;
+ ResultSet resultset = null;
+
+ try {
+
+ conn = DbHandler.getDBConnection();
+ String Screen_details = "select SCREEN_NAME from ROLE_MANAGEMENT where ID =?";
+
+ preparedStatement = conn.prepareStatement(Screen_details);
+ preparedStatement.setString(1, user);
+ resultset = preparedStatement.executeQuery();
+
+ System.out.println("1st Result set: " +resultset);
+
+ // String userRole = null; // Default role
+ while (resultset.next()) {
+
+ String screenIds = resultset.getString("SCREEN_NAME");
+
+ System.out.println("Controller.MenuHeadServlet.doGet()" + userRole + " " + screenIds);
+
+ if (screenIds != null && !screenIds.isEmpty()) {
+
+ String[] screenArray = screenIds.split("#");
+
+ // Fetch corresponding JSP pages
+ String JSP_sql = "SELECT SC.SCREEN_ID, SC.JSP_PAGE, M.MENU_NAME "
+ + "FROM SCREENS SC "
+ + "JOIN MENUS M ON SC.MENU_ID = M.MENU_ID "
+ + "WHERE SC.SCREEN_ID IN ("
+ + String.join(",", Collections.nCopies(screenArray.length, "?")) + ") and SC.ROLE_ID IN (" + userRole + ")";
+
+ preparedStatement = conn.prepareStatement(JSP_sql);
+
+ for (int i = 0; i < screenArray.length; i++) {
+ preparedStatement.setString(i + 1, screenArray[i]);
+ }
+
+ resultset = preparedStatement.executeQuery();
+
+ while (resultset.next()) {
+ String menuName = resultset.getString("MENU_NAME");
+
+ System.out.println("Menu Name:" +menuName);
+ Map screenData = new HashMap<>();
+ screenData.put("screenID", resultset.getString("SCREEN_ID"));
+ screenData.put("jspPage", resultset.getString("JSP_PAGE"));
+
+ // Add to the correct menu category
+ menuData.computeIfAbsent(menuName, k -> new ArrayList<>()).add(screenData);
+ }
+ System.out.println("Menu Data :" +menuData);
+ }
+ }
+
+ responseData.put("role", userRole);
+ responseData.put("menus", menuData);
+ System.out.println("Response :" +responseData);
+
+ } catch (SQLException e) {
+ } finally {
+ try {
+ if (resultset != null) {
+ resultset.close();
+ }
+ } catch (SQLException e) {
+ }
+ try {
+ if (preparedStatement != null) {
+ preparedStatement.close();
+ }
+ } catch (SQLException e) {
+ }
+ try {
+ if (conn != null) {
+ conn.close();
+ }
+ } catch (SQLException e) {
+ }
+ }
+
+ response.getWriter().write(new Gson().toJson(responseData));
+ }
+
+ @Override
+ protected void doPost(HttpServletRequest request, HttpServletResponse response)
+ throws ServletException, IOException {
+ processRequest(request, response);
+ }
+
+ @Override
+ public String getServletInfo() {
+ return "Short description";
+ }//
+
+}