Einführung in Apache Wicket
Arten von Web Frameworks
- Aktionsorientierte Frameworks: Entwickler ist direkt für die Behandlung von
HTTP Request/Responsezuständig. - Komponentenorientierte Frameworks: Behandlung von
HTTP Request/Responsewird durch Komponenten wie z.B.Link,FormoderButtonabstrahiert.
Aktionsorientierte Frameworks
-
HTTP Request/Response-Verarbeitung wird meist gemäßMVC, Model 2strukturiert: URLs werden aufController-Klassen/Methoden gemappt, die dann Modelldaten beschaffen bzw. Verarbeitungsschritte ausführen und eine Ausgabeseite unter Zuhilfenahme von View-Templates erzeugen. - Leichtgewichtig, sehr einfache Verwendung.
- Direkte Kontrolle durch unmittelbare Nähe zu den Web-Standards wie
HTTP, HTML, JavaScript, CSSetc. - Vertreter:
Servlets / JSP, Spring MVC, Struts, Grails
Komponentenorientierte Frameworks
- Komponentenorientierte Frameworks stellen wiederverwendbare Web-Komponenten bereit, die die Behandlung von Web-Anfragen abstrahieren und vereinfachen.
- Web-Technologien werden mit einem objektorientierten Komponentenmodell zugänglich gemacht.
- Protokollspezifische Unannehmlichkeiten werden versteckt (z.B. abweichendes Verhalten verschiedener Browser).
- Vertreter:
Tapestry, Google Web Toolkit, Java Server Faces, Apache Wicket
Struktur von Wicket
-
Wicket verfolgt das Ziel, das zustandslose HTTP-Protokoll hinter einem objektorientierten Java-Programmiermodell zu verstecken.
-
Konsequente Orientierung an Java-Konzepten, wenig zusätzliche Konfiguration in XML-Dateien.
-
Strukturierung mittels
Model-View-Controller-basierten Komponenten:
Wicket Komponenten
- Wicket abstrahiert den Umgang mit Web-Technologien mit einem serverseitigen Komponentenmodell, orientiert sich dabei jedoch stark an den Paradigmen der Web-Standards.
- Anwendungszustand wird über das Komponentenmodell abgebildet, Aktionen lösen serverseitig Ereignisse aus.
- Anwendungsspezifische Komponenten können sehr einfach erstellt und wiederverwendet werden (z.B. eigenes
SearchPanel). - Elegantes Handling von Web-Gegebenheiten wie Browser-Zurück oder Datei-Up-/Downloads.
- Komponenten unterstützen Ajax-Features (z.B. partielle Aktualisierung von Komponenten, Sofort-Validierung von Formularen).
Wicket Views
- Unintrusives Markup:
XHTMLwird um Tags in einem separaten Wicket-XML-Namespace erweitert (Seiten sind validesXHTML). - Markup ist kompatibel mit HTML-Editoren und unterstützt so die reibungslose Zusammenarbeit zwischen Web-Designern und Web-Entwicklern.
- Anzeige und Logik werden strikt getrennt.
- Seiten können mit ihren Views vererbt werden (Vorlagen für Seiten, Seitenkopf/-fuß).
Wicket Modelle
- Komponenten können an Modellobjekte bzw. Eigenschaften von Modellobjekten gebunden werden.
- Lebenszyklus der Objekte wird verwaltet, z.B. Neu-Laden von Objekten bei jedem Request.
- Einfaches Erstellen und Binden von Formularen für Modellobjekte, komfortable Unterstützung von Konvertierung und Validierung.
Apache Maven im Schnelldurchgang
- Maven ist ein Build-Tool für Java-Projekte.
- Maven gibt eine Projektstruktur vor und stellt darauf aufbauend einen fertigen Buildprozess bereit.
- Maven verwaltet die Abhängigkeiten der Projekte und stellt benötigte JAR-Bibliotheken bereit.
Maven Projektstruktur
-
src/main/javafür Java-Quellen des Projektes. -
src/main/resourcesfür Ressourcendateien des Projektes. -
src/main/webappfür Web-Ressourcen/Konfiguration (WEB-INF). -
src/test/javafür Java-Quellen der Testklassen. -
targetenthält Build-Ergebnisse. -
pom.xmlist die Projektkonfiguration.
Projektkonfiguration pom.xml
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>de.ralfebert</groupId>
<artifactId>someproject</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>Some project</name>
<description>Some maven project</description>
<dependencies>
<dependency>
<groupId>org.apache.wicket</groupId>
<artifactId>wicket</artifactId>
<version>1.4.1</version>
</dependency>
<!-- ... -->
</dependencies>
<!-- ... -->
</project>
Maven Archetypen
-
Archetypen sind Vorlagen für Maven-Projekte.
-
Wicket stellt unter http://wicket.apache.org/start/quickstart.html einen Assistenten für den Wicket-Archetypen bereit:

