Это web-приложение, которое позволяет хранить список пользователей в базе данных, а также хранить дополнительную информацию о пользователях (имя, фамилия, email, телефон, дата рождения и тд). Диалог с пользователем осуществляется через ответы пользователя на вопросы (как анкета). Ответы на вопросы могут быть как текст, так и как выпадающий список. Корректность пользовательского ввода проверяется. Имеются механизмы для администрирования приложения. Приложение узко специализированно. Не реализовано шифрование данных. Не реализованы (и не подразумевается) аутентификация и авторизация. В проекте использовались
- frameworkes :
AngularJS,Hibernate - IDE :
IntelliJ IDEA Ultimate 2016.1 - контейнер :
Apache Tomcat 9 (TomEE) - СУБД :
MySQL 5.5
Приложение делится на две части: часть для пользователя и часть администратора.
Пользователь имеет следующие возможности:
- создать учётную запись,
- редактировать информацию о себе (отвечать на вопросы).
Для создания нового пользователя или редактирования уже существующей информации пользователю необходимо ввести свои имя и фамилию. Реализован механизм, позволяющий в одной базе данных хранить несколько пользователей с одинаковыми именем и фамилией.
Администратор имеет следующие возможности:
- редактировать вопросы, на которые необходимо ответить пользователю
- добавлять варианты ответов к вопросам, ответы на которые - выпадающий список (редактор выпадающих списков)
- выгружать информацию о нескольких пользователях в файл xls;
- получать информацию об изменении данных пользователей по электронной почте (примитивное логгирование).
В редактирование вопросов входит:
- добавление новых вопросов,
- редактирование формулировок уже созданных вопросов,
- установка видимости вопроса пользователю,
- установка шаблона для проверки корректности пользователем данных.
Важно! Ряд вопросов является обязательными и не изменяемыми администратором. Чтобы иметь возможность их изменять, необходимо в базе данных в таблице QuestionsTable изменить поле cchange с 0 на 1.
- Создаём пустой проект Maven без использования архетипов.
- В файл
pom.xmlпрописываем зависимости. (см. файл pom.xml) - Создаём базу данных
Accauntsв СУБДMySQL 5.5. Для этого используем файлCreateTables.sql. - Подключаемся к созданной базе. Справа вкладка
Database. Жмём "+". Выбираем MySQL. Вводим параметры и проверяем соединение. - В качестве модулей подключаем к проекту
WebиHibernate. Для этого в настройках проектаFile-->Project Structure...(Ctrl+Alt+Shift+S) во вкладке Modules жмем слева сверху на "+". При добавленииHibernateсправа сверху жмём на "+" и добавляемhibernate.cfg.xml. При добавленииWebоставляем всё без изменений. Пункты 6-12 можно пропустить, так как иерархия файлов и основные настройки в xml уже выполнены. Требуется только обратить внимание на пункт 8. - В папочке
src/main/javaсоздаём пакетыru.dao,ru.frontend,ru.backend. - Далее займёмся создание объектов из базы. Слева снизу открываем вкладку
Persistence. ПКМ по названию проекта. ВыбираемGenerate Persistence Mapping-->By Database Schema. Выбираем установленное ранее подключение к БД. Обязательно проверяем, чтобыPackageбылru.dao,suffix-Entity. Выбраныprefer primitive types,Show default relationship,Add Session Factory,Generate Column Properties,Generate JPA Annotations(Java5). Выбираем все таблицы и жмёмOK. - Редактируем файл
hibernate.cfg.xml. Добавляем диалектMySQL, имя пользователя и пароль пользователя, под которым будет работатьhibernate. (см. hibernate.cfg.xml) - Правим сгенерированные классы.
-
В классы с
PKв@Columnдобавляемinsertable = false, updatable = false; -
В классы
Date-,Int-,Lists-,StrTableEntityв связи в графе@JoinColumnдобавляемnullable = false, insertable = false, updatable = false. -
В классах
UsersEntityиQuestionsEntityпытаемся получитьТаким образом настраивается
AUTO_INCREMENTдля полей, на которых он задан в БД.
-
- Добавим скаченные Maven'ом зависимости. Настройка проекта (
Ctrl+Alt+Shift+S),Artifacts. Добавляем все доступные. - Распределяем классы по пакетам. (см. иерархию)
- Проверяем наличие в
web.xmlтэгаwelcome-list(см. web.xml). - Настройка запуска.
Run-->Edit configurations...Слева сверху жмём "+". ВыбираемTomcat Server-->Local. Помимо настроек добавляем во вкладкеDeployment, нажав на "+" справа, артефакты. - Готово.
Остальное описание проекта в файле ReadMe.txt. В этом файле представлены:
- логика работы приложения
- последовательность отправки и структура json
- список некорректностей и недоработок
- список особенностей, на которые стоит обратить внимание
- сборка проекта из исходного кода
- иерархия файлов

