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"; }// }