+
Skip to content

aomikhailov/book-store

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Bookstore Web App

О проекте

Учебный веб-проект, демонстрирующий базовые принципы построения серверного Java-приложения по шаблону MVC.
Реализована работа со списком книг, авторами и пользовательской корзиной.
Сессии пользователей обрабатываются вручную — с обучающими целями. Все данные хранятся в базе данных MariaDB.

Проект собирается как .war-архив и предназначен для развёртывания в контейнере Apache Tomcat.
В качестве стека используются Jakarta EE, JSTL, Logback и загрузка конфигурации через .env-файлы.

Работа с базой данных реализована без ORM — для лучшего понимания SQL и JDBC.

Основной функционал

  • Загрузка конфигурации через .env;
  • Подключение к базе данных MariaDB (без ORM);
  • Архитектура MVC: DAO, сервисы, сервлеты, JSP;
  • Использование JSTL для шаблонов;
  • Обработка исключений через контроллеры;
  • Ручное управление сессиями пользователей (в учебных целях);
  • Статические ресурсы: CSS / JS;
  • Поддержка деплоймента через FTP (mvn deploy).

Работа с базой данных

Все обращения к базе данных централизованы через вспомогательный класс DatabaseHelper.
Он реализует паттерн Singleton, выполняет SQL-запросы с параметрами, управляет подключением, читает SQL-файлы из ресурсов и использует try-with-resources для безопасной работы с JDBC.

Поверх него реализован собственный слой DAO, приближённый по уровню абстракции к ORM:

  • Для каждой таблицы проекта существует соответствующий Java-класс модели;
  • Для каждой модели создан DAO-класс, реализующий CRUD-операции;
  • Базовая логика DAO выделена в BaseDao, от которого наследуются конкретные DAO;
  • Результаты SQL-запросов автоматически преобразуются в экземпляры моделей.

Такой подход позволяет удобно и типизировано работать с базой данных без сторонних библиотек.

Деплоймент

Приложение предназначено для запуска в контейнере Docker на базе:

  • Apache Tomcat 11
  • OpenJDK 23
  • Связка с веб-сервером Apache2 (reverse proxy)
  • База данных: MariaDB

Использование Docker-образа

Для развёртывания приложения использовался Docker-образ almihub/tomcat11-jdk23, который можно найти в моём профиле на Docker Hub.
Для автоматизации процесса создания и публикации Docker-образа под ваши условия можно использовать мой скрипт Dockerhub Publisher, доступный на GitHub.

Дата создания

24 апреля 2025 года

About

Учебный проект BookStore Web App

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published
点击 这是indexloc提供的php浏览器服务,不要输入任何密码和下载