Wicket-Projekte in Eclipse
-
Projekteinrichtung:
- Mittels
m2eclipse(Maven-Plug-ins für die Eclipse IDE). - Erzeugen der Projektkonfiguration mit dem Eclipse-Plug-in für Maven:
mvn eclipse:eclipse.
- Mittels
-
Server-Deployment zum Testen:
- Starten eines Applikationsservers mit den Eclipse
Web Tools Platform (WTP)-Plug-ins (enthalten inEclipse IDE for Java EE Developers). - Starten eines eingebetteten Jetty-Servers.
- Starten eines Applikationsservers mit den Eclipse
Projekteinrichtung mit m2eclipse
-
Verwenden Sie Eclipse IDE for Java EE Developers.
-
Installieren Sie die
m2eclipse-Plug-ins gemäß m2eclipse.sonatype.org:Maven Integration for EclipseMaven Integration for WTP-
Maven POM (XML) Editor(optional, empfohlen)
-
Importieren Sie das Maven-Projekt mittels
File > Import > Maven projects.
Deployment mit Eclipse WTP
- Zeigen Sie mittels
Window > Show View > Serversdie Server-Liste an und legen Sie einen neuen Server an. - Geben Sie den Pfad zum Tomcat-Server an und fügen Sie das Projekt hinzu (dazu wird für Maven-Projekte
Maven Integration for WTPbenötigt). - Starten Sie den Server aus der Serverliste heraus.
Manuelle Einrichtung und Start des Projektes
-
Wechseln Sie in der Konsole in den Projektordner und erstellen Sie eine neue Eclipse-Konfiguration für das Projekt:
mvn eclipse:eclipse -DdownloadSources=true
-
Importieren Sie das Projekt mit
File > Import > General > Existing Projects into Workspace. -
Konfigurieren Sie unter
Preferences > Java > Build Path > Classpath Variableseine UmgebungsvariableM2_REPO, die auf das Maven-Repository zeigt (~/.m2/repositorybzw.C:\Dokumente und Einstellungen\Benutzername\.m2\Repository). -
Der QuickStart-Archetyp hat eine Klasse
Startuntersrc/test/mainangelegt. Diese startet einen eingebetteten Jetty-Server.
Wicket Community
- Mailinglisten-Archive: http://mail-archives.apache.org/mod_mbox/wicket-users/
- IRC:
##wicket@irc.freenode.net - Bug tracker: https://issues.apache.org/jira/browse/WICKET
Literaturempfehlung: Wicket in Action
Weitere Informationen I
- Wicket Examples: http://www.wicket-library.com/wicket-examples/
- Wicket Component Reference: http://www.wicket-library.com/wicket-examples/compref/
- Maven Archetyp Wicket QuickStart: http://wicket.apache.org/quickstart.html
- Why Wicket? http://wicket.apache.org/meet/introduction.html
- Wicket Refcard: http://refcardz.dzone.com/refcardz/getting-started-apache-wicket?oid=hom11873
- Java Magazin 10.2009 “Endlich komponentenbasierte Web-Apps” (S. 34)
- Introducing Apache Wicket: http://www.theserverside.com/tt/articles/article.tss?l=IntroducingApacheWicket
Weitere Informationen II
- 5 Days of Wicket! http://www.mysticcoders.com/blog/2009/03/09/5-days-of-wicket/
- Web development with Wicket: http://www.javaworld.com/javaworld/jw-06-2008/jw-06-wicket1.html
- Running Maven-based Wicket projects in Eclipse: http://www.ralfebert.de/blog/wicket/wicket_eclipse_setup/