Апач Калитка
![]() | |
Разработчик(и) | Фонд программного обеспечения Apache |
---|---|
Стабильная версия | 10.0.0 [1] ![]() |
Репозиторий | github |
Написано в | Ява |
Тип | Фреймворк веб-приложений |
Лицензия | Лицензия Апач 2.0 |
Веб-сайт | калитка |
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 (простой старый Java-объект).
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">Message goes here</span>
</body>
</html>
- HelloWorld.java
- Компонент страницы, который будет привязан к шаблону. Он, в свою очередь, связывает дочерний компонент (компонент Label с именем «message»).
package org.wikipedia.wicket;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
public class HelloWorld extends WebPage {
/**
* Constructor
*/
public HelloWorld() {
add(new Label("message", "Hello World!"));
}
}
- HelloWorldApplication.java
- Основной класс приложения, который направляет запросы домашней страницы компоненту страницы HelloWorld.
package org.wikipedia.wicket;
import org.apache.wicket.protocol.http.WebApplication;
public class HelloWorldApplication extends WebApplication {
/**
* Constructor.
*/
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 Example</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.x. | Перенесен с API Javax на API Jakarta. Зависимости обновлены для поддержки Spring Framework 6 и, следовательно, переходят на Java 17 в качестве необходимой минимальной платформы и совместимы с Java 21. CGLib заменен на ByteBuddy. [4] | 10.0.0 | 2024-03-11 |
9.x. | Переход на Java 11 в качестве необходимой минимальной платформы, переход с JUnit 4 на 5, поддержка Java 12 и 13, переработка страницы и хранилища данных и другие улучшения. [5] | 9.16.0 | 2023-11-23 |
8.x. | Переход на Java 8 как необходимую минимальную платформу. Поддержка Lambdas, обязательный переход версии API сервлетов на 3.1, поддержка новых типов для обработки дат и другие улучшения. [6] Рекомендуется обновиться до версии 9.x. | 8.14.0 | 2022-01-29 |
7.x. | Переход на Java 7 в качестве необходимой минимальной платформы, предотвращение подделки межсайтовых запросов, поддержка встроенных изображений. Релиз состоит из почти 300 функций, улучшений и исправлений. [7] Только исправления безопасности, рекомендуется обновиться до версии 9.x. | 7.18.0 | 2021-04-02 |
6.x. | Переход на Java 6 как необходимую минимальную платформу. Готовая интеграция jQuery, полный контроль над запросами AJAX, улучшенная регистрация событий в браузерах, поддержка больших наборов данных, управление зависимостями для клиентских библиотек JavaScript, экспериментальная поддержка веб-сокетов. [8] | 6.30.0 | 2018-12-05 |
1.5.x. | Улучшения функций Wicket. [9] | 1.5.16 | 2016-08-05 |
1.4.x. | Переход на Java 5 как необходимую минимальную платформу. [10] | 1.4.23 | 2014-02-06 |
1.3.x. | 1.3.7 | 2009-07-30 | |
1.2.x. | 1.2.7 | 2008-03-23 | |
1.1.x. | 1.1.1 | подлежит уточнению | |
1.0.x. | 1.0.3 | подлежит уточнению | |
Старая версия Старая версия, все еще поддерживается Последняя версия Последняя предварительная версия |
См. также
[ редактировать ]Ссылки
[ редактировать ]- Черегатти Лонго, Жоау Савио (26 августа 2013 г.). Мгновенный Apache Wicket 6 (1-е изд.). Пакт Паблишинг . п. 54. ИСБН 978-1783280018 .
- Мадер, Йохен (28 марта 2012 г.). Калитка: компонентная и объектно-ориентированная (1-е изд.). Разработчик . п. 220. ИСБН 978-3868020816 . Архивировано из оригинала 23 декабря 2010 г. Проверено 23 января 2009 г.
- Вайнберг, Игорь (15 мая 2011 г.). Поваренная книга Apache Wicket (1-е изд.). Пакт Паблишинг . п. 312. ИСБН 978-1-84951-160-5 .
- Дашорст, Мартейн; Хиллениус, Eelco (15 сентября 2008 г.). Калитка в действии (1-е изд.). Публикации Мэннинга . п. 392. ИСБН 978-1-932394-98-6 .
- Гурумурти, Картик (7 сентября 2006 г.). Про Калитка (1-е изд.). Апресс . п. 328. ИСБН 1-59059-722-2 . Архивировано из оригинала 23 декабря 2010 г. Проверено 23 января 2009 г.
Примечания
[ редактировать ]- ^ https://wicket.apache.org/news/2024/03/ .
{{cite web}}
: Отсутствует или пусто|title=
( помощь ) - ^ Дашорст, Мартейн (20 июля 2007 г.). «Wicket выпускники Apache Incubation» . Проверено 7 марта 2008 г.
- ^ Карлтон, Дэниел (12 октября 2007 г.). «Веб-разработка на Java: путь калитки» . ДевХ. Архивировано из оригинала 10 марта 2008 года . Проверено 7 марта 2008 г.
- ^ Анонс Apache Wicket 10: создавайте современные веб-приложения с помощью Java! . wicket.apache.org. Проверено 11 марта 2024 г.
- ^ Анонс Apache Wicket 9: окунитесь в современный мир Java! . wicket.apache.org. Проверено 5 октября 2020 г.
- ^ Анонс Apache Wicket 8: пишите меньше, достигайте большего . wicket.apache.org. Проверено 22 мая 2018 г.
- ^ Выпущен Apache Wicket v7.0 . wicket.apache.org. Проверено 16 апреля 2018 г.
- ^ Выпущен Apache Wicket v6.0.0 . wicket.apache.org. Проверено 5 октября 2020 г.
- ^ Apache Wicket — Apache Wicket выпускает Wicket 1.5 . Wicket.apache.org. Проверено 13 августа 2013 г. Архивировано 6 октября 2014 г. в Wayback Machine.
- ^ Apache Wicket — Apache Wicket 1.4 выводит типобезопасность на новый уровень. Архивировано 25 апреля 2012 г. на Wayback Machine . Wicket.apache.org. Проверено 13 августа 2013 г.