сервлет веб-приложения для запроса и отображения информации о пользователе из mysql

#java #mysql

#java #mysql

Вопрос:

Мне нужно выполнить задачу для веб-приложения, то есть создать страницу для отображения информации о клиенте, запрашивая их через идентификатор сеанса клиента (или какой-либо другой метод) и выполняя запрос MySQL в мою базу данных участников.

Последовательность должна быть следующей: 1. клиент входит в систему 2. сравните пароль клиента и базу данных членства, если совпадение, клиент сможет получить доступ к некоторым страницам 3. одна из этих доступных страниц (упомянутых в 2) будет содержать ссылку, которая затем будет запрашивать информацию о клиентев базе данных членства 4. запрошенные строки (результаты) будут отображаться на веб-странице с надлежащим css

просто отказ от ответственности, я полный новичок в Java

Имя таблицы базы данных членства = член

 id | first name | last name | address | telephone number
  

Я уже создал и настроил соединение jdbc с базой данных:

    public void init () throws ServletException {
      try {
         Class.forName("com.mysql.jdbc.Driver");

         conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/membership","root","");

         stmt = conn.createStatement();

      }  catch (ClassNotFoundException ex) {  // for Class.forName()
         ex.printStackTrace();
      }  catch (SQLException ex) {            // for getConnection()
         ex.printStackTrace();
      }
   }

         String query = "SELECT * FROM member WHERE xxx ";

         ResultSet rset = stmt.executeQuery(query);
  

мой вопрос: как мне получить необходимые строки для моей проблемы здесь? и как мне следует подойти к решению этого вопроса?

большое спасибо за ваш совет

Ответ №1:

«мой вопрос: как мне получить необходимые строки для моей проблемы здесь?»

Используйте свой объект ResultSet (rset). Затем извлеките все нужные вам столбцы. Что-то похожее на это:

  while (rs.next()) {
    int ID = rs.getInt("id");  
    String fName = rs.getString("first_name");
    String lName = rs.getString("last_name");
    String address = rs.getString("address");
    String phone = rs.getString("telephone_number");        
  }
  

Ответ №2:

Во-первых, я настоятельно рекомендую вам не использовать пробелы в именах столбцов (например, вместо этого используйте ‘_’).
Каковы ваши учетные данные пользователя для входа в систему? Я полагаю, что это имя пользователя или адрес электронной почты, а также пароль. Какой бы ни была первая часть этого (например, имя пользователя), вы можете использовать ее в качестве первичного ключа в вашей таблице членов. Итак, после того, как они вошли в систему, у вас уже есть имя пользователя, и это формирует предложение ‘where’ в вашем SQL-запросе. (Если они входят в систему с помощью email_address , все работает так же, используя это вместо имени пользователя.)

Итак, шаги

  1. Возьмите имя пользователя пароль от пользователя
  2. Выберите количество строк, соответствующих этой паре
  3. Если count == 1, то они аутентифицируются, в противном случае отклоняются
  4. Выберите другие поля, соответствующие имени пользователя
  5. Отображение пользователю

Не храните пароли открытым текстом, поэтому, какое бы преобразование вы ни применяли для их хранения, также примените его к заданному паролю, прежде чем выполнять # 2. Если вы решите, чтобы имя пользователя не было первичным ключом, убедитесь, что вы сделали его по крайней мере «уникальным» с помощью ограничения.