Skip to content

Latest commit

 

History

History
108 lines (101 loc) · 11.1 KB

README.md

File metadata and controls

108 lines (101 loc) · 11.1 KB

🎓 Java Web Development
EPAM Systems
Minsk, Belarus (Минск, Беларусь)
March 2021
Final project: Online-shop

EN: All copyrights to the terms of the project provided below belong to the company EPAM
RU: Все авторские права на предоставленные ниже условия проекта принадлежат компании EPAM


📑 Содержание

  • Тема проекта
  • Требования к БД
  • Базовые требования к приложению
  • Минимальные требования к функциональности приложения
  • Схема БД
  • 🛒 Тема проекта

    Система Интернет-магазин. Администратор осуществляет ведение каталога товаров и акций. Клиент делает и оплачивает заказ на товары.

    На сайте можно посмотреть контактные данные интернет-магазина, каталог товаров и акций. Пользователь может войти в аккаунт или зарегистрировать новый. Реализована смена языков (RU и EN).
    При авторизации можно просмотреть свой профиль, добавить товары (при их наличии) в корзину или удалить их из неё. Также пользователь может оформить заказ и просмотреть все свои заказы.
    Администратор может добавить или изменить новый продукт и акцию. Реализован просмотр администратором всех активных заказов пользователей с их личной информацией, есть возможность подтверждения получения заказа или отмена его.

    📚 Требования к БД

    • Информация о предметной области должна храниться в БД
    • Если данные в базе хранятся на кириллице, рекомендуется применять кодировку utf-8
    • Технология доступа к БД только JDBC
    • Для работы с БД в приложении должен быть реализован потокобезопасный пул соединений, использовать synchronized и volatile запрещено
    • При проектировании БД рекомендуется использовать не более 6-8 таблиц
    • Работу с данными в приложении осуществлять посредством шаблонов DAO или Specification
    • Реализовать защиту от sql injection

    🗿 Базовые требования к приложению

    • Приложение реализовать применяя технологии Servlet и JSP
    • Архитектура приложения должна соответствовать шаблонам Layered architecture и MVC Controller может быть только двух видов: контроллер роли или контроллер приложения
    • Интерфейс приложения должен быть локализован; выбор из языков: EN|BE|DE etc
    • Приложение должно корректно обрабатывать возникающие исключительные ситуации, в том числе вести их логи. В качестве логгера использовать Log4J2/SLF4J
    • Классы и другие сущности приложения должны быть грамотно структурированы по пакетам и иметь отражающую их функциональность название
    • При реализации бизнес-логики приложения следует при необходимости использовать шаблоны проектирования (например, шаблоны GoF: Factory Method, Command, Builder, Strategy, State, Observer, Singleton, Proxy etc)
    • Для хранения пользовательской информации между запросами использовать сессию
    • Для перехвата и корректировки объектов запроса (request) и ответа (response) применить фильтры
    • Разрешается использовать технологии AspectJ и Web-services
    • При реализации страниц JSP следует использовать теги библиотеки JSTL
    • Использовать скриплеты запрещено
    • При реализации пользовательского интерфейса разрешается использовать любые технологии front-end разработки (js, AJAX)
    • Реализовать защиту от cross site scripting (xss)
    • Реализовать защиту от повторного выполнения запроса нажатием F5
    • Реализовать собственные теги
    • Просмотр “длинных списков” желательно организовывать в постраничном режиме
    • Валидацию входных данных производить на клиенте и на сервере
    • Документацию к проекту необходимо оформить согласно требованиям javadoc
    • Оформление кода должно соответствовать Java Code Convention
    • При развертывании приложения разрешается использовать технологию Maven
    • Приложение должно содержать тесты TestNG, JUnit, Mockito или EasyMock.

    ⚙ Минимальные требования к функциональности приложения

    • Авторизация (sign in) и выход (sign out) в/из системы
    • Регистрация пользователя и/или добавление артефакта предметной области системы
    • Просмотр информации (например: просмотр всех ставок тотализатора, статистики заказов, счетов и т.д.)
    • Удаление информации (например: отмена заказа, удаление сущности и т.д.)
    • Добавление и модификация информации (например: создать и отредактировать товар, создать и отредактировать заказ и т.д.)

    📊 Схема БД