Форум программистов, компьютерный форум, киберфорум
Java EE (J2EE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 19.11.2015
Сообщений: 9

Несколько сущностей в одном веб-приложении и каждого свой кабинет.(Аутентификация и авторизация; java, jdbc)

07.07.2016, 00:25. Показов 1346. Ответов 5

Студворк — интернет-сервис помощи студентам

Добрый день, Уважаемые коллеги.
Пишу веб-приложение на java используя servlet API + JSP, DB MySQL + JDBC, Bootstrap и так далее.
Подскажите пожалуйста. Заранее очень благодарен.

У меня есть три сущности - Клиент(у него свой кабинет и он может записываться на прием к врачу, мед карта, история услуг и их оплаты и так далее, Доктор (тоже свой кабинет, там очень много статистики и функционала), Админ (у него свой кабинет, там тоже очень много разной статистики из базы данных вытягивается).

У меня возникло две проблемы.
1.Каким образом создавать эти сущности в Java ?
Варианты :
1) Классы (объекты) - Client, Doctor, Admin.(Такие же таблицы в базе данных (Пока-что планирую базу данных привести к первой нормальной форме, а дальше посмотрю.))
2) Класс User, а у него роли в базе данных, а также тип его сущности.
Но как тогда делать связи относящиеся к конкретной сущности в базе данных? И как с ними работать в Java?

2.Как разграничить их аутентификацию, авторизацию и форму для входа на сайт и в свои кабинеты, чтобы клиент не знал о других сущностях и так далее.

Помогите пожалуйста советом и подсказкой, так достаточно сильно запутался.
Задавайте любые вопросы.
Заранее огромное спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.07.2016, 00:25
Ответы с готовыми решениями:

Авторизация/аутентификация в приложении с БД MS SQL
Как можно более удобно сделать процесс авторизации с труднейшим способом ее взлома. Если писать в коде - код легко доступен - взлом легкий....

Авторизация в веб-приложении
Извините за глупый вопрос, но можете подсказать, как реализовать авторизацию в веб-приложении ASP.NET c поддержкой MVC? Мне нужно, чтобы в...

Несколько прокси в одном приложении
Всех приветствую! Недавно я начал изучать Си++, вот пишу мою программу... Проблема в следующем... В программе задаются 10 прокси из...

5
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
07.07.2016, 08:48
Konstantin10, правильно создавать таблицу USER и назначать ему роли. Если подразумевается только одна роль, то записывать её в поле, если много, сделать отдельную таблицу.

Использовать servlet API + JSP нерационально т.к это устаревшая технология. Для такого проекта подойдет Spring Boot + Vaadin

JDBC так же давно устарел и есть куда более удобные инструменты для работы с БД

Спринг так же решает проблемы авторизации пользователей в системе.

Одним словом если вы начинаете новый проект, нет смысла использовать устаревшие технологии.
0
1 / 1 / 0
Регистрация: 19.11.2015
Сообщений: 9
07.07.2016, 09:43  [ТС]
Большое спасибо за ответ.
Но меня к сожалению интересовали не технологии мною используемые,а реализация функционала.

Если в базе данных, все мои сущности храняться в таблице User, то как мне реализовать связи в базе данных?
Например у доктора есть рабочая смена и так далее, а админа и простого клиента нету у них свои связи. И еще много связей есть у одного, но нет у другого

Заранее признателен за помощь.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
07.07.2016, 10:47
Konstantin10, если вам нужен совет по проектированию структуры БД, задайте вопрос в соотв. разделе. Кроме того неплохо бы указать ваши функциональные требования. Как из первого поста следует что у доктора рабочая смена и какие связи есть у других типов юзеров?

В целом это неважно какие есть связи. Для рабочей смены создается отдельная таблица и в ней создается foreign key. К таблице юзеров.

Для более подробного ответа, создайте тему в соотв. разделе.

