🔗 Репозиторий backend-части: https://github.com/ren1kron/web_lab4_backend
Содержание
Web Lab 4 — учебный полнофункциональный проект для проверки попадания точек в составную геометрическую область. Реализована авторизация и регистрация пользователей
-
Backend — Jakarta EE 9 (JAX-RS + JPA) WAR-приложение, собираемое Gradle 8.8 и развёртываемое на Apache TomEE 9.
Основные модули:resources/— REST-эндпойнты (/api/auth,/api/points)dao/— репозитории JPAmodels/— JPA-сущности и DTO- фильтры CORS и аутентификации
Итоговый артефакт —web_lab4.war.
-
Frontend — Angular 19 c Tailwind CSS. Запускается на
http://localhost:4200, обращается к API, рисует SVG-график и хранит токен сессии вlocalStorage. -
База данных — PostgreSQL (взаимодействие реализовано через Hibernate).
┌──────────┐ HTTPS ┌────────────┐ JDBC ┌──────────────┐
│ Клиент │ ◄──────────────►│ TomEE 9 │◄─────────────►│ PostgreSQL │
│ Angular │ │ JAX-RS │ │ 15+ │
└──────────┘ └────────────┘ └──────────────┘
- REST без состояния (
/api/**), защищённый простым токеном в заголовке - CORS-фильтр допускает origin фронтенда
- JPA + Hibernate создают/валидируют схему при старте
⚙️ Требования: JDK 17, Node ≥ 20, PostgreSQL ≥ 15
# 1) клон и сборка
git clone https://github.com/ren1kron/web_lab4_backend.git
cd web_lab4_backend
./gradlew clean build
# 2) деплой
cp build/libs/web_lab4.war $TOMEE_HOME/webapps/
$TOMEE_HOME/bin/startup.shAPI будет доступен по http://localhost:8080/web_lab4/api.
git clone https://github.com/ren1kron/web_lab4.git
cd web_lab4
npm ci
ng serveОткройте http://localhost:4200 — горячая перезагрузка включена.
docker compose up --buildПример docker-compose.yml (TomEE + Postgres + Angular Nginx) лежит в /deploy/compose/.
| Метод | Endpoint | Тело / параметры | Описание |
|---|---|---|---|
| POST | /api/auth/signup |
{login, password} |
Регистрация пользователя |
| POST | /api/auth/login |
{login, password} |
Получение токена |
| GET | /api/points |
?page=0&size=20 |
Список точек пользователя |
| POST | /api/points |
{x, y, r} |
Добавить точку, вернуть isHit |
| DELETE | /api/points/{id} |
— | Удалить точку |
Защищённые маршруты ожидают заголовок X-Auth-Token.
CREATE TABLE users (
id SERIAL PRIMARY KEY,
login VARCHAR(64) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL
);
CREATE TABLE points (
id SERIAL PRIMARY KEY,
user_id INTEGER REFERENCES users(id) ON DELETE CASCADE,
x DOUBLE PRECISION NOT NULL,
y DOUBLE PRECISION NOT NULL,
r DOUBLE PRECISION NOT NULL,
is_hit BOOLEAN NOT NULL,
created TIMESTAMP NOT NULL DEFAULT NOW()
);