Домашнее задание чат

Чат сделал не весь. Не уверен что авторизация пользователя работает и работает правильно. Буду благодарен за подсказки, замечания, комментарии.

Серверная часть - ChatEEServer/src/ua/kiev/prog at master · romanromancow/ChatEEServer · GitHub
Клиентская часть - ChatEEClient/src/ua/kiev/prog at master · romanromancow/ChatEEClient · GitHub

По поводу авторизации:
Вы создали класс юзер на сервере и на клиенте, это правильно, но вы не отправляете json класса User и нет проверки авторизации.
Что нужно сделать дальше?

  1. Создать метод с пост запросом, чтобы отправить на сервер класс User, по аналогии, также как вы отправляете сообщение.
  2. Принять его на сервере в сервлете.
  3. Создать список юзеров на сервере, можно по типу, как хранятся сообщения.
  4. Сделать проверку, есть ли юзер который пришел с клиента, в этом списке, если есть, то сверить пароль, если все сходится- отправить код подтверждения, если нет- то ошибки.
    Если в списке такого юзера нет- сохранить и отправить код подтверждения.
  5. На клиенте принять этот код, и вернуть в консоль ответ пользователю, правильно он ввел данные или нет.
    Это и будет авторизация.
    Также, зачем вы спрашиваете в Message и PrivateMessages еще раз имя пользователя, если вы уже сделали класс с его именем и паролем, можно в эти методы передавать этот параметр.+ Название методов не должны быть с заглавной буквы.
2 симпатии

Спасибо за ответ. Возникли дополнительные вопросы. По порядку 1. На клиенте в классе user я прописал метод с Post запросом по аналогии с отправкой сообщений. 2 Принять его на сервере на сервлете. Здесь вопрос - нужно создать еще отдельный UserServlet? Если отдельный то тогда, надо прописать сервлет на web xml? 3. Сделал. По 4. тут сложно - много не понятного, в каком классе и где именно писать код для проверки? Я так понимаю нужно использовать условный оператор if else? ну и 5 тоже будет вопрос.

Да, конечно, нужно делать в новом сервлете, его можно прописать и в вебексемеле как в примере чата уже есть , можно и пометить аннотацией “@WebServlet”, как мы это проходили на первых занятиях.
В каком классе делать проверку? Ну в новом классе сервисе, его ж в виде метода никуда и не добавить, по смыслу, да и потом в таком коде сложнее разбираться будет, так что я бы создавал новый класс какой-то, например “UserAutorization”, так как список юзеров находится на сервере уже, то и проверку тоже делать там. Ну а как делать, да, в цикле со списка проверять, есть ли юзер с таким именем через операторы “if else”.

2 симпатии

Привет, переделал чат. Не уверен, передаю ли я данные по авторизации юзера с клиента на сервер, мне кажется что нет. Подскажите что там не так, где поправить код?

Клиентская часть -ChatEEClient1/src/ua/kiev/prog at master · romanromancow/ChatEEClient1 · GitHub Серверная часть - ChatEEServer1/src/ua/kiev/prog at master · romanromancow/ChatEEServer1 · GitHub

Если проблема только в этом, то нет мапинга сервлета. Либо в веб.хмл сделай это, либо аннотацией в самом сервлете.
И там уже смотри по ошибкам, которые будут у тебя.

2 симпатии

Спасибо, прописал маппин сервлета в xml и вроде как работает. Теперь стало понятней как работают приложения на сервлетах.
Ссылки на финальный чат ниже
Клиент - https://github.com/romanromancow/ChatEEClient1
Сервер https://github.com/romanromancow/ChatEEServer

public class AddServlet extends HttpServlet {// сервлет для обработки входящих сообщений

Зачем работать с голыми массива байт?? Запросы это строка в Java полно классов реализующих символьные потоки, зачем куча логики с рабой с байтовыми потоками? В конце концов все равно строку из них получаете, не проще ли бы сразу использовать символьные потоки и сделать в одну строку?

Ну и так далее во всех сервлетах.

1 симпатия

Александр, спасибо за ответ