- •Курсовая работа по дисциплине
- •Введение
- •Постановка задачи
- •Обоснование выбора технологий
- •Разработка структуры программы
- •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
- •Сценарии пользователя
- •Удаление книг из корзины.
- •Оформление заказа.
- •Инструкция пользователю
- •Начало работы с приложением
- •Создание личного кабинета
- •Вход в систему для постоянных клиентов
- •Исследование книжного каталога
- •Фильтрация книг
- •Формирование корзины покупок
- •Управление корзиной
- •Оформление заказа
- •Завершение работы
- •Заключение
- •Список литературы
- •Приложение
Формирование корзины покупок
Когда Вы найдёте книгу, которую хотите приобрести, нажмите кнопку «Добавить в корзину» на её карточке. Обратите внимание на индикаторы наличия: зелёная метка означает, что книга есть в достаточном количестве, жёлтая предупреждает о малом остатке, а красная указывает на временное отсутствие товара (Рисунок 23). Если Вы попытаетесь добавить книгу в корзину без авторизации, система предложит вам сначала войти в свой аккаунт (Рисунок 24).
Рисунок 23 – Добавление книги в корзину
Рисунок 24 – Неавторизованный пользователь не может взаимодействовать с корзиной
Управление корзиной
Чтобы просмотреть все выбранные товары, перейдите в раздел «Корзина». Здесь вы увидите подробную таблицу с каждой книгой, её ценой, количеством и общей суммой. Вы можете легко изменять количество экземпляров с помощью кнопок «+» и «-» — сумма заказа будет пересчитываться автоматически (Рисунок 25). Если передумали покупать какую-то книгу, просто нажмите «Удалить» рядом с ней (Рисунок 26).
Рисунок 25 – Изменение количества товаров в корзине
Рисунок 26 – Удаление товара из корзины
Оформление заказа
Когда вы определились со всеми покупками, нажмите кнопку «Оформить заказ». Система проверит, достаточно ли книг на складе, и если всё в порядке — завершит покупку, очистит вашу корзину и покажет сообщение об успешном оформлении (Рисунок 27).
Рисунок 27 – Успешная покупка
Завершение работы
После завершения покупок не забудьте выйти из системы, нажав кнопку «Выйти» (Рисунок 28). Это особенно важно при использовании общедоступных компьютеров — так вы защитите свои личные данные.
Рисунок 28 – Выход из аккаунта
Заключение
В результате выполнения курсовой работы была разработана и успешно реализована серверная часть (backend) веб-приложения «Электронный книжный магазин Booksy». Разработка позволила углубить знания в области создания веб-приложений на Java, работы с технологией Servlets, организации взаимодействия с базами данных через JDBC и проектирования многоуровневой архитектуры программных систем.
Достигнутые результаты:
Реализация полноценной трёхзвенной архитектуры: была создана чётко структурированная система, разделённая на уровень представления (frontend, реализован коллегой), уровень бизнес-логики (сервлеты) и уровень доступа к данным (DAO-классы). Такое разделение обеспечивает высокую сопровождаемость и возможность независимого развития компонентов.
Создание защищённого доступа к данным: в проекте реализован паттерн Data Access Object (DAO), который инкапсулирует всю логику работы с базой данных. Использование PreparedStatement для всех SQL-запросов обеспечило защиту от SQL-инъекций, а централизованное управление подключениями через класс DatabaseConnection предотвратило утечки ресурсов.
Интеграция с различными технологиями: в процессе разработки было освоено:
работа с сервлет-контейнером Jetty для развёртывания веб-приложений,
использование MySQL 8.0 в качестве системы управления базами данных,
организация взаимодействия по протоколу HTTP с передачей данных в формате JSON,
интеграция с системой сборки Maven для управления зависимостями.
Технические особенности реализации:
Эффективное управление соединениями: реализована модель, при которой каждое подключение к БД закрывается автоматически с помощью try-with-resources, что соответствует современным best practices в Java-разработке.
Транзакционная целостность операций: особое внимание было уделено обеспечению целостности данных при выполнении операций покупки. Механизм проверки наличия товара перед уменьшением количества гарантирует, что система не позволит продать больше книг, чем есть на складе.
Масштабируемость архитектуры: структура проекта организована таким образом, что позволяет легко добавлять новый функционал. Например, для реализации системы отзывов или рейтингов потребуется лишь добавить соответствующие таблицы в БД, модели, DAO-классы и сервлеты.
Курсовая работа успешно продемонстрировала применение теоретических знаний по веб-технологиям на практике. Была создана работоспособная система, соответствующая всем поставленным требованиям. Разработка велась с соблюдением принципов чистого кода, модульности и повторного использования. Проект подтвердил, что технологии Java Servlets, несмотря на свою относительную простоту по сравнению с современными фреймворками, остаются мощным инструментом для создания эффективных и производительных веб-приложений, особенно в образовательных целях, где важно понимание фундаментальных принципов работы веб-технологий.
