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

2. Методы:

2.1. Операции чтения корзины:

  • List<CartItem> getCartItemsByUserId(int userId) – получает все элементы корзины для указанного пользователя

    • Логика работы: выполняет JOIN запрос между cart_items и books для получения полной информации,

    • Структура результата: возвращает список CartItem, где каждый элемент содержит полный объект Book.

2.2. Операции изменения корзины:

  • boolean addToCart(int userId, int bookId) – добавляет книгу в корзину пользователя

    • Логика работы: сначала проверяет наличие книги в корзине, затем либо увеличивает количество, либо добавляет новую запись,

    • Интеллектуальное добавление: Если книга уже есть в корзине — увеличивает количество на 1.

  • boolean removeFromCart(int cartItemId) – удаляет конкретный элемент из корзины

    • Логика работы: выполняет DELETE FROM cart_items WHERE id = ?,

    • Идентификация: удаляет по уникальному ID элемента корзины, а не по bookId.

  • boolean updateCartItemQuantity(int cartItemId, int quantity) – изменяет количество товара в корзине

    • Валидация: Проверяет, что новое количество положительное,

    • Возвращаемое значение: true при успешном обновлении.

2.3. Операции очистки:

  • void clearUserCart(int userId) – полностью очищает корзину пользователя после успешной покупки

    • Логика работы: Выполняет DELETE FROM cart_items WHERE user_id = ?,

    • Использование: Вызывается только после успешного уменьшения количества книг на складе.

5.2.4. Класс DatabaseConnection

Назначение: Класс DatabaseConnection реализует паттерн Singleton для управления подключениями к базе данных MySQL. Этот класс обеспечивает централизованное создание, использование и закрытие соединений, предотвращая утечки ресурсов.

1. Поля (константы подключения):

  • private static final String URL – строка подключения к MySQL: jdbc:mysql://localhost:3306/bookstore,

  • private static final String USER – имя пользователя БД: root,

  • private static final String PASSWORD – пароль для доступа к БД.

2. Методы:

2.1. Получение соединения:

  • static Connection getConnection() throws SQLException – возвращает новое соединение с базой данных

    • Инициализация драйвера: загружает класс MySQL драйвера через Class.forName()

    • Обработка ошибок: преобразует ClassNotFoundException в SQLException с понятным сообщением

    • Создание соединения: использует DriverManager.getConnection() с параметрами из констант

2.2. Особенности реализации:

  • Singleton-like подход: класс содержит только статические методы, не требует создания экземпляра,

  • Изоляция параметров: данные подключения хранятся в одном месте, легко изменяются,

  • Обработка исключений: пробрасывает исключения наверх для обработки в вызывающем коде.

5.3. Сервлеты

Данный раздел охватывает HTTP-контроллеры, которые обрабатывают запросы от клиентской части и координируют работу всей системы.

5.3.1. Класс BookServlet

Назначение: Класс BookServlet является HTTP контроллером, обрабатывающим все запросы, связанные с получением информации о книгах. Наследуется от HttpServlet и аннотирован @WebServlet("/books").