Apache Wicket
Šablona:Infobox Software Apache Wicket je framework pro tvorbu webových aplikací v programovacím jazyce Java. Autory tohoto frameworku jsou Jonathan Locke a Miko Matsumura. Framework vznikl v roce 2004 a jeho první verze byla uvolněna o rok později. Slovo Apache se do názvu dostalo v roce 2007, od té doby je tento projekt vyvíjen pod Apache License 2.0 organizací Apache Software Foundation.
Vlastnosti
Wicket patří mezi komponentně řízené frameworky (tzv. Component-based framework), tyto frameworky se obvykle vyznačují vysokou abstrakcí nad HTTP protokolem. To znamená, že programátor nepracuje s HTTP protokolem přímo, což má za důsledek, že se psaní webové aplikace v takovýchto frameworcích blíží psaní desktopových aplikací.
- Wicket se v psaní komponent podobá swingu
- Webová aplikace psaná pod Wicket se skládá pouze s prosté (x)HTML šablony pro prezentační vrstvu a Java kódu pro business logiku
- Propojení prezentační vrstvy s logickou je realizováno v (x)HTML přes atribut wicket:id u elementů, které se budou chovat dynamicky, s odpovídajícím názvem komponenty v Java kódu
- Pluginy pro vývojové prostředí:
- Podpora tlačítka zpět v prohlížeči, která je umožněna pomocí ukládání verzí stránek do mapy stránek pro každé okno prohlížeče uživatelské relace
- Možnost vytváření znovupoužitelných komponent a komponenty Panel zapouzdřující více komponent pro tvorbu znovupoužitelného celku
- Připravené komponenty jako validace uživatelských vstupů, stránkování atd.
- Podpora AJAX s alternativou klasického HTTP dotazu pro prohlížeče nepodporující JavaScript
Jak vytvořit Wicket projekt
K vytvoření projektu je zapotřebí
- vývojové prostředí (Eclipse je doporučován)
- Java SDK
- Maven 2[1]
- Jetty servlet engine[2]
- použít webovou aplikaci[3] k vygenerování příkazu, který vytvoří kostru projektu
- pustit aplikaci ve vývojovém prostředí a přesměrovat prohlížeč na http://localhost:8080/
Aplikace Hello world
Každá aplikace ve Wicket musí mít právě jednu instanci třídy, která rozšiřuje třídu WebApplication.
- HelloWorldApplication.java
import org.apache.wicket.protocol.http.WebApplication;
public class HelloWorldApplication extends WebApplication
{
/**
* Konstruktor.
*/
public HelloWorldApplication()
{
}
/**
* @see org.apache.wicket.Application#getHomePage()
*/
public Class getHomePage()
{
return HelloWorld.class;
}
}
Následuje vytvoření stránky rozšířením třídy WebPage
- HelloWorld.java
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!"));
}
}
Ukázka HTML a propojení pomocí wicket:id atributu s komponentou (podmínkou propojení je shodnost hodnoty wicket:id u HTML tagu a identifikátoru komponenty). V tomto případě dojde k nahrazení textu "Tento text nahradí model komponenty" statickým modelem vytvořené komponenty Label tedy "Hello World!".
- HelloWorld.html
<!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">Tento text nahradí model komponenty</span>
</body>
</html>
Konfigurační XML soubor aplikace
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>Wicket Examples</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.apache.wicket.examples.helloworld.HelloWorldApplication</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>HelloWorldApplication</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
Reference
Literatura
- Wicket: A simplified framework for building and testing dynamic Web pages
- A First Look at the Wicket Framework
- The Server Side discussion on Wicket 1.0
- Tim Boudreau's Blog
- Kickstart Wicket in NetBeans IDE 6.1
- The Server Side discussion
- Javalobby interview with Martijn Dashorst (project chairman)