Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая. Разработка серверной части сайта Электронный книжный магазин.docx
Скачиваний:
0
Добавлен:
02.01.2026
Размер:
1.94 Mб
Скачать
  1. Разработка структуры программы

В рамках данного проекта была разработана веб-приложение «Электронный книжный магазин», состоящее из клиентской (frontend) и серверной (backend) частей. Структура программы организована по принципу трёхзвенной архитектуры, что обеспечивает чёткое разделение ответственности, модульность и простоту поддержки.

1. Основные компоненты программы

Программа состоит из следующих ключевых компонентов, разработанных автором (бэкенд-часть):

1.1. Модели данных (Model Layer)

  • Класс Book: этот класс представляет основную сущность приложения — книгу. Он включает атрибуты: идентификатор, название, автор, цена, URL изображения, количество на складе. Предоставляет геттеры и сеттеры для доступа к данным, а также конструкторы для создания объектов.

  • Класс User: модель пользователя системы с атрибутами: идентификатор, имя пользователя, пароль (в хешированном виде), email. Реализует базовые операции управления учётными данными.

  • Класс CartItem: представляет элемент корзины покупок. Содержит связи с пользователем и книгой, а также количество выбранного товара. Включает вложенный объект Book для полной информации о товаре.

1.2. Слой доступа к данным (Data Access Layer)

  • Класс BookDao: отвечает за все операции с таблицей книг в базе данных. Реализует методы: getAllBooks() (получение всего каталога), decreaseBookQuantity() (уменьшение количества при покупке). Использует PreparedStatement для защиты от SQL-инъекций.

  • Класс UserDao: обеспечивает работу с пользователями: findUserBy Username() (поиск при входе), registerUser() (регистрация), validatePassword() (проверка пароля).

  • Класс CartDao: управляет корзиной покупок: getCartItemsByUserId() (получение корзины пользователя), addToCart() (добавление товара), removeFromCart() (удаление), clearUserCart() (очистка после покупки).

  • Класс DatabaseConnection: синглтон для управления подключениями к MySQL. Обеспечивает централизованное создание и закрытие соединений, предотвращает утечки ресурсов.

1.3. Слой бизнес-логики (Controller Layer)

  • Класс BookServlet: обрабатывает HTTP GET запросы по пути /books. Возвращает JSON-массив со всеми книгами из каталога. Реализует Content-Type: application/json для корректной обработки клиентом.

  • Класс AuthServlet: управляет аутентификацией пользователей через путь /auth/*. Обрабатывает:

  • /login — вход с проверкой учётных данных

  • /register — регистрация новых пользователей

  • /logout — завершение сессии. Использует HttpSession для управления сессиями.

  • Класс CartServlet: Контроллер для операций с корзиной (/cart/*). Реализует:

    • GET /cart — получение содержимого корзины

    • POST /cart/add — добавление товара

    • POST /cart/remove — удаление товара

    • POST /cart/update — изменение количества

    • POST /cart/purchase — оформление покупки

2. Архитектура взаимодействия компонентов

2.1. Взаимодействие клиент-сервер

Frontend → HTTP Request → Jetty→ Servlet → DAO → MySQL

↑ ↓ ↑ ↓ ↑ ↓

Браузер JSON Контейнер Логика Данные База данных

2.2. Последовательность обработки запроса:

  1. Клиентская часть (разработана коллегой) отправляет HTTP запрос через Fetch API

  2. Контейнер Jetty принимает запрос, определяет соответствующий сервлет

  3. Сервлет извлекает параметры, вызывает соответствующий метод DAO

  4. DAO выполняет SQL запрос через JDBC

  5. MySQL возвращает результат, который преобразуется в JSON

  6. JSON ответ отправляется клиенту для отображения