Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ТЗ для проекта модуля 3

Ссылка на задание: https://javarush.com/quests/lectures/jru.module3.lecture04

  1. Технологический стек
1) Сервлеты: Servlet API 4.0
2) JSP + JSTL - для динамических ваб-страниц
3) Работа с сессиями - хранить состояние пользователя
4) Maven - управление зависимостями
5) Архитектура MVC (Model-View-Controller) в упрощенном виде
6) Тестирование: JUnit + Mockito
  1. План
1) Начнем с настройки проекта: создать правильную структуру каталогов
2) Добавить зависимости: подключить необходимые библиотеки
3) Написать бизнес-логику: реализовать игровую механику
4) Создать пользовательский интерфейс
5) Протестировать (UI + покрытие тестами)
  1. Цель
У нас должно быть полностью рабочее приложение, которое:
1) Принимает решение пользователя
2) Хранить состояние игры
3) Показать результат 
4) Соответствовать поддерживаемой архитектуре
  1. Структура каталогов
src/main/java/com/javarush/quest - Java классы
src/main/resources               - ресурсы
src/main/webapp/WEB-INF          - веб-конфигурация
src/main/webapp                  - JSP-страницы

src/test/java/com/javarush/quest - тесты
  1. Эндпоинты
http://localhost:8080/HelloQuest/hello
http://localhost:8080/HelloQuest/game
http://localhost:8080/HelloQuest/start

Модернизация проекта (часть 2)

Бизнес-ценность:

Полноценное рабочее веб-приложение с ветвящимися сценариями квеста (3 пути к победе, 3 к поражению), с сессионной статистикой, тестированием, профессиональной структурой (MVC-подход), с возможностью начать заново после завершения игры, с обработкой ошибок и валидацией, с логированием.

№  Было:                       Стало: 
1  Один вопрос                 7 шагов с ветвлением 
2  Один сервлет GameServlet    2 сервлета: StartServlet, GameServlet
3  Простая обработка ответа    Полная логика квеста с победами и поражениями
4  Статика в JSP               Динамика с JSTL тегами
5  Нет модели данных           Модель QuestStep и сервис QuestService
6  Нет тестов                  Полноценные JUnit тесты
7  Простой UI                  Стилизованный UI
8  Минимальная статистика      Полная статистика: имя, игры, шаги 
9  Отсутствие логирования      Полноценное логирование, использование логера

Технологические фазы

  1. HelloQuest -> SpaceQuest
  2. Создадим пакеты:
 - model   - для моделей данных
 - service - для бизнес-логики
 - filter  - для фильтров  
  1. Зависимости для тестов - JUnit 5
  2. Создать модели данных:
1) Класс QuestStep - модель шага квеста:
  - id шага
  - текст вопроса
  - два варианта ответа
  - id следующих шагов для каждого ответа
  1. Бизнес-логика квеста
1) Класс QuestService - управление шагами:
  - инициализация всех шагов квеста
  - метод получения шага по id
  - проверка финального шага (победа/поражение)
  1. Обновить сервлеты
1) StartServlet - страница приветствия и ввод имени
2) GameServlet - обработка игры с ветвлением:
  - doGet() - отображение текущего шага
  - doPost() - обработка ответа и переход к следующему шагу
3) EncodingFilter - фильтр для UTF-8 кодировки   
  1. Создание новых JSP страниц
  - index.jsp - страница с предысторией
  - game.jsp - основная страница игры с JSTL:
    - Динамическое отображение шагов
    - Статистика в реальном времени
    - CSS стилизация (?)
  1. Написание тестов
1) QuestServiceTest - тестирование логики квеста:
  - Получение шагов
  - Проверка ветвления
  - Валидация финальных шагов

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages