Работа с авторизацией: проверка и метод login
В предыдущих уроках частично реализована авторизация с кнопкой «Войти», вызывающей метод login() для авторизации пользователя. Дальнейшая работа с классом контроллера будет осуществлена позже. Сейчас рассмотрим класс DataBaseHandler.
Класс DataBaseHandler: импорт библиотек и метод getUser
Этот класс отвечает за получение данных из базы данных. Вместо импорта всего java.sql.* импортируем только необходимые классы (java.sql.ResultSet и др.), чтобы избежать избыточности.
Метод getUser получает данные из базы данных и возвращает ResultSet — набор данных. Например, для пользователя с id=1, ResultSet содержит значения (username, password, location и т.д.). Метод может возвращать одного или нескольких пользователей.
Логика метода:
- Создается переменная ResultSet resultSet = null.
- Создается SQL-запрос: "SELECT * FROM users WHERE username = ? AND password = ?". ? — замещающие параметры.
- Запрос подготавливается с логином и паролем пользователя.
- Запрос выполняется (statement.executeQuery()) и результат присваивается resultSet.
- Возвращается resultSet. Пустой объект возвращается, если пользователь не найден.
public ResultSet getUser(User user) throws SQLException {
ResultSet resultSet = null;
String sql = "SELECT * FROM users WHERE username = ? AND password = ?";
PreparedStatement statement = connection.prepareStatement(sql);
statement.setString(1, user.getUsername());
statement.setString(2, user.getPassword());
resultSet = statement.executeQuery();
return resultSet;
}
Класс Controller: обработка авторизации
В классе Controller добавим функционал обработки авторизации:
- Создаем объект DataBaseHandler: DataBaseHandler dbHandler = new DataBaseHandler();
- Создаем объект User: User user = new User();
- Извлекаем логин и пароль из полей ввода:
user.setUsername(loginText.getText());
user.setPassword(loginPassword.getText());
- Вызываем dbHandler.getUser():
ResultSet resultSet = dbHandler.getUser(user);
- Используем цикл while для обработки resultSet. counter считает найденных пользователей.
int counter = 0;
while (resultSet.next()) {
counter++;
}
- Проверяем counter. Если counter ≥ 1, пользователь найден. В этом уроке выводится сообщение об успехе. Полная авторизация будет в следующих уроках.
if (counter >= 1) {
System.out.println("Access granted!");
}
Обработка исключений:
Добавим обработку исключений SQLException:
try {
// ... код обработки авторизации ...
} catch (SQLException e) {
e.printStackTrace();
}
Также добавим пустой конструктор в класс User.
Тестирование
После добавления пустого конструктора в класс User, тестируем приложение. Вводим корректные логин и пароль. При успешной авторизации в консоли выводится «Access granted!». При некорректных данных сообщение не выводится.
В этом уроке реализован механизм получения данных пользователя из базы данных. Мы научились выбирать данные и реализовали необходимый функционал. Полная реализация авторизации будет в следующих уроках.