Add MenuHeadServlet.java
This commit is contained in:
parent
ca4186826b
commit
41f0a65092
168
MenuHeadServlet.java
Normal file
168
MenuHeadServlet.java
Normal file
@ -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("<!DOCTYPE html>");
|
||||||
|
out.println("<html>");
|
||||||
|
out.println("<head>");
|
||||||
|
out.println("<title>Servlet MenuHeadServlet</title>");
|
||||||
|
out.println("</head>");
|
||||||
|
out.println("<body>");
|
||||||
|
out.println("<h1>Servlet MenuHeadServlet at " + request.getContextPath() + "</h1>");
|
||||||
|
out.println("</body>");
|
||||||
|
out.println("</html>");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@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<String, Object> responseData = new HashMap<>();
|
||||||
|
Map<String, List<Map<String, String>>> 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<String, String> 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";
|
||||||
|
}// </editor-fold>
|
||||||
|
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user