Apache Wicket
Apache Wicket
Apache Wicket Logo.png
Entwickler Apache Software Foundation
Aktuelle Version 1.5.2
(20. Oktober 2011)
Betriebssystem Cross-platform
Programmier­sprache Java
Kategorie Webframework
Lizenz Apache-Lizenz
wicket.apache.org/

Apache Wicket ist ein komponentenbasiertes Web-Framework für die Programmiersprache Java. Es ist ein Open-Source-Projekt und ist heute unter Version 2.0 der Apache-Lizenz verfügbar.

Inhaltsverzeichnis

Ziel

Wicket verfolgt das Ziel, eine komfortable, leistungsfähige und flexible Möglichkeit zur Erstellung von Webanwendungen für erfahrene Java-Programmierer bereitzustellen, wodurch es ermöglicht werden soll, komplexen Anforderungen gerecht zu werden und eine hohe Produktivität zu erlangen. Durch den komponentenorientierten Ansatz von Wicket ist es sehr leicht möglich, eigene wiederverwendbare Komponenten zu entwickeln.

Funktionalität

Eigenschaften von Wicket sind:

  • Trennung von Logik (Java) und Darstellung (HTML und CSS).
  • Jede Komponente kann ihre Daten in ein zugehöriges Datenmodell speichern.
  • Automatische Zustandsverwaltung.
  • Bis auf web.xml sind keine XML-Konfigurationsdateien nötig. Für die Arbeit mit Wicket sind ausschließlich Java- und (X)HTML-Kenntnisse erforderlich
  • Die Übernahme der Benutzereingaben erfolgt mit Java. Dabei wird durch Java zuerst geprüft, ob eine Eingabe erforderlich ist, anschließend werden die Daten in den entsprechenden Datentyp umgewandelt. Abschließend werden die Daten auf Zulässigkeit (Validierung) geprüft. Diese drei Schritte können komponentenweise oder gemeinsam für ein Web-Formular über ein Fehlerbehandlungssystem abgefangen werden. Werden alle Schritte fehlerfrei durchlaufen, so werden die Daten im Datenmodell abgelegt.
  • AJAX ist ohne JavaScript-Kenntnisse möglich. Dafür gibt es einzelne Klassen, die Ajax-Funktionalität bereitstellen.
    • Allen Komponenten kann (auch nachträglich) Ajax-Funktionalität über sogenannte Behaviors hinzugefügt werden. So gibt es unter anderem die Klasse AjaxEventBehavior, zum Reagieren auf ein bestimmtes JavaScript-Ereignis oder die Klasse AbstractSelfUpdatingTimerBehavior, zum automatischen Aktualisieren einzelner Komponenten in bestimmten Zeitintervallen.
  • mit sogenannten Panels kann man Teile einer Seite ändern oder austauschen, bzw. die Seite aus verschiedenen Komponenten aufbauen.
  • es ist sehr leicht möglich, wiederverwendbare Komponenten zu entwickeln und diese ggf. mit AJAX-Funktionalität anzureichern.
  • alle erforderlichen Dateien einer Komponente (Java- und HTML-Datei plus ggf. Icon-, CSS- oder JavaScript-Dateien) können zur besseren Wiederverwendbarkeit in eine jar-Datei gepackt werden.
  • sogenannte Ressourcen ermöglichen es, dynamisch generierte Daten einzubinden (z. B. PDF-Daten) oder auf statische Daten (JavaScript-/CSS-Dateien) zuzugreifen.
  • der Aufbau einer URL kann über URLCodingStrategies bestimmt werden.
  • leichte Integrierbarkeit von externen JavaScript-Bibliotheken.
  • schrittweise Migration von HTML-Seiten nach Wicket ist möglich.

Konzeptionell ist Wicket am ehesten mit Apache Tapestry vergleichbar, konkurriert aber in erster Linie mit JavaServer Faces und Google Web Toolkit.

Geschichte

Die Architektur von Wicket wurde 2004 von Jonathan Locke und Miko Matsumura entworfen, und war bis zur Version 1.2 auf sourceforge.org verfügbar. Später wurde das Framework dann unter der Apache Lizenz als OpenSource-Projekt verfügbar. Eine Gruppe von Programmierern der niederländischen Firma Topicus, die von Eelco Hillenius, Martijn Dashorst und Johan Compagner geleitet wurden, bilden neben einigen anderen bis heute das Kernteam. Wicket ist als Open-Source-Projekt unter der Apache Lizenz, Version 2.0 verfügbar.

Seit der Version 1.4 setzt Wicket zwingend JDK 1.5 oder höher voraus. Es werden dadurch Generics durchgehend unterstützt.

Beispiel

Ein einfaches Beispiel besteht aus vier Dateien:

  • eine Application-Klasse, die als erstes aufgerufen wird
  • eine Java-Datei, die die Seite darstellt
  • eine zur Java-Datei zugehörige HTML-Datei
  • und die Datei web.xml des Tomcat-Servers für die Konfiguration, welche Klasse die Applications-Klasse ist.

Application-Klasse

Die Application-Klasse dient als zentraler Einstiegspunkt für die Webapplikation. Hier können verschiedene Einstellungen vorgenommen werden, die für die ganze Applikation gültig sind. Unter anderem wird hier die Startseite festgelegt:

package com.myapp.wicket;
 
import org.apache.wicket.protocol.http.WebApplication;
 
public class Application extends WebApplication {
    public Class getHomePage() {
        return OnePage.class;       
    }
}