Ну и совет по технологиям это вам бонус. Использование устаревших технологий идет вам в минус как программисту если вы собираетесь строить приложение как проект для резюме. Если же это реальный проект, то это ещё хуже т.к значительно увеличит время разработки и понизит качество продукта.
1
1 / 1 / 0
Регистрация: 19.11.2015
Сообщений: 9
07.07.2016, 11:28  [ТС]
Спасибо за Ваши быстрые ответы.

Сейчас я Вам все уточню.
Проект действительно для резюме.

Во-первых, по поводу технологий. Я хочу использовать в этом проекте технологии по нарастающей. То есть в версии 1.0 -Servlet API + JSP, JDBC, и так далее. Версия 1.1 или 2.0(там будет видно) - Уже вместо JDBC, буду использовать JPA или Hibernate. В версии 3.0 + Spring. И так далее.

Во-вторых, по поводу связей.
У меня в слое с сущностями (было Client, Doctor и Admin),теперь класс User c ролями ROLE_CLIENT, ROLE_DOCTOR, ROLE_ADMIN.
Client, то есть User с ролью ROLE_CLIENT, может записаться на прием к доктору (User с ролью ROLE_DOCTOR), просмотреть свою мед. карту, получить счет к оплате и так далее.
А у User с ролью ROLE_DOCTOR, есть все записавшиеся на прием(и у записи на прием свой статус,в каком она состоянии) , рабочая смена - оказанные услуги, записи в мед карты и так далее.
user id=? role = ROLE_DOCTOR имеет все связи и данные(по внешнему ключу) что должны быть у доктора,
а user id=?, role = ROLE_CLIENT имеет связи и данные, что должны быть у клиента, но не имеет данных(по внешнему ключу) тех, что имеет доктор. и так далее.
Так вопрос в том, что получается в Java классе User нужно атрибутами указывать все связи что есть и у клиента и у доктора, но получается, что если создаем объект User с ROLE_CLIENT, то у него свои данные в полях хранятся, а поля, что относятся к доктору остаются null ?.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
07.07.2016, 12:03
Konstantin10, во-первых определитесь о чем вы спрашиваете. Структуру БД или структуру модели вашего приложения.

Относительно вашего вопроса о модели есть два варианта.
1.
В классе User должна быть информация только о юзере (имя, меил и.т.д). Всякие связи не должны сидеть в этом классе. В идеале у вас вообще не должно быть аггрегативных связей в модели т.к это доставит вам проблем в будущем.

Таким образом у вас будет например класс ЗаписьКДоктору в котором будет поле Long doctorId которое будет связывать это сущность с доктором

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


Цитата Сообщение от Konstantin10 Посмотреть сообщение
Я хочу использовать в этом проекте технологии по нарастающей. То есть в версии 1.0 -Servlet API + JSP, JDBC, и так далее. Версия 1.1 или 2.0(там будет видно) - Уже вместо JDBC, буду использовать JPA или Hibernate. В версии 3.0 + Spring.
Это утопия. Вам будет очень сложно внедрить новую технологию на смену старой чтобы внедрение прошло чисто без всякого рода заплаток. При таком подходе к версии 3.0 вы получите монстра-гибрида или вам придется все переписывать с нуля с использованием современных технологий.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.07.2016, 12:03
Помогаю со студенческими работами здесь

Несколько сокетов в одном приложении
Знакомый говорил, что если приложение будет держать несколько сокетов, то это может вызвать проблемы. Так ли это?

Несколько сокетов в одном приложении
Доброе время суток! Нужна помощь, нужно сделать прогу которая сразу работает с 2-мя сокетами. Задача: слушать 1-ый сокет и...

Несколько форм в одном приложении
Проблема состоит в следующем: Приложение состоит из формы, при нажатии на кнопку должно открыться окно для ввода нескольких данных и...

Несколько Proxy в одном приложении
Здравствуйте! Помогите, пожалуйста, с одной проблемой. Недавно на сервере Mail.Ru Агента в целях борьбы со спамерами сделали жёсткое,...

Несколько форм OpenGL в одном приложении
Всем доброго времени суток)) Столкнулся с такой проблемой, в приложении несколько форм OpenGL... Дописав первую форму, перешел к работе со...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru