JavaServer Faces (JSF) — это фреймворк для веб-приложений, написанный на Java. Он служит для того, чтобы облегчать разработку пользовательских интерфейсов для Java EE приложений. В отличие от прочих MVC фреймворков, которые управляются запросами, подход JSF основывается на использовании компонентов. Состояние компонентов пользовательского интерфейса сохраняется, когда пользователь запрашивает новую страницу и затем восстанавливается, если запрос повторяется. Для отображения данных обычно используется JSP.
Если говорить простым и понятным языком, то JSF это хорошо спроектированная и простая в использовании платформа, совмещающая компонентный подход к программированию и легковесные POJO для сбора и хранения данных.
Если рассуждать формализированными терминами языка, то:
- Представление — это файл *.JSF или *.XHTML, отвечающий за вывод данных в браузер и содержащий ссылки на конкретные данные в модели.
- Модель — JavaBean, хранящий ту или иную информацию в приватных полях и предоставляющий для них функции по записи и получению значений (сеттеры/геттеры) наряду с методами обработки такой информации.
- Контроллер — это и есть внутренний механизм JSF, позволяющий провести связывание первого со вторым.
Динамические данные на JSF страницах моделируются с помощью специальных POJO, называемых управляемыми компонентами (JSF Backing Beans). Жизненным циклом подобных компонентов управляет контейнер. К примеру, вы можете связать переменные в текущей сессии с соответствующими полями бекинг-бина, и таким образом просматривая изменения в режиме online.
JSF ориентирована на создание Web-приложений и имеет следующие преимущества:
- Четкое разделение бизнес-логики и интерфейса
- Управление сохраняемостью на уровне компонент
- Простая работа с событиями на стороне сервера
- Использование простых и знакомых концепций, таких как графический интерфейс или слои в Web-приложении
- Доступность нескольких реализаций от различных компаний-разработчиков
- Широкая поддержка со стороны интегрированных средств разработки (IDE)
Жизненный цикл обработки запроса в приложениях JSF состоит из следующих фаз:
1) Восстановление представления (запрос поступает на вход сервлета FacesServlet. Последний анализирует данные запроса и извлекает идентификатор представления, определяемый именем страницы JSP)
2) Использование параметров запроса; обработка событий (получение данных о состоянии каждого компонента)
3) Проверка данных; обработка событий (Конвертация и валидация данных, как правило, выполняются в фазе проверки данных)
4) Обновление данных модели; обработка событий (обновление данных модели путем изменения свойств серверных объектов JavaBean)
5) Вызов приложения; обработка событий (вызывает приложение для обработки данных, полученных через форму)
6) Вывод результата (вывод представления вместе со всеми его компонентами и их текущими состояниями)