Вход с несколькими вкладками JSP / Servlet - PullRequest
0 голосов
/ 09 октября 2018

Я хочу создать веб-приложение, которое позволит входить в систему с нескольких вкладок в одном браузере - разные пользователи для каждой вкладки.Не нашел что-то похожее в сети.Все вкладки совместно используют одну сессию, поэтому я думаю, что мне нужно создать новую сессию для каждой вкладки, но это кажется невозможным, потому что один экземпляр браузера содержит одну сессию.Каждый пользователь может получить доступ только к своему отделу.Пожалуйста, помогите мне.

Контроллер входа:

public class AuthenticationServlet extends HttpServlet {

@Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.getRequestDispatcher("/WEB-INF/pages/login.jsp").forward(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        String userLogin = request.getParameter("login");
        String userPassword = request.getParameter("password");
        String userDepartment = request.getParameter("department");
        HttpSession session = request.getSession(false);
        session.setAttribute("department", userDepartment);

        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;

        try { //managing connection to database
            connection = DriverManager
                    .getConnection("jdbc:mysql://localhost:3306/msql", "root", "root");
            Class.forName("com.mysql.jdbc.Driver");
            statement = connection.createStatement();
            String query = "select * from users";
            resultSet = statement.executeQuery(query);

            boolean isValid = false;

            while (resultSet.next()) { //compare login,password and department with database
                if (userLogin.equals(resultSet.getString("login"))
                        && userPassword.equals(resultSet.getString("password"))
                        && userDepartment.equals(resultSet.getString("department_id"))) {
                    isValid = true;
                    break;
                }
            }

            if (isValid) { //checking correctness of validation and redirecting to proper department
                request.getRequestDispatcher(request.getRequestURI()+"/departments").forward(request, response);
            } else {
                request.setAttribute("message", "Incorrect login or password");
                request.getRequestDispatcher("/WEB-INF/pages/login.jsp").forward(request, response);
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        } finally { //closing connections
            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (statement != null) {
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }

    }

Сервлет диспетчера отдела:

   public class DepartmentController extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doPost(req, resp);
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        String userDepartment = req.getParameter("department");

        if ("1".equals(userDepartment)) {
            resp.sendRedirect("/departments/01/?"+req.getQueryString());
        } else if ("2".equals(userDepartment)) {
            req.getRequestDispatcher("/WEB-INF/pages/departments/dep_02.jsp").forward(req, resp);
        } else if ("3".equals(userDepartment)) {
            req.getRequestDispatcher("/WEB-INF/pages/departments/dep_03.jsp").forward(req, resp);
        } else if ("4".equals(userDepartment)) {
            req.getRequestDispatcher("/WEB-INF/pages/departments/dep_04.jsp").forward(req, resp);
        } else if ("5".equals(userDepartment)) {
            req.getRequestDispatcher("/WEB-INF/pages/departments/dep_05.jsp").forward(req, resp);
        } else if ("6".equals(userDepartment)) {
            req.getRequestDispatcher("/WEB-INF/pages/departments/dep_06.jsp").forward(req, resp);
        } else if ("7".equals(userDepartment)) {
            req.getRequestDispatcher("/WEB-INF/pages/departments/dep_07.jsp").forward(req, resp);
        } else if ("8".equals(userDepartment)) {
            req.getRequestDispatcher("/WEB-INF/pages/departments/dep_08.jsp").forward(req, resp);
        }  else {
            req.getRequestDispatcher("/WEB-INF/pages/login.jsp").forward(req, resp);
        }

    }
}
...