Технология JSP. Теоретические основы разработки приложений с применением jsp страниц и сервлетов, страница 7

sq = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);

}catch(Exception e){ e.printStackTrace();}

}

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

int action = Integer.parseInt(request.getParameter("action"));

//анализируется код операции

switch (action) {

case LOGIN_ACTION : login(request, response); break;

case UPDATE_PREPOD_ACTION : updatePrepod(request, response); break;

case DELETE_PREPOD_ACTION : deletePrepod(request, response); break;

case ADD_PREPOD_ACTION : addPrepod(request, response); break;

case SUBJECT_ACTION : subjectAction(request, response); break;

}

}

private void login(HttpServletRequest request, HttpServletResponse response) {

String user = "unauthorized";

String login = request.getParameter("login");

String password = request.getParameter("password");

try {

HttpSession session = request.getSession();

Запрашиваем из базы данных преподавателей данные о пользователе с введенными реквизитами

ResultSet rs = sq.executeQuery("SELECT name FROM prepods WHERE login='" + login + "' AND password ='" + password+"'");

                          Если таковые есть, запоминаем имя пользователя и устанавливаем его в качестве атрибута сессии

if (rs.next()) user = rs.getString("name");

session.setAttribute("user", user);

session.setAttribute("statement", sq);

response.sendRedirect("manager.jsp");

} catch (Exception e) { e.printStackTrace(); }

}

private void updatePrepod(HttpServletRequest request, HttpServletResponse response) {

//обновление данных о преподавателе в БД

try{

String user = request.getParameter("user");

String column = request.getParameter("column");

String value = request.getParameter("value");

HttpSession session = request.getSession();

if ((column.compareTo("") != 0)&&(value.compareTo("") != 0)&&(user.compareTo("") != 0))

{              Если поля непустые, посылаем базе запрос на обновление соответствующих полей

sq.executeUpdate("UPDATE prepods SET " + column + "='"+ value +"' WHERE name='" + user + "'");

if (column.compareTo("name") == 0) {

Если изменения коснулись имени пользователя, меняем и атрибут сессии

sq.executeUpdate("UPDATE subjects SET " + column + "='"+ value +"' WHERE name='" + user + "'");

user = value;

session.setAttribute("user", user);

}

}

Перенаправляем пользователя на main.jsp

response.sendRedirect("main.jsp");

} catch (Exception e) {e.printStackTrace();}

}

private void deletePrepod(HttpServletRequest request, HttpServletResponse response) {

HttpSession session = request.getSession();

String name = (String)session.getAttribute("user");

Формируем два запроса на удаление данных о пользователе, один на удаление данных из таблицы преподавателей, другой – из таблицы предметов. Критерий удаления – имя пользователя

String query = "DELETE FROM prepods WHERE name='" + name + "'";

String query2 = "DELETE FROM subjects WHERE name='" + name + "'";

try {

sq.executeUpdate(query);

sq.executeUpdate(query2);

После удаления перенаправляем пользователя на выход из системы

response.sendRedirect("logout.jsp");

} catch (SQLException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}

}

private void addPrepod(HttpServletRequest request, HttpServletResponse response) {

String name = request.getParameter("name");

String login = request.getParameter("login");

String password = request.getParameter("password");

if ((name != null)&&(login != null)&&(password != null))

{      Проверяем корректность пришедших данных, если все ок, формируем запрос к базе на добавление

String query = "INSERT INTO prepods (name, login, password) VALUES('" + name +"', '" + login + "', '" + password +"')";