Разработчик(и) | Фонд программного обеспечения Apache |
---|---|
Стабильный релиз | 10.0.0 [1] / 2024-03-11; 8 месяцев назад |
Репозиторий | github.com/apache/wicket |
Написано в | Ява |
Тип | Фреймворк веб-приложений |
Лицензия | Лицензия Apache 2.0 |
Веб-сайт | wicket.apache.org |
Apache Wicket , обычно называемый Wicket , является компонентным фреймворком веб-приложений для языка программирования Java, концептуально похожим на JavaServer Faces и Tapestry . Первоначально он был написан Джонатаном Локком в апреле 2004 года. Версия 1.0 была выпущена в июне 2005 года. Он перешел в проект верхнего уровня Apache в июне 2007 года. [2]
Традиционные фреймворки модель-представление-контроллер (MVC) работают с точки зрения целых запросов и целых страниц. В каждом цикле запроса входящий запрос сопоставляется с методом на объекте контроллера , который затем генерирует исходящий ответ в полном объеме, обычно путем извлечения данных из модели для заполнения представления, написанного в специализированной разметке шаблона . Это сохраняет поток управления приложением простым и понятным, но может затруднить повторное использование кода в контроллере.
Напротив, Wicket тесно связан с такими структурами GUI с сохранением состояния , как Swing . Приложения Wicket представляют собой деревья компонентов , которые используют делегатов -слушателей для реагирования на HTTP- запросы к ссылкам и формам таким же образом, как компоненты Swing реагируют на события мыши и нажатия клавиш. Wicket классифицируется как компонентно-ориентированная структура.
Wicket использует простой XHTML для шаблонизации (что обеспечивает четкое разделение логики представления и бизнес-логики и позволяет редактировать шаблоны с помощью обычных инструментов дизайна WYSIWYG [3] ). Каждый компонент привязан к именованному элементу в XHTML и становится ответственным за рендеринг этого элемента в конечном выводе. Страница — это просто компонент верхнего уровня, содержащий компонент, и она связана ровно с одним шаблоном XHTML. Используя специальный тег, группа отдельных компонентов может быть абстрагирована в один компонент, называемый панелью , который затем может быть повторно использован целиком на этой странице, других страницах или даже других панелях.
Каждый компонент поддерживается собственной моделью, которая представляет состояние компонента. Фреймворк не имеет знаний о том, как компоненты взаимодействуют со своими моделями, которые рассматриваются как непрозрачные объекты, автоматически сериализуемые и сохраняемые между запросами. Однако более сложные модели могут быть сделаны отделяемыми и предоставлять хуки для организации собственного хранения и восстановления в начале и конце каждого цикла запроса. Wicket не предписывает какой-либо определенный уровень сохранения объектов или ORM , поэтому приложения часто используют некоторую комбинацию объектов Hibernate [ требуется ссылка ] , EJB или POJO в качестве моделей.
В Wicket все серверные состояния управляются автоматически. Никогда не следует напрямую использовать объект HttpSession или подобную оболочку для хранения состояния. Вместо этого состояние связано с компонентами. Каждый серверный компонент страницы содержит вложенную иерархию компонентов с состоянием, где модель каждого компонента в конечном итоге является POJO (Plain Old Java Object)
Wicket стремится к простоте. В Wicket нет файлов конфигурации, которые нужно изучать. Wicket — это простая библиотека классов с последовательным подходом к структуре компонентов.
Приложение Hello World Wicket с четырьмя файлами:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns= "http://www.w3.org/1999/xhtml" xmlns:wicket= "http://wicket.apache.org/dtds.data/wicket-xhtml1.3-strict.dtd" xml:lang= "en" lang= "en" > <body> <span wicket:id= "message" id= "message" > Сообщение будет здесь </span> </body> </html>
пакет org.wikipedia.wicket ; импорт org.apache.wicket.markup.html.WebPage ; импорт org.apache.wicket.markup.html.basic.Label ; public class HelloWorld extends WebPage { /** * Конструктор */ public HelloWorld () { add ( new Label ( "message" , "Hello World!" )); } }
пакет org.wikipedia.wicket ; импорт org.apache.wicket.protocol.http.WebApplication ; public class HelloWorldApplication extends WebApplication { /** * Конструктор. */ public HelloWorldApplication () { } /** * @see org.apache.wicket.Application#getHomePage() */ public Class getHomePage () { return HelloWorld . class ; } }
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance" xmlns= "http://java.sun.com/xml/ns/javaee" xmlns:web= "http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation= "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id= "WebApp_ID" version= "2.5" > <display-name> Пример Wicket </display-name> <filter> <filter-name> HelloWorldApplication </filter-name> <filter-class> org.apache.wicket.protocol.http.WicketFilter </filter-class> <init-param> <param-name> applicationClassName </param-name> <param-value> org.wikipedia.wicket.HelloWorldApplication </param-value> </init-param> </filter> <filter-mapping> <filter-name> HelloWorldApplication </filter-name> <url-pattern> /* </url-pattern> </filter-mapping> </web-app>
Базовые компоненты, такие как формы, ссылки, повторители и т. д., встроены.
Ряд | Описание | Последний релиз | Последняя дата выпуска |
---|---|---|---|
Текущая стабильная версия: 10.х | Миграция с Javax API на Jakarta API. Зависимости обновлены для поддержки Spring Framework 6 и, следовательно, переходят на Java 17 как на требуемую минимальную платформу, и совместимы с Java 21. CGLib заменен на ByteBuddy. [4] | 10.0.0 | 2024-03-11 |
Текущая стабильная версия: 9.х | Переход на Java 11 как на требуемую минимальную платформу, миграция с JUnit 4 на 5, поддержка Java 12 и 13, переработка страниц и хранилища данных и другие улучшения. [5] | 9.16.0 | 2023-11-23 |
Старая версия, но она все еще поддерживается:8.х | Переход на Java 8 как на требуемую минимальную платформу. Поддержка Lambdas, требуемая версия API сервлета переходит на 3.1, поддержка новых типов для обработки дат и другие улучшения. [6] Рекомендуется обновиться до версии 9.x. | 8.14.0 | 2022-01-29 |
Старая версия, но она все еще поддерживается:7.х | Переход на Java 7 как на требуемую минимальную платформу, предотвращение подделки межсайтовых запросов, поддержка встроенных изображений. Релиз содержит почти 300 функций, улучшений и исправлений. [7] Только исправления безопасности, рекомендуется обновиться до версии 9.x. | 7.18.0 | 2021-04-02 |
Старая версия, больше не поддерживается:6.х | Переход на Java 6 как на необходимую минимальную платформу. Интеграция jQuery «из коробки», полный контроль над запросами AJAX, улучшенная регистрация событий в браузерах, поддержка больших наборов данных, управление зависимостями для клиентских библиотек JavaScript, экспериментальная поддержка веб-сокетов. [8] | 6.30.0 | 2018-12-05 |
Старая версия, больше не поддерживается:1.5.х | Улучшения функций Wicket. [9] | 1.5.16 | 2016-08-05 |
Старая версия, больше не поддерживается:1.4.х | Переход на Java 5 как на минимальную требуемую платформу. [10] | 1.4.23 | 2014-02-06 |
Старая версия, больше не поддерживается:1.3.х | 1.3.7 | 2009-07-30 | |
Старая версия, больше не поддерживается:1.2.х | 1.2.7 | 2008-03-23 | |
Старая версия, больше не поддерживается:1.1.х | 1.1.1 | Будет определено | |
Старая версия, больше не поддерживается:1.0.х | 1.0.3 | Будет определено | |
Легенда: Старая версия, не поддерживается Старая версия, все еще поддерживается Последняя версия Последняя предварительная версия Будущий релиз |
{{cite web}}
: Отсутствует или пусто |title=
( помощь )Официальный сайт