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

Разработать веб-приложение «Электронный книжный магазин», работающее на основе серверной части, реализованной на языке Java с использованием технологии Servlets и контейнера сервлетов Jetty. В качестве прототипа разрабатываемого приложения можно использовать современные интернет-магазины (Ozon, Wildberries, Буквоед). Для работы с данными следует предусмотреть слой DAO (Data Access Object). Моей задачей в рамках данного проекта было создание полноценной серверной части веб-приложения книжного магазина. Остальные требования к архитектуре определяются студентом самостоятельно.

Разрабатываемое приложение должно быть создано с использованием следующих технологий:

  • бэкенд: Java 8, Servlets API, JDBC, Jetty,

  • фронтенд: HTML, CSS, JavaScript, Bootstrap 5,

  • база данных: MySQL 8.0,

  • среда разработки: IntelliJ IDEA,

  • система сборки: Apache Maven.

Веб-приложение должно обеспечивать выполнение следующих операций:

  • управление каталогом: просмотр, фильтрация, сортировка книг,

  • работа с пользователями: регистрация, аутентификация, управление сессиями,

  • управление корзиной: добавление/удаление товаров, изменение количества,

  • оформление заказов: покупка товаров, проверка наличия,

  • работа с данными: CRUD операции.

Интерфейсная часть программы должна содержать следующие компоненты:

  • главная страница с каталогом книг,

  • страница корзины для управления покупками,

  • страницы авторизации (вход/регистрация),

  • адаптивный дизайн для мобильных устройств,

  • модальные окна для детального просмотра,

  • систему уведомлений о действиях пользователя.

Пояснительная записка должна содержать:

  • постановку задачи,

  • обоснование выбранных технологий,

  • разработку архитектуры системы,

  • разработку отдельных модулей,

  • инструкцию по развертыванию и использованию,

  • анализ результатов тестирования,

  • заключение,

  • список литературы,

  • приложения с исходным кодом.

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

В зону моей ответственности вошло:

  • разработка серверной части (backend) приложения,

  • проектирование и реализацию архитектуры бэкенда,

  • разработка Java сервлетов и бизнес-логики,

  • проектирование базы данных и SQL-запросов,

  • настройка серверного окружения и развертывание.

Второй участник проекта отвечает за:

  • Разработку клиентской части (frontend) приложения,

  • Создание HTML/CSS шаблонов и пользовательского интерфейса,

  • Реализацию клиентской логики на JavaScript,

  • Адаптивный дизайн и UX/UI проектирование,

  • Интеграцию фронтенда с бэкенд-API.

  1. Обоснование выбора технологий

Выбор Java Servlets в качестве основы серверной части:

Java Servlets были выбраны в качестве технологии обработки HTTP-запросов по следующим причинам:

Преимущества, определившие выбор:

  1. Прямая работа с HTTP протоколом — Servlets обеспечивают низкоуровневый доступ к запросам и ответам, что критично для понимания основ веб-разработки и реализации точного контроля над поведением приложения

  2. Минимальные накладные расходы — в отличие от полноценных фреймворков (Spring, Jakarta EE), Servlets имеют минимальную абстракцию, что обеспечивает высокую производительность при обработке запросов клиентов книжного магазина

  3. Простота развертывания и отладки — сервлеты легко запускаются в любом сервлет-контейнере (Jetty, Tomcat), что упрощает процесс разработки и тестирования

  4. Прямая интеграция с Java экосистемой — хотя в данном проекте используются только Servlets, архитектура позволяет легко расширить функционал за счёт других Java EE технологий при необходимости

Рассмотренные альтернативы и причины их отклонения:

  • Spring Boot — отклонён из-за излишней сложности для учебного проекта и высокого уровня абстракции, скрывающего детали работы HTTP,

  • Jersey — отклонён, так как требовал бы дополнительных зависимостей и не обеспечивал такого же уровня понимания основ.

Выбор MySQL в качестве системы управления базами данных:

MySQL 8.0 была выбрана в качестве СУБД для хранения информации о книгах, пользователях и заказах по следующим критериям:

Критические требования, удовлетворяемые MySQL:

  1. Эффективная работа с реляционными данными — структура данных книжного магазина (книги, пользователи, заказы, корзина) идеально ложится на реляционную модель

  2. Опыт работы с MySQL.

Сравнение с альтернативными решениями:

  • PostgreSQL — имеет более сложную настройку и избыточный функционал для данной задачи,

  • SQLite — не подходит из-за отсутствия полноценной поддержки многопользовательского доступа.

Архитектурные особенности использования:

  • Connection pooling реализован на уровне приложения для эффективного управления подключениями,

  • PreparedStatement используется для всех запросов с параметрами, обеспечивая защиту от SQL-инъекций.

Выбор Jetty в качестве сервлет-контейнера:

Jetty 9.4 был выбран для развертывания сервлетов по следующим соображениям:

Ключевые преимущества:

  1. Легковесность и скорость запуска — критично для цикла разработки, где требуется частый перезапуск сервера,

  2. Простота встраивания — позволяет запускать приложение как standalone-программу без необходимости установки внешнего сервера,

  3. Интеграция с Maven — jetty-maven-plugin обеспечивает развертывание изменений во время разработки.

Сравнение с альтернативами:

  • Apache Tomcat — имеет больший размер и более сложную конфигурацию,

  • Undertow — менее распространён и имеет меньшую документацию,

  • Самописный HTTP-сервер — отклонён из-за необходимости реализации множества стандартов HTTP.

Выбор Maven в качестве системы сборки:

Apache Maven был выбран для управления зависимостями и сборки проекта:

Обоснование выбора:

  1. Стандартизация структуры проекта — обеспечивает понятную организацию исходного кода и ресурсов,

  2. Централизованное управление зависимостями — упрощает подключение необходимых библиотек (MySQL Connector, Servlet API),

  3. Интеграция с инструментами разработки — поддерживается всеми популярными IDE (IntelliJ IDEA, Eclipse).

Альтернативы:

  • Gradle — имеет более сложный синтаксис и избыточные возможности для данного проекта,

  • Ant — устаревшая технология с ручным управлением зависимостями,

  • Ручная сборка — непрактично при наличии нескольких зависимостей.