Введение

Apache Wicket, часто называемый просто Wicket, — это веб-фреймворк для языка программирования Java, основанный на компонентном подходе и концептуально схожий с JavaServer Faces и Tapestry. Он был первоначально разработан Джонатаном Локком в апреле 2004 года. Версия 1.0 была выпущена в июне 2005 года. В июне 2007 года Wicket стал проектом верхнего уровня в Apache.

Обоснование

Традиционные фреймворки "модель-представление-контроллер" (MVC) работают в терминах целых запросов и целых страниц. В каждом цикле запроса входящий запрос сопоставляется с методом объекта контроллера, который затем генерирует исходящий ответ целиком, обычно извлекая данные из модели для заполнения представления, написанного с использованием специализированной разметки шаблонов. Это обеспечивает простоту и ясность потока управления приложением, но может затруднить повторное использование кода в контроллере. В отличие от этого, Wicket во многом повторяет структуру фреймворков GUI с сохранением состояния, таких как Swing. Приложения Wicket представляют собой деревья компонентов, которые используют делегаты прослушивателей для реагирования на HTTP-запросы к ссылкам и формам так же, как компоненты Swing реагируют на события мыши и нажатия клавиш. Wicket классифицируется как фреймворк, основанный на компонентах.

Дизайн

Wicket использует простой XHTML для создания шаблонов (что обеспечивает четкое разделение представления и бизнес-логики и позволяет редактировать шаблоны с помощью стандартных инструментов визуального дизайна WYSIWYG). Каждый компонент привязан к именованному элементу в XHTML и отвечает за отрисовку этого элемента в конечном результате. Страница является верхнеуровневым компонентом, содержащим другие компоненты, и связана ровно с одним XHTML-шаблоном. С помощью специального тега группа отдельных компонентов может быть объединена в один компонент, называемый панелью, который затем можно повторно использовать целиком на этой странице, других страницах или даже внутри других панелей. Каждый компонент опирается на свою собственную модель, которая представляет состояние этого компонента. Фреймворк не учитывает, как компоненты взаимодействуют со своими моделями, которые рассматриваются как непрозрачные объекты, автоматически сериализуемые и сохраняемые между запросами. Однако более сложные модели могут быть сделаны отсоединяемыми и предоставлять механизмы для организации собственного хранения и восстановления в начале и конце каждого цикла запроса. Wicket не требует использования какой-либо конкретной системы хранения данных или ORM-уровня, поэтому приложения часто используют различные комбинации объектов Hibernate, EJB или POJO в качестве моделей. В Wicket все состояние на стороне сервера управляется автоматически. Не следует напрямую использовать объект HttpSession или аналогичные обертки для хранения состояния. Вместо этого состояние связано с компонентами. Каждый компонент страницы на стороне сервера содержит вложенную иерархию компонентов, сохраняющих состояние, где модель каждого компонента в конечном итоге является POJO (Plain Old Java Object).

Wicket стремится к простоте. В Wicket нет файлов конфигурации, которые необходимо изучать. Wicket – это простая библиотека классов с последовательным подходом к структуре компонентов.

Компоненты

Основные компоненты, такие как формы, ссылки, повторители и т.д., встроены.