- •Курсовая работа по дисциплине
- •Введение
- •Постановка задачи
- •Обоснование выбора технологий
- •Разработка структуры программы
- •1. Основные компоненты программы
- •2. Архитектура взаимодействия компонентов
- •3. Структура базы данных
- •4. Конфигурация проекта Maven
- •Разработка собственных классов
- •5.1. Модель данных (Model)
- •5.1.1. Класс Book
- •1. Поля:
- •2. Методы:
- •5.1.2. Класс User
- •1. Поля:
- •2. Методы:
- •5.1.3. Класс CartItem
- •1. Поля:
- •2. Методы:
- •5.2. Слой доступа к данным (dao)
- •5.2.1. Класс BookDao
- •1. Поля:
- •2. Методы:
- •5.2.2. Класс UserDao
- •1. Поля:
- •2. Методы:
- •5.2.3. Класс CartDao
- •1. Поля:
- •2. Методы:
- •5.2.4. Класс DatabaseConnection
- •1. Поля (константы подключения):
- •2. Методы:
- •5.3. Сервлеты
- •5.3.1. Класс BookServlet
- •1. Поля:
- •2. Методы http обработки:
- •5.3.2. Класс AuthServlet
- •1. Поля:
- •2. Методы http обработки:
- •5.3.3. Класс CartServlet
- •1. Поля:
- •2. Методы http обработки:
- •5.4. Конфигурация проекта Maven
- •5.4.1. Файл pom.Xml
- •Сценарии пользователя
- •Удаление книг из корзины.
- •Оформление заказа.
- •Инструкция пользователю
- •Начало работы с приложением
- •Создание личного кабинета
- •Вход в систему для постоянных клиентов
- •Исследование книжного каталога
- •Фильтрация книг
- •Формирование корзины покупок
- •Управление корзиной
- •Оформление заказа
- •Завершение работы
- •Заключение
- •Список литературы
- •Приложение
2. Методы http обработки:
2.1. Обработка GET запросов:
protected void doGet(HttpServletRequest request, HttpServletResponse response) – возвращает содержимое корзины пользователя
Проверка авторизации: извлекает userId из сессии, возвращает ошибку если не авторизован,
Получение данных: вызывает cartDao.getCartItemsByUserId(userId),
Формирование ответа: конвертирует список CartItem в JSON с полной информацией о книгах.
2.2. Обработка POST запросов:
protected void doPost(HttpServletRequest request, HttpServletResponse response) – обрабатывает все операции изменения корзины
Маршрутизация: анализирует request.getPathInfo() для определения операции (/add, /remove, /update, /purchase)
2.3. Приватные методы обработки операций:
private void handleAddToCart(HttpServletRequest request, HttpServletResponse response) – добавляет товар в корзину
Извлечение параметров: получает bookId из параметров запроса,
Выполнение операции: вызывает cartDao.addToCart(userId, bookId),
Ответ: возвращает простой JSON {"success": true/false}.
private void handlePurchase(int userId, HttpServletResponse response) – обрабатывает оформление покупки
Проверка наличия: для каждого товара в корзине проверяет, достаточно ли книг на складе,
Атомарное обновление: вызывает bookDao.decreaseBookQuantity() для каждого товара,
Транзакционная логика: если все обновления успешны — очищает корзину, иначе откатывает,
Ответ: возвращает детализированный JSON с результатом операции.
5.4. Конфигурация проекта Maven
Этот раздел описывает инфраструктурную часть проекта — конфигурационный файл Maven, который определяет весь жизненный цикл приложения.
5.4.1. Файл pom.Xml
Назначение: Файл pom.xml является центральным конфигурационным файлом системы сборки Apache Maven. В контексте данного проекта он выполняет следующие ключевые функции:
Определение метаданных проекта: уникальная идентификация проекта в экосистеме Maven через группу, артефакт и версию,
Управление зависимостями: централизованное подключение внешних библиотек (Servlet API, MySQL Connector),
Конфигурация компилятора: настройка параметров компиляции Java-кода (версия Java, кодировка),
Интеграция с сервером: настройка встроенного веб-сервера Jetty для локального запуска и тестирования,
Автоматизация сборки: определение жизненного цикла сборки, упаковки и развертывания веб-приложения.
Сценарии пользователя
В рамках проектирования и разработки веб-приложения «Электронный книжный магазин Booksy» были рассмотрены и реализованы ключевые сценарии использования системы с точки зрения конечного пользователя. Эти сценарии охватывают полный жизненный цикл взаимодействия с приложением — от первоначального знакомства с каталогом до успешного оформления заказа. Каждый сценарий включает последовательность действий пользователя и соответствующую реакцию серверной части системы.
Регистрация нового пользователя.
Пользователь заполняет форму регистрации (логин, email, пароль) (Рисунок 1). Система проверяет уникальность логина и создаёт новую учётную запись в базе данных (Рисунок 2).
Рисунок 1 – Регистрация нового пользователя
Рисунок 2 – Обновление пользователей в БД
Успешная авторизация.
Зарегистрированный пользователь вводит правильные логин и пароль (Рисунок 3). Система проверяет данные, создаёт сессию и предоставляет доступ к личному кабинету и корзине.
Рисунок 3 – Успешная авторизация
Безуспешная авторизация.
Пользователь вводит неверные данные (неправильный логин или пароль). Система отклоняет вход и показывает сообщение об ошибке (Рисунок 4).
Рисунок 4 – Безуспешная авторизация
Попытка перейти в корзину неавторизованным пользователям.
Незалогиненный пользователь пытается открыть страницу корзины (Рисунок 5). Система перенаправляет его на страницу входа с сохранением запрошенного URL.
Рисунок 5 – Попытка перейти в корзину неавторизованным пользователям
Фильтрация книг.
Пользователь применяет фильтры (сортировка по цене, ценовой диапазон) (Рисунок 6). Система отправляет запрос на сервер и обновляет отображение каталога.
Рисунок 6 – Пользователь применяет фильтрацию книг
Просмотр книги.
Пользователь нажимает на изображение книги в каталоге. Открывается модальное окно с увеличенным изображением обложки (Рисунок 7).
Рисунок 7 – Приближение книги
Добавление книги в корзину.
Авторизованный пользователь нажимает кнопку "Добавить в корзину" (Рисунок 8). Система отправляет запрос на сервер, который добавляет товар в таблицу cart_items.
Рисунок 8 – Добавление книги в корзину
Изменение количества книг в корзине.
В корзине пользователь использует кнопки "+" и "-" для изменения количества (Рисунок 9). Система отправляет запрос и обновляет сумму и отображение.
Рисунок 9 – Увеличение и уменьшение книг в корзине
