- •Курсовая работа по дисциплине
- •Введение
- •Постановка задачи
- •Обоснование выбора технологий
- •Разработка структуры программы
- •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
- •Сценарии пользователя
- •Удаление книг из корзины.
- •Оформление заказа.
- •Инструкция пользователю
- •Начало работы с приложением
- •Создание личного кабинета
- •Вход в систему для постоянных клиентов
- •Исследование книжного каталога
- •Фильтрация книг
- •Формирование корзины покупок
- •Управление корзиной
- •Оформление заказа
- •Завершение работы
- •Заключение
- •Список литературы
- •Приложение
1. Поля:
private BookDao bookDao – экземпляр DAO для работы с книгами (инициализируется в конструкторе)
2. Методы http обработки:
2.1. Обработка GET запросов:
protected void doGet(HttpServletRequest request, HttpServletResponse response) – обрабатывает запросы на получение каталога книг
Настройка ответа: устанавливает Content-Type: application/json и кодировку UTF-8,
Получение данных: вызывает bookDao.getAllBooks() для получения списка книг,
Формирование JSON: вручную конвертирует список книг в JSON строку (в учебных целях),
Отправка ответа: записывает JSON в выходной поток response.getWriter().
2.2. Особенности реализации:
RESTful подход: использует только GET метод для получения данных,
Ручная JSON сериализация: для учебных целей реализована без использования библиотек,
Обработка ошибок: ловит исключения, возвращает HTTP 500 при внутренних ошибках сервера.
5.3.2. Класс AuthServlet
Назначение: Класс AuthServlet управляет аутентификацией и регистрацией пользователей через REST API. Аннотирован @WebServlet("/auth/*") для обработки различных операций по одному базовому пути.
1. Поля:
private UserDao userDao – экземпляр DAO для работы с пользователями
2. Методы http обработки:
2.1. Обработка POST запросов:
protected void doPost(HttpServletRequest request, HttpServletResponse response) – основной метод обработки
Анализ пути: определяет операцию (/login, /register, /logout) по request.getPathInfo(),
Маршрутизация: вызывает соответствующий приватный метод для обработки.
2.2. Приватные методы обработки:
private void handleLogin(HttpServletRequest request, HttpServletResponse response) – обрабатывает вход пользователя
Извлечение данных: получает username и password из параметров запроса,
Аутентификация: вызывает userDao.findUserByUsername() и проверяет пароль,
Управление сессией: при успешном входе сохраняет пользователя в HttpSession,
JSON ответ: Возвращает {"success": true/false, "message": "..."}.
private void handleRegister(HttpServletRequest request, HttpServletResponse response) – обрабатывает регистрацию
Проверка существования: сначала проверяет, не занято ли имя пользователя,
Создание пользователя: создаёт объект User и вызывает userDao.registerUser(),
Автовход: после успешной регистрации автоматически создаёт сессию.
private void handleLogout(HttpServletRequest request, HttpServletResponse response) – обрабатывает выход
Инвалидация сессии: вызывает request.getSession().invalidate(),
Очистка: Гарантирует, что все данные сессии будут удалены.
5.3.3. Класс CartServlet
Назначение: Класс CartServlet является комплексным контроллером для всех операций с корзиной покупок. Поддерживает как GET (получение корзины), так и POST (изменение корзины) методы.
1. Поля:
private CartDao cartDao – экземпляр DAO для работы с корзиной,
private BookDao bookDao – экземпляр DAO для операций с книгами (используется при покупке).
