Я хочу создать веб-приложение, которое позволит входить в систему с нескольких вкладок в одном браузере - разные пользователи для каждой вкладки.Не нашел что-то похожее в сети.Все вкладки совместно используют одну сессию, поэтому я думаю, что мне нужно создать новую сессию для каждой вкладки, но это кажется невозможным, потому что один экземпляр браузера содержит одну сессию.Каждый пользователь может получить доступ только к своему отделу.Пожалуйста, помогите мне.
Контроллер входа:
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);
}
}
}