- Магазин має каталог Товарів, для якого необхідно реалізувати можливість:
- сортування за назвою товару (az, za);
- сортування товарів за ціною (від дешевих до дорогих, від дорогих до дешевих);
- сортування товарів за новизною;
- вибірки товарів за параметрами (категорія, проміжок ціни, колір, розмір, тощо).
- Користувач переглядає каталог і може додавати товари до свого кошика. Після додавання товарів у кошик, зареєстрований користувач може зробити Замовлення. Для незареєстрованого користувача ця опція недоступна. Після розміщення замовлення, йому (замовленню) присвоюється статус 'зареєстрований'.
- Користувач має особистий кабінет, в якому може переглянути свої замовлення.
- Адміністратор системи володіє правами: - додавання/видалення товарів, зміни інформації про товар; - блокування/розблокування користувача; - переведення замовлення зі статусу 'зареєстрований' до 'оплачений' або 'скасований'.
- Apache Tomcat 10
- JDK 16+
- MySQL 8.0 / MariaDB
Завдання фінального проекту - розробити веб-застосунок, що підтримує функціональність відповідно до варіанту завдання
- На основі сутностей предметної області створити класи, які їм відповідають.
- Класи і методи повинні мати назви, що відображають їх функціональність, і повинні бути
рознесені по пакетам.
- Оформлення коду має відповідати Java Code Convention.
- Інформацію щодо предметної області зберігати у реляційній базі даних (в якості СУБД
рекомендується використовувати MySQL або PostgreSQL)
- Для доступу до даних використовувати JDBC API із застосуванням готового або ж
розробленого самостійно пулу з'єднань.
НЕ допускається використання ORM фреймворків
- Застосунок має підтримувати роботу з кирилицею (бути багатомовним), в тому числі при
зберіганні інформації в базі даних:
- повинна бути можливість перемикання мови інтерфейсу;
- повинна бути підтримка введення, виведення і зберігання інформації (в базі даних), записаної на різних мовах
- в якості мов обрати мінімум дві: одна на основі кирилиці (українська або російська),
інша на основі латиниці (англійська).
- Архітектура застосунка повинна відповідати шаблону MVC.
НЕ допускається використання MVC-фреймворків
8. При реалізації бізнес-логіки необхідно використовувати шаблони проектування: Команда, Стратегія, Фабрика, Будівельник, Сінглтон, Фронт-контролер, Спостерігач, Адаптер та ін.
Використання шаблонів повинно бути обґрунтованим
-
Використовуючи сервлети і JSP, реалізувати функціональність, наведену в постановці завдання.
-
Використовувати Apache Tomcat у якості контейнера сервлетів.
-
На сторінках JSP застосовувати теги з бібліотеки JSTL та розроблені власні теги (мінімум: один тег custom tag library і один тег tag file).
-
Реалізувати захист від повторної відправки даних на сервер при оновленні сторінки (реалізувати PRG).
-
При розробці використовувати сесії, фільтри, слухачі
-
. У застосунку повинні бути реалізовані аутентифікація і авторизація, розмежування прав доступу користувачів системи до компонентів програми. Шифрування паролів заохочується.
-
Впровадити у проект журнал подій із використанням бібліотеки log4j.
-
Код повинен містити коментарі документації (всі класи верхнього рівня, нетривіальні методи і конструктори).
-
Застосунок має бути покритим модульними тестами (мінімальний відсоток покриття 40%). Написання інтеграційних тестів заохочуються
-
Реалізувати механізм пагінації сторінок з даними.
-
Всі поля введення повинні бути із валідацією даних.
-
Застосунок має коректно реагувати на помилки та виключні ситуації різного роду (кінцевий користувач не повинен бачити stack trace на стороні клієнта)
-
Самостійне розширення постановки задачі по функціональності заохочується! (додавання капчі, формування звітів у різних форматах, тощо)
-
Використання HTML, CSS, JS фреймворків для інтерфейсу користувача (Bootstrap, Materialize, ін.) заохочується!
За три дні до моменту старту захистів проектів (інтерв’ю) необхідно підготувати у вигляді окремого файлу схему бази даних, а також надати посилання на репозиторій із проектом