Apache Уикет

Программное обеспечение
Apache Уикет
Разработчик(и)Фонд программного обеспечения 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 с четырьмя файлами:

HelloWorld.html
Шаблон XHTML.
<!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>     
HelloWorld.java
Компонент страницы, который будет привязан к шаблону. Он, в свою очередь, привязывает дочерний компонент (компонент Label с именем "message").
пакет 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!" )); } }             
HelloWorldApplication.java
Основной класс приложения, который направляет запросы на домашнюю страницу компоненту страницы HelloWorld.
пакет 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
Дескриптор развертывания приложения сервлета , который устанавливает Wicket в качестве обработчика по умолчанию для сервлета и обеспечивает создание экземпляра HelloWorldApplication при запуске.
<?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>                        

Компоненты

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

Релизы

Версии Apache Wicket
РядОписаниеПоследний релизПоследняя дата выпуска
Текущая стабильная версия: 10.хМиграция с Javax API на Jakarta API. Зависимости обновлены для поддержки Spring Framework 6 и, следовательно, переходят на Java 17 как на требуемую минимальную платформу, и совместимы с Java 21. CGLib заменен на ByteBuddy. [4]10.0.02024-03-11
Текущая стабильная версия: 9.хПереход на Java 11 как на требуемую минимальную платформу, миграция с JUnit 4 на 5, поддержка Java 12 и 13, переработка страниц и хранилища данных и другие улучшения. [5]9.16.02023-11-23
Старая версия, но она все еще поддерживается:8.хПереход на Java 8 как на требуемую минимальную платформу. Поддержка Lambdas, требуемая версия API сервлета переходит на 3.1, поддержка новых типов для обработки дат и другие улучшения. [6] Рекомендуется обновиться до версии 9.x.8.14.02022-01-29
Старая версия, но она все еще поддерживается:7.хПереход на Java 7 как на требуемую минимальную платформу, предотвращение подделки межсайтовых запросов, поддержка встроенных изображений. Релиз содержит почти 300 функций, улучшений и исправлений. [7] Только исправления безопасности, рекомендуется обновиться до версии 9.x.7.18.02021-04-02
Старая версия, больше не поддерживается:6.хПереход на Java 6 как на необходимую минимальную платформу. Интеграция jQuery «из коробки», полный контроль над запросами AJAX, улучшенная регистрация событий в браузерах, поддержка больших наборов данных, управление зависимостями для клиентских библиотек JavaScript, экспериментальная поддержка веб-сокетов. [8]6.30.02018-12-05
Старая версия, больше не поддерживается:1.5.хУлучшения функций Wicket. [9]1.5.162016-08-05
Старая версия, больше не поддерживается:1.4.хПереход на Java 5 как на минимальную требуемую платформу. [10]1.4.232014-02-06
Старая версия, больше не поддерживается:1.3.х1.3.72009-07-30
Старая версия, больше не поддерживается:1.2.х1.2.72008-03-23
Старая версия, больше не поддерживается:1.1.х1.1.1Будет определено
Старая версия, больше не поддерживается:1.0.х1.0.3Будет определено
Легенда:
Старая версия, не поддерживается
Старая версия, все еще поддерживается
Последняя версия
Последняя предварительная версия
Будущий релиз

Смотрите также

Ссылки

  • Черегатти Лонго, Жоау Савиу (26 августа 2013 г.). Мгновенный Apache Wicket 6 (1-е изд.). Пакт Паблишинг . п. 54. ИСБН 978-1783280018.
  • Мадер, Йохен (28 марта 2012 г.). Калитка: KomComponentenbasiert und objektorientiert (1-е изд.). Энтвиклер. п. 220. ИСБН 978-3868020816. Архивировано из оригинала 2010-12-23 . Получено 2009-01-23 .
  • Вайнберг, Игорь (15 мая 2011 г.). Apache Wicket Cookbook (1-е изд.). Packt Publishing . стр. 312. ISBN 978-1-84951-160-5.
  • Дашорст, Мартин; Хиллениус, Eelco (15 сентября 2008 г.). Калитка в действии (1-е изд.). Публикации Мэннинга . п. 392. ИСБН 978-1-932394-98-6.
  • Гурумурти, Картик (7 сентября 2006 г.). Про Калитка (1-е изд.). Апресс . п. 328. ИСБН 1-59059-722-2. Архивировано из оригинала 2010-12-23 . Получено 2009-01-23 .

Примечания

  1. ^ https://wicket.apache.org/news/2024/03/. {{cite web}}: Отсутствует или пусто |title=( помощь )
  2. ^ Дашорст, Мартейн (20 июля 2007 г.). «Wicket выпускники Apache Incubation» . Проверено 7 марта 2008 г.
  3. ^ Карлтон, Дэниел (2007-10-12). "Java Web Development the Wicket Way". DevX. Архивировано из оригинала 10 марта 2008 года . Получено 2008-03-07 .
  4. ^ Анонс Apache Wicket 10: создавайте современные веб-приложения с помощью Java!. wicket.apache.org. Получено 11.03.2024.
  5. ^ Анонс Apache Wicket 9: войдите в современный мир Java!. wicket.apache.org. Получено 05.10.2020.
  6. ^ Анонс Apache Wicket 8: меньше пиши, больше достигай. wicket.apache.org. Получено 22.05.2018.
  7. ^ Выпущен Apache Wicket v7.0. wicket.apache.org. Получено 16.04.2018.
  8. ^ Выпущен Apache Wicket v6.0.0. wicket.apache.org. Получено 05.10.2020.
  9. ^ Apache Wicket - Apache Wicket выпускает Wicket 1.5. Wicket.apache.org. Получено 13.08.2013. Архивировано 6 октября 2014 г. на Wayback Machine
  10. ^ Apache Wicket - Apache Wicket 1.4 выводит безопасность типов на новый уровень Архивировано 25 апреля 2012 г. на Wayback Machine . Wicket.apache.org. Получено 13 августа 2013 г.

Официальный сайт

Retrieved from "https://en.wikipedia.org/w/index.php?title=Apache_Wicket&oldid=1221763515"