Web-Page (Java)

Jede Seite (Page) wird durch eine Java-Klasse und einer zugehörigen gleichnamigen HTML-Datei repräsentiert. Alle Komponenten der Klasse werden hier definiert. Alle Komponenten, die in der HTML-Datei eine wicket:id haben, werden als Komponenten hinzugefügt.

OnePage.java:

package com.myapp.wicket;
 
import org.apache.wicket.ajax.AjaxEventBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.markup.html.WebPage;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.form.Button;
import org.apache.wicket.markup.html.form.Form;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.Model;
 
public class OnePage extends WebPage {
 
    public OnePage() {
        final Label label = new Label("message", new Model(""));
        label.setOutputMarkupId(true);
        Form form = new Form("form");
        final TextField field = new TextField("field", new Model(""));
        field.setOutputMarkupId(true);
        form.add(field);
        final Button but1 = new Button("button1") {
 
            @Override
            public void onSubmit() {
                String value = (String) field.getModelObject();
                label.setModelObject("Normal-Request: " + value);
                field.setModelObject("");
                // setResponsePage(AnotherPage.class);
            }
        };
        but1.setOutputMarkupId(true);
        form.add(but1);
        final Button but2 = new Button("button2", new Model("Button deaktivieren ..."));
        but2.add(new AjaxEventBehavior("onclick") {
 
            @Override
            protected void onEvent(AjaxRequestTarget target) {
                but1.setEnabled(!but1.isEnabled());
                if (but1.isEnabled()) {
                    but2.setModelObject("Button deaktivieren ...");
                } else {
                    but2.setModelObject("Button aktivieren ...");
                }
                target.addComponent(but2);
                target.addComponent(but1);
            }
        });
        form.add(but2);
        add(form);
        add(label);
    }
}

Web-Page (HTML)

Für jede Komponente, die dynamisch verändert werden soll, muss ein Attribut wicket:id angelegt werden.

OnePage.html:

<html>   
    <head>
        <title>Echo Application</title>
    </head>
    <body>
        <h1>Echo example</h1>
        <form wicket:id="form">
            <input wicket:id="field" type="text" />
            <input wicket:id="button1" type="submit" value="Button" />
            <input wicket:id="button2" type="button" value="Button deaktivieren..." />
        </form>
        <p wicket:id="message">Fun Fun Fun</p>
    </body>    
</html>

web.xml

Die Application wird lediglich über die folgende web.xml - Datei in den Servlet-Container als Web-Applikation eingebunden:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
 
    <filter>
        <filter-name>WicketApplication</filter-name>
        <filter-class>org.apache.wicket.protocol.http.WicketFilter</filter-class>
        <init-param>
            <param-name>applicationClassName</param-name>
            <param-value>com.myapp.wicket.Application</param-value>
        </init-param>        
    </filter>
    <filter-mapping>
        <filter-name>WicketApplication</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>    
</web-app>

Literatur

Weblinks


Wikimedia Foundation.

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Apache Wicket — Développeur Apache Software Foundation Dernière version 1.5.2 (20 octobre …   Wikipédia en Français

  • Apache Wicket — Infobox Software name = Apache Wicket caption = developer = Apache Software Foundation latest release version = 1.3.4 latest release date = release date|2008|06|27 latest preview version = 1.4 m3 latest preview date = release date|2008|07|14… …   Wikipedia

  • Wicket (Framework) — Wicket ist ein komponentenbasiertes Web Framework für die Programmiersprache Java. Es ist ein Open Source Projekt und ist heute unter der Apache Lizenz, Version 2.0 verfügbar. Inhaltsverzeichnis 1 Funktionalität 2 Geschichte 3 Beispiel 3.1 …   Deutsch Wikipedia

  • Wicket framework — Apache Wicket Тип веб фреймворк Разработчик Apache Software Foundation Написана на Java Операционная система …   Википедия

  • Apache Click — Developer(s) Apache Software Foundation Stable release 2.3.0 / March 27, 2011; 7 months ago (2011 03 27) …   Wikipedia

  • Wicket (Begriffsklärung) — Wicket steht für: Wicket, ein Begriff in der Sportart Cricket Apache Wicket, ein Web Framework für die Programmiersprache Java Diese Seite ist eine Begriffsklärung zur Unterscheidung mehrerer mit demselben Wort bezeichneter Begriffe …   Deutsch Wikipedia

  • Wicket — puede referirse a: Apache Wicket, un framework Java para desarrollo de aplicaciones web. Wicket W. Warrick, un personaje ficticio de raza ewok en la saga cinematográfica la Guerra de las Galaxias. Esta página de desambiguación cataloga artículos… …   Wikipedia Español

  • Wicket — Стиль этой статьи неэнциклопедичен или нарушает нормы русского языка. Статью следует исправить согласно стилистическим правилам Википедии …   Википедия

  • Apache-Lizenz — Die Apache Lizenz ist die Freie Software Lizenz der Apache Software Foundation. Die aktuelle Version 2.0 wurde im Januar 2004 veröffentlicht. Sie wurde gegenüber der vorherigen Version 1.1 stark erweitert. Aufgrund ihres Umfangs wird in den… …   Deutsch Wikipedia

  • Wicket (disambiguation) — A wicket is a term used in the sport of cricket with several related meanings.It also has some non cricket meanings:* Sticky Wicket , a M*A*S*H episode *Wicket (retail); in banking, the place where a customer performs a transaction with a bank… …   Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”