@Ethernets

Регистрация/Вход просмотр сообщений Servlet?

Подскажите, как правильно реализовать регистрацию новых абонентов?

Есть БД с таблицей registr и полями login, pass, message, online. Главный вопрос как проверять существует данный пользователь в БД или нет, потому как сейчас один и тот-же login можно создавать n-раз, на просторах читал что нужно обрабатывать через js?

Как тогда связать servlet с js или нужно связывать jsp с js? или всё вместе? Как собственно это происходит? Может у кого есть пример? Я думаю не одному мне будет полезна данная статья.

Дальше, интересно, если пользователь такой есть, как выводить tooltip с сообщением, что такой есть в базе? Затем интересно как работает вход в систему, а именно как запоминать, что пользователь авторизовался. Тут я думаю spring security справиться с этим вопросом?

Далее, хотелось бы знать как вести подсчет пользователей, сколько зарегистрировано (тут я думаю можно sql - запросом посчитать сколько полей в бд ну или по id), как определить, сколько человек на данный момент онлайн?

И, конечно, пункт обратной связи, или сообщения, как сделать аналогично сообщениям на этом ресурсе или как в вк, то есть, если пришло сообщение определенному пользователю (я так понимаю тут формируем sql запрос для поиска человека в бд, и если такой есть, то в его поле message помещаем текст после нажатия на кнопку отправить), как сделать что бы оно отображалось сразу без обновления страницы.

Поделитесь пожалуйста своим опытом, интересными статьями, буду очень благодарен любым вашим советам, и вашим мнениям, помогите разобраться, может вы как специалисты видите эту реализацию иначе. Всем большое спасибо
  • Вопрос задан
  • 1153 просмотра
Пригласить эксперта
Ответы на вопрос 3
@sirs
Совет от меня: разделите вашу ну уж очень объемную задачу на несколько более мелких. Потому как у вас в одном вопросе сразу десять вопросов. Берете свое тз/задание/проект и пилите на мелкие понятные части, чем мельче - тем лучше. И решаете проблемы постепенно, степ бай степ.

Есть БД с таблицей registr и полями login, pass, message, online. Главный вопрос как проверять существует данный пользователь в БД или нет, потому как сейчас один и тот-же login можно создавать n-раз, на просторах читал что нужно обрабатывать через js?

Юзер попадает на страницу login.jsp или index.jsp, вводит свой login и password, нажимает кнопку login/sing in - вы отправляете post запрос на сервер в свой сервлет. Сервлет вызывает ваш UserService, сервис должен вызвать Dao и извлечь сущность User из бд. Далее обычно введенные юзером креды прогоняются через md5 или еще что-нибудь и сравниваются с теми, которые были извлечены из бд. Если совпадают - юзер либо получает rights либо добавляется в некий список и получает доступ к остальным ресурсам. Права на доступ обычно проверяют в Filter при запросе ресурса.
Если не хотите заморачиваться с самодельным велосипедом, то да - смотрите spring-security, по нему достаточно много материалов и примеров.
Что вы имели ввиду, когда упоминали js ? В контексте собрать данные из login form и сделать submit на сервер? Или вы ищите способ с помощью js достать данные из бд?
Ответ написан
Комментировать
@MrBe
sirs правильно сказал. Разбейте задачу на более мелкие задачи.
Если я правильно понял вашу проблему, то решение может быть таким.
Пользователь ввел данные, нажал кнопку login/sing up у вас отправился POST запрос на сервер. Данный запрос будет обрабатывать какой-то конкретный Action в нем уже будет вызываться Service -> Dao -> BD. Design pattern: Front Controller + Strategy (stackoverflow.com/a/3542297/6099067). В сервисе мы дергаем запись из таблицы User смотрим, если такой есть, проверяем пароль и переадресовываем его куда нужно. Если такого пользователя не существует или пароль не совпадает, то переадресовываем пользователя на ту же страницу входа но уже с ошибкой, мол, сори друг такого пользователя у меня в БД нет.

В случае когда пользователь хочет зарегистрироваться с уже имеющимся в БД логином, то есть несколько вариантов. Можно что-бы когда он нажмет sing up на сервак отправился запрос, этот запрос будет обрабатываться каким-то RegistrationAction и он уже будет решать как и что делать. Варианты: Action дергает Service и сперва спрашивает, существует ли пользователь с таким логином, если нет, то ок -> добавь его в бд, если есть, то переадресовываем пользователя на ту же страницу регистрации и кидаем ему message мол сори такой логин уже занят. Это все произойдет при нажатии на кнопку login/sing up..... Если необходимо сделать проверку на вхождение логина в бд еще до того как пользователь нажмет кнопку, т.е. как только он введет логин и переключится на другое поле, то мы в JS создаем скрипт который по технологии AJAX пошлет запрос на сервер, к примеру в CheckLoginAction, который возьмет логин и проверит его на вхождение в бд, если входит, то пересылаем назад пользователю message мол сори такой логин занят, если все хорошо и не входит, то ничего не посылаем. Затем этот message при выходе из JS функции отображаем. JS позволяет редактировать код страницы налету.
Ответ написан
Комментировать
@Ethernets Автор вопроса
Что вы имели ввиду, когда упоминали js ? В контексте собрать данные из login form и сделать submit на сервер? Или вы ищите способ с помощью js достать данные из бд?

Да я хочу когда пользователь ввел логин, данные проверялись в бд и выводилось сообщение если такой пользователь уже существует, и запрещать регистрацию соответственно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы