Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
 Аватар для Dostik
38 / 38 / 4
Регистрация: 31.05.2011
Сообщений: 580

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

24.03.2016, 21:31. Показов 3653. Ответов 38

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток, подскажите, как правильно реализовать регистрацию новых абонентов?

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

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

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

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

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

Поделитесь пожалуйста своим опытом, интересными статьями, буду очень благодарен любым вашим советам, и вашим мнениям, помогите разобраться, может вы как специалисты видите эту реализацию иначе. Всем большое спасибо
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.03.2016, 21:31
Ответы с готовыми решениями:

Ошибка javax.servlet.ServletException: Error instantiating servlet class myclasses.StudentServlet
Здравствуйте еще раз, выскочило исключение показанное ниже В класспатч добюавил библиотечку j2ee.jar но все равно ругается, в web.xml...

Передача html страниц Servlet -> Servlet
суш4ествует сервлет, кoтoрий генерит хтмл, кaк при випoлнении oпределйoннoгo услoвийa передaтъ упрaвление другoму Сервлету? При етoм...

Не работает import javax.servlet.*, javax.servlet.http.* в J2EE
Скачал сайта сан J2EE SDK самую последню... j2eesdk-1_4_02_2005q2-windows-ml.exe(133 Mb) так вот не работает import javax.servlet.*,...

38
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
25.03.2016, 09:11
Студворк — интернет-сервис помощи студентам
Любопытный, да и по этому написал при успешной авторизации...
0
 Аватар для Dostik
38 / 38 / 4
Регистрация: 31.05.2011
Сообщений: 580
25.03.2016, 09:12  [ТС]
asus, спасибо, но мне конечно легче хранить как сказал Любопытный, в бд и делать выборку.
Кстати друзья столкнулся с очередной проблемой не допонимания, делаю пока проверку без ajax,
Java
1
2
3
4
5
6
7
8
9
10
 protected void processRequest (HttpServletRequest request, HttpServletResponse response) 
                         throws ServletException, IOException {
        
        Session session = HibernateUtil.getSessionFactory().openSession();
        String nick =  request.getParameter("nick");
        session.beginTransaction();
        String userp = "Select login from dbuser where login ="+nick;
        SQLQuery userps = session.createSQLQuery(userp);
        userps.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
    }
Чучуть запутался с сравниванием, обернуть в try {} catch (){} ?? или вы это делаете по другому ? запутался вообщем с проверкой, подскажите как правильно реализовать ?
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
25.03.2016, 09:21
Dostik, чтоб пользователям было удобнее можете повесит полям свой обработчик, которые сходу или при смене фокуса будет проверять данные и отвечать на вопрос (есть ли такой логин или e-mail в БД) и показывает пользователю что можно дальше заполнять либо скажет "такой логин уже был зарегистрирован...". т.е. это дает возможность пользователю не тратить время зря и естественно в конце эксепшн

Добавлено через 5 минут
Dostik, я когда говорил TreeSet я имел ввиду не хранить всех пользователей а при авторизации только будете хранить логин, это дает возможность узнать кто щас сидит на сайте.
а так все данные будут хранятся в БД это уж точно если нет особых требований...
1
 Аватар для Dostik
38 / 38 / 4
Регистрация: 31.05.2011
Сообщений: 580
25.03.2016, 09:39  [ТС]
не понял что именно обворачивать ? какую часть ?
Java
1
2
3
String userp = "Select login from dbuser where login ="+nick;
        SQLQuery userps = session.createSQLQuery(userp);
        userps.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
Вот это или как-то иначе ?

Добавлено через 17 минут
Не могу вытащить данные с userps, Если оборачивать в List test = userps.list();, то данные как бы отображаются но как сделать проверку ?
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
25.03.2016, 09:48
Dostik, вопрос не совсем понятен, или я не совсем понял
и кстати лучше будет наверное List <POJO class> test = userps.list();

и ещё
Java
1
2
3
4
5
6
7
try{
//тут запросы и другие действия
}catch(Exception e){
//тут что делать при не успешном завершение запроса...
//допустим вот: выводит в консол ошибку...
sop(e);
}
0
149 / 162 / 48
Регистрация: 19.10.2012
Сообщений: 530
25.03.2016, 09:54
Цитата Сообщение от asus Посмотреть сообщение
Любопытный, да и по этому написал при успешной авторизации...
Тогда как отрабатывать таймаут сессии? Нужно вешать SessionListener-ов, в которых тоже нужно учесть ряд нюансов. Я когда то задавался этим же вопросом, и мне правильно ответили - это все уже реализовано на стороне контейнера.

Добавлено через 3 минуты
Цитата Сообщение от Dostik Посмотреть сообщение
то данные как бы отображаются но как сделать проверку ?
Если данные есть то значит юзер такой есть, если данных нет то и юзера нет.
Цитата Сообщение от Dostik Посмотреть сообщение
"Select login from dbuser where login ="+nick;
Сделай
SQL
1
SELECT COUNT(login) FROM .....
и получай число 0 или 1, раз уж так.
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
25.03.2016, 09:58
Цитата Сообщение от Любопытный Посмотреть сообщение
Тогда как отрабатывать таймаут сессии?
разве не оно?:
XML
1
2
3
<session-config>
    <session-timeout>5</session-timeout>
</session-config>
да листенеры нужны.

З.Ы. я со Спрингом не знаком, и может там есть свои плюшки или может там по другому делается все это...
0
149 / 162 / 48
Регистрация: 19.10.2012
Сообщений: 530
25.03.2016, 10:01
Цитата Сообщение от asus Посмотреть сообщение
разве не оно?:
Это период таймаута, а сам факт таймаута еще нужно корректно отработать, сессия может устареть но в системе фактически не сброситься до следующего запроса от клиента.
0
 Аватар для Dostik
38 / 38 / 4
Регистрация: 31.05.2011
Сообщений: 580
25.03.2016, 10:05  [ТС]
Цитата Сообщение от Любопытный Посмотреть сообщение
раз уж так.
Не совсем нравиться эта часть ответа как бы это реализовали вы ?
Цитата Сообщение от Любопытный Посмотреть сообщение
Если данные есть то значит юзер такой есть, если данных нет то и юзера нет.
Ну вот например я сделал запрос выше и передаю в where имя которое уже есть в базе ? и как теперь вывести сообщение что такой есть и запретить добавление в базу ?
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
25.03.2016, 10:15
Цитата Сообщение от Любопытный Посмотреть сообщение
Сделай
SELECT COUNT(login) FROM .....
и получай число 0 или 1, раз уж так.


можно и так можно чуть по другому, типа:
какой то что то возвращающий метод, на нем свой запрос:
Java
1
2
3
4
5
6
7
8
9
public User getUserByID(String login){
    try{
          //тут запрос и с параметром login, и возвращаем полученный ответ
          return ****;  
    } catch(Exception e){
          //если такого логина нет то возвращаем значение НУЛ
          return null;
    }
}
дальше будем проверять на нул...
как то так.

Добавлено через 6 минут
Цитата Сообщение от Dostik Посмотреть сообщение
Ну вот например я сделал запрос выше и передаю в where имя которое уже есть в базе ? и как теперь вывести сообщение что такой есть и запретить добавление в базу ?
опять таки уже ответили
и то что предлагал Любопытный тоже вариант.
Т.е.: получаете либо 0 либо 1, это означает если 0 то дальше добавляем нового пользователя если 1 значить уже в базе существует такой пользователь или пользователь с таким логином. Вот и вся логика
а на моем точно такой же только проверка не на 0 или 1 а на нулл...

Добавлено через 1 минуту
Цитата Сообщение от Любопытный Посмотреть сообщение
сессия может устареть но в системе фактически не сброситься до следующего запроса от клиента.
пока что не сталкивался...
1
 Аватар для Dostik
38 / 38 / 4
Регистрация: 31.05.2011
Сообщений: 580
25.03.2016, 10:24  [ТС]
Если я правильно понимаю count будет возвращать то число сколько одинаковых имен, 0.1.2 ... n, но так как мы подразумеваем то что login уникальное имя то у нас будет либо 1 либо 0 ? Вот что еще нашел на просторах :
категорически не стоит делать данное поле уникальным бездумно.Уникальность поля будет означать что каждый раз когда вы соберетесь выполнить операции с изменением данных (в том числе и Update) у вас будет происходить проверка на отсутствие аналогов.А это избыточность.Используйте проверку по месту создайте кэшированный запрос PreparedStatement и используйте его каждый раз при заполнении поля...Поле же отправляете на сервер динамически проверять (тут в помощь JS)
Но тут один момент можно ли реализовать данный кэш запрос в Hibernate ?
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
25.03.2016, 10:28
Dostik, представьте что вы попали на необитаемый остров и до темноты вам нужно построить шалашчтобы пережить ночь, однако вы решили построить себе трёх этажный особняк. Это то чем вы сейчас занимаетесь. Никакой Кеш и никакие оптимизации апдейтов вам ненужны. Забудьте про них вообще.
1
 Аватар для Dostik
38 / 38 / 4
Регистрация: 31.05.2011
Сообщений: 580
25.03.2016, 10:33  [ТС]
KEKCoGEN, Большое вам спасибо, а то уже каша в голове.
Далее все же не до конца пойму, вот запрос вернул мне например 1 (как теперь это показать пользователю ?)
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
25.03.2016, 10:36
Dostik, по другому как Вы собираетесь достичь уникальности логина? и почти везде реализована прям так, т.е. у них нет возможность редактировать именно логин. и у Вас будет так, а если хотите чтоб у пользователей был возможность редактировать свой логин то тогда зачем проверка? чтоб не был одинаковых логинов или что?

Цитата Сообщение от Dostik Посмотреть сообщение
Поле же отправляете на сервер динамически проверять (тут в помощь JS)
я про это и говорил Регистрация/Вход просмотр сообщений Servlet?
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
25.03.2016, 10:39
Dostik, передайте ошибку как параметр в jsp и там показывайте её.
https://www.tutorialspoint.com... if_tag.htm
0
149 / 162 / 48
Регистрация: 19.10.2012
Сообщений: 530
25.03.2016, 10:41
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
Забудьте про них вообще.
+
Слишком слабая база для таких хотелок, делай что то попроще.
Цитата Сообщение от Dostik Посмотреть сообщение
А это избыточность.
Не думаю что рега это настолько критический момент, который может вылиться в bottle neck.
Цитата Сообщение от Dostik Посмотреть сообщение
Используйте проверку по месту создайте кэшированный запрос PreparedStatement и используйте его каждый раз при заполнении поля...Поле же отправляете на сервер динамически проверять (тут в помощь JS)
Сомневаюсь что это даст бОльшую производительность. В любом случае нехороший человек(редиска) может сгенерировать запрос в обход твоей проверки JS, и тогда все равно нужно уникальность проверять перед созданием записи на сервере, что будет по затратам явно не меньше чем затраты субд на проверку уникальности поля.
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
25.03.2016, 10:46
и все же посоветовал бы для начала разбираться с JDBC+Servlet+JSP без всего этого, а уж потом дальше двигаться, хотя ИМХО
0
149 / 162 / 48
Регистрация: 19.10.2012
Сообщений: 530
25.03.2016, 10:50
Цитата Сообщение от asus Посмотреть сообщение
JDBC+Servlet+JSP
Или сразу взяться за JPA если уж имеет дело с pojo.
0
89 / 89 / 20
Регистрация: 19.02.2010
Сообщений: 966
25.03.2016, 10:54
Цитата Сообщение от Любопытный Посмотреть сообщение
Или сразу взяться за JPA если уж имеет дело с pojo.
там возникает примерно такие вопросы по этому лучше бы с основ... потом сюда же можно прикрутить pojo...
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.03.2016, 10:54
Помогаю со студенческими работами здесь

Intellij idea не может скачать зависимость javax.servlet.servlet:servlet-api:3.0.1
intellij idea не может скачать зависимость javax.servlet.servlet:servlet-api:3.0.1 Идет загрузка, потом пропадает, но зависимость...

Регистрация/Вход
Все доброго времени суток))) Помогите пожалуйста новичку делаю сайт на joomla и хотелось бы узнать как сделать регистрацию для нескольких...

Регистрация и вход
Здравствуйте, я учусь на 3 курсе, не могу сделать программу. Вот условие: Разработать программу, представляющую собой форму доступа к...

Регистрация и Вход
Подскажите пожалуйста как можно реализовать регистрацию пользователя и вход в консольном приложении??

Регистрация и вход пользователя
Здравствуйте! У меня проблема с регистрацией и авторизацией пользователя. Писала также, как по видео-уроку. Но у меня не связывается с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
39
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru