Java


Техническая реализация системы


Система представляет собой простейшее веб-приложение реализованное с использованием паттерна проектирования (design pattern) Модель-Вид-Контроллер (название по GOF). В данном приложении:

  • Объект пользователь (либо User либо AnonymousUser) храниться в сессии.

  • В сессии сохранён массив объектов Album, доступный для модификации.

Я использую упрощённую процедуру аутентификации, чтобы уменьшить и упростить код приложения.

Итак, описание системы в терминах Модель-Вид-Контроллер:

Модель

В нашей системе используется следующая модель:

Заметим что, класс User расширяет (наследует) класс AnonymousUser. Каждый альбом (класс Album) имеет атрибут title и ссылку на владельца альбома - класс User, следовательно первое ограничение - анонимный пользователь не может быть владельцем альбома. Альбомы хранятся в объекте AlbumList реализующим методы добавления, удаления и поиска альбомов.

Вид

Отображение осуществляется с помощью   шаблонов. Данный подход позволяет нам разделить отображение от остальных частей системы, кроме того, эти шаблоны, достаточно простые для интуитивного понимания. В приложении используется 2 шаблона:

  • view.vm – отображает логин текущего пользователя (или Anonymous), ссылки на login/logout, список альбомов, форму для добавления нового альбомa

  • login.vm – отображает 2 ссылки для регистрации под разными пользователями.

Контроллер

В качестве контроллеров выступают 2 сервлета (я намеренно не использую Struts, так как считаю его использование в подавляющем большинстве случаев антипаттерном).

  • LoginServlet – сервлет осуществляющий логин пользователя.

  • ViewServlet – сервлет осуществляет подготовку списка альбомов и обрабатывает добавление/удаление альбома по переданному title.

Кроме того, реализован фильтр (EntranceFilter) который запускается перед каждым запросом.

На данный фильтр возложена обязанность установления пользователя в AnonymousUser если пользователь не найден в сессии, и начальной инициализации массива альбомов.




- Начало -  - Назад -  - Вперед -